Hadoop、HDFS、Yarn工作机制及流程
Hadoop
Hadoop的优势Hadoop的组成Hadoop重点组件HDFS 架构概述Yarn架构Yarn工作机制资源调度器 FIFO资源调度器 容量调度器资源调度器 公平调度器BlockHDFS的写数据流程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:存储文件的元数据,如文件名,文件目录结构,文件属性,以及每个文件的块列表和块所在的DataNode 2、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中的文件块即为Block Block块的大小由传输时间与磁盘的传输速率有关 Block = 传输时间/0.01*传输速率 如果传入时间为10ms,传输速率为100MB/S,则Block块大小设置为10ms/0.01*100=100MBHDFS的写数据流程
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重新命名为fsimageDataNode工作机制
1、DataNode启动后NameNode进行注册 2、NameNode返回注册成功 3、DataNode以后每周期(1小时)上报所有块信息 4、DataNode心跳程序,每3秒一次,返回结果带有NameNode给DataNode的命令 5、如果超过10分钟没有收到DataNode的心跳,则认为该节点不可用数据完整性
DataNode对数据进行校验的方式是使用 CRC校验位 原始数据封装 产生一个CRC校验位 对接受到的数据进行校验,产生一个CRC校验位 然后和传输过来的CRC校验位比较是否一致



