Hadoop
Hadoop、HDFS、Yarn工作机制及流程
- Hadoop
- Hadoop的优势
- Hadoop的组成
- Hadoop重点组件
- HDFS 架构概述
- Yarn架构
- Yarn工作机制
- 资源调度器 FIFO
- 资源调度器 容量调度器
- 资源调度器 公平调度器
- Block
- HDFS的写数据流程
- HDFS的读数据流程
- NameNode工作机制
- DataNode工作机制
- 数据完整性
Hadoop的优势
1、高可靠性:Hadoop底层维护多个数据副本,所以即使Hadoop某个计算元素或者存储出现故障,也不会导致数据的丢失
2、高扩展性:在集群间分配任务数据,可方便的扩展数以千计的节点
3、高效性:在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理速度
4、高容错性:能够自动将失败的任务重新分配
Hadoop的组成
1、HDFS 分布式文件储存
2、Yarn 资源调度
3、MapReduce 计算引擎
4、Common 辅助工具
Hadoop重点组件
1、HDFS:Hadoop的分布式文件存储系统
2、MapReduce:Hadoop的分布式程序运算框架
3、Hive:基于Hadoop的类SQL数据仓库工具
4、Hbase:基于Hadoop的列示分布式NoSql数据库
5、Zookeeper:分布式协调组件
6、Mahout:基于MapReduce/Flink/Spark等分布式运算框架的机器学习算法库
7、Oozie/Azkaban:工作流调度引擎
8、Sqoop:数据迁入迁出工具
9、Flume:日志采集工具
HDFS 架构概述
1、NameNode:存储文件的元数据,如文件名,文件目录结构,文件属性,以及每个文件的块列表和块所在的DataNode2、DataNode:在本地文件系统存储文件块数据,以及块数的校验和3、Secondary NameNode:用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照
Yarn架构
1、ResourceManger:处理客户端请求、启动/监控ApplicationMaster、监控NodeManager、资源分配于调度
2、NodeManager:单个节点上的资源管理、处理来自ResourceManager的命令、处理来自ApplicationMatser的命令
3、ApplicationMaster:数据切分、应用程序申请资源,并分配给内部任务、任务监控于容错
4、Container:对任务运行环境的抽象,封装了CPU、内存等多维度资源以及环境变量、启动命令等任务运行相关的信息
Yarn工作机制
1、MR程序提交到客户端所在的节点
2、YarnRunner向ResourceManager申请一个Application
3、RM将应用程序的资源路径返回给YarnRunner
4、该程序将运行所需资源提交到HDFS上
5、程序资源提交完毕后,申请运行mrAppMaster
6、RM将用户的请求初始化成一个Task
7、其中一个NodeManager领取到Task任务
8、该NodeManager创建容器Container,并产生MRAppmaster
9、Container从HDFS上拷贝资源到本地
10、MRAppmaster向RM申请运行MapTask资源
11、RM将运行MapTask任务分配给另外两个NodeManager,另两个NodeManager分别领取任务并创建容器
12、MR向两个接受到任务的NodeManager发送程序启动脚本,这两个NodeManager分别启动MapTask,MapTask对数据分区排序
13、MrAppMaster等待所有MapTask运行完毕后,向RM申请容器,运行ReduceTask
14、ReduceTask向MapTask获取相应分区的数据
15、程序运行完毕后,MR会向RM申请注销自己
资源调度器 FIFO
按照到达时间排序,先到先服务
资源调度器 容量调度器
1、支持多个队列,每个队列可配置一定的资源量,每个队列采用FIFO调度策略
2、为了防止同一个用户的作业独占队列的资源,该调度器会对同一用户提交的作业所占资源量进行限定
3、首先,计算每个队列中正在运行的任务数于其应该分得的计算资源之间的比值,选择一个该比值最小的队列
4、其次,按照作业优先级和提交时间顺序,同时考虑用户资源量限制和内存限制对队列内任务排序
5、三个队列同时按照任务的先后顺序依次执行。
资源调度器 公平调度器
1、支持多个队列多用户,每个队列中的资源量可以分配,同一队列中的作业公平共享队列中所有资源
2、每个队列中的job按照优先级分配资源,优先级越高分配的资源越多,但是每个job都会分配到资源以确保公平
3、在资源优先的情况下,每个job理想情况下获得的计算资源与实际获得的计算资源存在一种差距,这个差距叫做缺额
4、在同一个队列中,job的资源缺额越大,越先获的资源优先执行
5、作业时按照缺额的高低来先后执行的,而且时同时作业
Block
HDFS中的文件块即为BlockBlock块的大小由传输时间与磁盘的传输速率有关Block = 传输时间/0.01*传输速率如果传入时间为10ms,传输速率为100MB/S,则Block块大小设置为10ms/0.01*100=100MB
HDFS的写数据流程
1、客户端向NameNode请求上传文件
2、NameNode响应可以上传文件
3、客户端请求上传第一个block,请求返回DataNode节点
4、NameNode返回DN1,DN2,DN3节点,表示采用这三个节点存储数据
5、客户端依次向DataNode请求建立block传输通道
6、DataNode依次应答通道建立成功
7、客户端向DataNode传输数据packet,直至传输完成
8、通知NameNode传输数据完成
HDFS的读数据流程
1、客户端向NameNode请求下载文件
2、NameNode返回目标文件的元数据
3、客户端依次向DataNode请求读取数据block
4、DataNode依次向客户端传输数据
NameNode工作机制
1、NameNode加载编辑日志和镜像文件到内存
2、客户端对元数据进行增删改查请求
3、NameNode记录操作日志、更新滚动日志
4、Secondary NameNode向NameNode请求是否需要checkpoint
5、Secondary NameNode请求执行checkpoint
6、Secondary NameNode将滚动操作日志和镜像文件拷贝到下来
7、Secondary NameNode内存中进行合并
8、Secondary NameNode生成新的fsimage.checkpoint
9、将fsimage.checkpoint拷贝到NameNode
10、NameNode将fsimage.checkpoint重新命名为fsimage
DataNode工作机制
1、DataNode启动后NameNode进行注册
2、NameNode返回注册成功
3、DataNode以后每周期(1小时)上报所有块信息
4、DataNode心跳程序,每3秒一次,返回结果带有NameNode给DataNode的命令
5、如果超过10分钟没有收到DataNode的心跳,则认为该节点不可用
数据完整性
DataNode对数据进行校验的方式是使用 CRC校验位原始数据封装 产生一个CRC校验位对接受到的数据进行校验,产生一个CRC校验位然后和传输过来的CRC校验位比较是否一致
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!