大数据概述
大数据原理概述
大数据发展历程
2002 年-2011 年
2012 年-2020 年
大数据框架
大数据应用
搜索引擎时代
数据仓库时代
数据挖掘时代
机器学习时代
大数据应用领域
医学影像智能识别
病历大数据智能诊疗
AI 外语老师
智能解题
舆情监控与分析
大数据风控
新零售
无人驾驶
分布式文件系统 HDFS
HDFS 系统架构
HDFS 如何写文件?
HDFS 如何读文件?
HDFS 节点失效处理
DataNode 磁盘故障处理
坏掉的磁盘上的数据尽快通知 NameNode, NameNode 查找数据在其他 DataNode 副本,并通知他们复制,保证三个副本。
DataNode 机器故障处理
Datanode 每 3 秒钟向 NameNode 发送心跳,如果 10 分钟 DataNode 没有向 NameNode 发送心跳,则 NameNode 认为该 DataNode 已经 dead, NameNode 将取 出该 DataNode 上对应的 block,对其进行复制。
NameNode 故障处理
持久化元数据操作:
操作日志
定期生成映像文件 Fsimage
失效是通过 Fsimage 和操作日志进行恢复
通过 zookeeper 选举主服务器。
Client 故障处理
文件创建以后,不保证在 NameNode 立即可见,即使文件刷新并存储,文件长度依 然可能为 0;
当写入数据超过一个块后,新的 reader 可以看见第一个块,reader 不能看见当前正 在写入的块;
HDFS 提供 sync() 方法强制缓存与数据节点同步,sync() 调用成功后,当前写入数据 对所有 reader 可见且一致;
调用 sync() 会导致额外的开销.
大数据计算框架 MapReduce
MapReduce 特性
自动实现分布式并行计算
容错
提供状态监控工具
模型抽象简洁,程序员易用
处理过程
内部处理过程(map,reduce):
shuffle:
相同的 key 放到同一个 reduce 里
计算框架:
JobTracker , TaskTracker 组成。
适合 MapReduce 的计算类型
TopK
K-means
Bayes
SQL
不适合 MapReduce 的计算类型
Fibonacci
InputFormat:
验证作业的输入的正确性 将输入文件切分成逻辑的 InputSplits,一个 InputSplit 将被分配给一个单独的 Mapper task 提供 RecordReader 的实现,这个 RecordReader 会从 InputSplit 中正确读出一条一条的 K-V对供 Mapper 使用。
FileInputFormat
得到分片的最小值 minSize 和最大值 maxSize,可以通过设置 mapred.min.split.size 和 mapred.max.split.size 来设置;
OutputFormat
OutputFormt 接口决定了在哪里以及怎样持久化作业结果。
Partitioner
Mapreduce 通过 Partitioner 对 Key 进行分区,进而把数据按我们自己的需求来分发。
主要调度方法
单队列调度
容量调度
公平调度
JobTracker 内部实现
作业控制
作业抽象成三层:作业监控层(JIP),任务控制层(TIP),任务执行层。
任务可能会被尝试多次执行,每个任务实例被称作 Task Attempt(TA)
TA 成功,TIP 会标注该任务成功,所有 TIP 成功,JIP 成功
资源管理
根据 TaskTracker 状态信息进行任务分配
相关容错处理
JobTracker 容错:JobTracker 失败,那么未完成 Job 失败;
TaskTracker 容错:TaskTracker 10 分钟未汇报心跳,则将其从集群移除;灰名单,黑名单,如果性能表现太差,被 JobTacker 暂停调度
Task 容错:允许部分 Task 失败, Task 由 TIP 监控,失败任务多次尝试,慢任务启动备份任务
Record 容错:跳过导致 Task 失败的坏记录
大数据集权资源管理 Yarn
将 Yarn 从 MapReduce 中分离出来,成为一个独立的资源调度框架
资源管理器又包括两个主要组件:调度器和应用程序管理器
Yarn 的工作流程(MapReduce 为例)
向 Yarn 提交应用程序,包括 MapReduce ApplicationMaster、我们的 MapReduce 程序,以及 MapReduce Application 启动命令。
ResourceManager 进程和 NodeManager 进程通信,根据集群资源,为用户程序分 配第一个容器,并将 MapReduce ApplicationMaster 分发到这个容器上面,并在容 器里面启动 MapReduce ApplicationMaster。
MapReduce ApplicationMaster 启动后立即向 ResourceManager 进程注册,并为自 己的应用程序申请容器资源。
MapReduce ApplicationMaster 申请到需要的容器后,立即和相应的 NodeManager 进程通信,将用户 MapReduce 程序分发到 NodeManager 进程所在服务器,并在容 器中运行,运行的就是 Map 或者 Reduce 任务。
Map 或者 Reduce 任务在运行期和 MapReduce ApplicationMaster 通信,汇报自己 的运行状态,如果运行结束,MapReduce ApplicationMaster 向 ResourceManager 进程注销并释放所有的容器资源。
资源管理器 HA
大数据仓库 Hive
Hive 的架构
Hive 执行流程
操作符(Operator)是 Hive 的最小处理单元
每个操作符处理代表 HDFS 操作或 MR 作业
编译器把 Hive SQL 转换成一组操作符
Hive 编译器
Hive 提前将开发 Operator 操作类, 将 Operator 组合成有向无环图,提交 Hadoop 完成执行。
Hive Metastore
Hive 将 Metastore 存放到另外数据库里如 mysql
Hive QL – Join
由于后续要进行两张表的关联, value 中需要存放表的信息。
参考及引用
架构师训练营作业-李智慧老师相关讲义
图片 from https://www.slideshare.net/st287/hadoop-and-big-data-52057337
时代杂志原文 https://open.blogs.nytimes.com/2007/11/01/self-service-prorated-super-computing-fun/
相关视频 https://vimeo.com/7118833
https://slashdash.wordpress.com/2018/01/12/big-data-what-is-hadoop/
https://data-flair.training/blogs/hadoop-history/
https://hadoop.apache.org/old/
Photo by Marek Piwnicki on Unsplash
评论