大数据基础架构Hadoop( 四 )


2)Map阶段数据处理 。一个程序有一个或多个Map任务 , 具体由默认存储或分片个数决定 。在Map阶段 , 数据将以键值对的形式被读入 , 键的值一般为每行首字符与文件最初始位置的偏移量 , 即中间所隔字符个数 , 值为该行的数据记录 。根据具体的需求对键值对进行处理 , 映射成新的键值对并传输至Reduce端 。
3)Shuffle&Sort阶段数据整合 。此阶段是指从Map端输出开始 , 传输至Reduce端之前的过程 。该过程会对同一个Map中输出的键相同的数据先进行整合 , 减少传输的数据量 , 并在整合后将数据按照键进行排序 。
4)Reduce阶段数据处理 。Reduce任务可以有一个或多个 , 具体由Map阶段设置的数据分区确定 , 一个分区数据将被一个Reduce处理 。针对每一个Reduce任务 , Reduce会接收到不同Map任务传来的数据 , 并且每个Map传来的数据都是有序的 。一个Reduce任务中的每一次处理均是针对所有键相同的数据 , 对数据进行规约 , 形成新的键值对 。
5)数据输出 。Reduce阶段处理完数据后即可将数据文件输出至HDFS , 输出的文件个数和Reduce的个数一致 。如果只有一个Reduce , 那么输出只有一个数据文件 , 默认命名为“part-r-00000” 。
5Hadoop资源管理器—YARN
YARN是Hadoop的资源管理器 , 可以提高资源在集群的利用率 , 加快执行速率 。早期的Hadoop 1.0版本的任务执行效率低下 , Hadoop 2.x版本开始引入了YARN框架 。YARN框架为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处 。
Hadoop YARN提供了一个更加通用的资源管理和分布式应用框架 。该框架使得用户可以根据自己的需求实现定制化的数据处理应用 , 既可以支持MapReduce计算 , 也可以很方便地管理如Hive、HBase、Pig、Spark/Shark等组件的应用程序 。YARN的架构设计使得各类型的应用程序可以运行在Hadoop上 , 并通过YARN从系统层面进行统一管理 。拥有了YARN框架 , 各种应用可以互不干扰地运行在同一个Hadoop系统中 , 以共享整个集群资源 。
YARN框架总体上仍然是主/从结构 , 在整个资源管理框架中 , ResourceManager为Master , NodeManager为Slave , ResourceManager负责对各个NodeManager上的资源进行统一管理和调度 。用户提交一个应用程序时 , 需要提供一个用于跟踪和管理这个程序的ApplicationMaster , ApplicationMaster负责向ResourceManager申请资源 , 并要求NodeManger启动可以占用一定资源的任务 。由于不同的ApplicationMaster被分布到不同的节点上 , 所以它们之间不会相互影响 。
YARN的基本组成框架如图4所示 。

大数据基础架构Hadoop

文章插图
图4 YARN的基本组成框架
YARN主要由ResourceManager、Node-Manager、ApplicationMaster和Client App-lication这4个部分构成 , 具体说明如下 。
1)ResourceManager(RM) 。一个全局的资源管理器 , 负责整个系统的资源管理和分配 。ResourceManager主要由两个组件构成 , 即调度器(Scheduler)和应用程序管理器(Applications Manager , ASM) 。
调度器负责将系统中的资源分配给各个正在运行的应用程序 , 不从事任何与具体应用程序相关的工作 , 如监控或跟踪应用的执行状态等 , 也不负责重新启动因应用执行失败或硬件故障而产生的失败任务 。
应用程序管理器负责处理客户端提交的Job以及协商第一个Container(包装资源的对象)以供ApplicationMaster运行 , 并且在ApplicationMaster失败时将其重新启动 。其中 , Container是YARN中的资源抽象 , 它封装了某个节点上的多维度资源 , 如内存、CPU、磁盘、网络等 。当ApplicationMaster向RM申请资源时 , RM为ApplicationMaster返回的资源就是使用Container表示的 。YARN会为每个任务分配一个Container , 且该任务只能使用该Container中描述的资源 。
【大数据基础架构Hadoop】2)NodeManager(NM) 。每个节点上的资源和任务管理器 。一方面 , NM会定时地向RM汇报本节点上的资源使用情况和各个Container的运行状态;另一方面 , NM会接收并处理来自ApplicationMaster的Container启动或停止等各种请求 。


推荐阅读