`
bit1129
  • 浏览: 1069720 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【Hadoop六】基于Yarn的Hadoop Map Reduce工作流程

 
阅读更多

1. 全分布式Hadoop启动和停止时,进程的启停顺序

[hadoop@hadoop sbin]$ ./start-all.sh
This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh
Starting namenodes on [hadoop.master]
hadoop.master: starting namenode, logging to /home/hadoop/software/hadoop-2.5.2/logs/hadoop-hadoop-namenode-hadoop.master.out
hadoop.slave1: starting datanode, logging to /home/hadoop/software/hadoop-2.5.2/logs/hadoop-hadoop-datanode-hadoop.slave1.out
hadoop.slave2: starting datanode, logging to /home/hadoop/software/hadoop-2.5.2/logs/hadoop-hadoop-datanode-hadoop.slave2.out
Starting secondary namenodes [hadoop.master]
hadoop.master: starting secondarynamenode, logging to /home/hadoop/software/hadoop-2.5.2/logs/hadoop-hadoop-secondarynamenode-hadoop.master.out
starting yarn daemons
starting resourcemanager, logging to /home/hadoop/software/hadoop-2.5.2/logs/yarn-hadoop-resourcemanager-hadoop.master.out
hadoop.slave2: starting nodemanager, logging to /home/hadoop/software/hadoop-2.5.2/logs/yarn-hadoop-nodemanager-hadoop.slave2.out
hadoop.slave1: starting nodemanager, logging to /home/hadoop/software/hadoop-2.5.2/logs/yarn-hadoop-nodemanager-hadoop.slave1.out
[hadoop@hadoop sbin]$ jps
1974 ResourceManager
2233 Jps
1645 NameNode
1830 SecondaryNameNode
[hadoop@hadoop sbin]$ ./stop-all.sh 
This script is Deprecated. Instead use stop-dfs.sh and stop-yarn.sh
Stopping namenodes on [hadoop.master]
hadoop.master: stopping namenode
hadoop.slave1: stopping datanode
hadoop.slave2: stopping datanode
Stopping secondary namenodes [hadoop.master]
hadoop.master: stopping secondarynamenode
stopping yarn daemons
stopping resourcemanager
hadoop.slave1: stopping nodemanager
hadoop.slave2: stopping nodemanager
no proxyserver to stop

 启动时的顺序:

  • Master启动NameNode
  • Master依次启动Slave的DataNode
  • Master启动Secondary Namenode
  • Master启动Yarn daemon进程
  • Master启动ResourceManager进程
  • Master依次启动Slave的NodeManage进程

启动结束后,

Master上有NameNode进程、SecondaryNameNode进程、ResourceManager进程

Slave上有DataNode进程,NodeManager进程

 

结束时的顺序:

  • Master停止NameNode
  • Master依次停止Slave的DataNode
  • Master停止Secondary Namenode进程
  • Master停止Yarn daemon进程
  • Master停止ResourceManager进程
  • Master依次停止Salve的NodeManager进程

可见,进程停止的顺序与进程启动的顺序完全一致

 

2. 基于Yarn的Map Reduce的系统组件

  • Client
  • ResourceManager
  • NodeManager
  • ApplicationMaster
  • Container
  • Scheduler

3. 每个组件的功能

3.0 Client

  • 负责提交作业到集群

3.1 ResourceManager

  • 整个集群只有一个
  • 负责集群计算资源的分配与调度
  • 处理客户端作业提交请求
  • 启动/监控ApplicationMaster
  • 监控NodeManager
  • (容错性)存在单点故障,基于ZooKeeper实现HA

3.2 NodeManager

  • 整个集群有多个,负责单节点资源管理和使用(更细一点说,是负责启动、监控和管理该计算节点上Container,防止Application Master使用多于它申请到的计算资源)
  • 单个节点上的资源管理和任务管理(因为NodeManager负责启动和监控管理Container,而ApplicationMaster和任务在Container中运行,因此Node Manager负责对它们使用的计算资源进行管理)
  • 处理来自ResourceManager的命令
  • 处理来自ApplicationMaster的命令
  • (容错性)NodeManager失败后,RM将失败任务告诉对应的AM,AM决定如何处理失败的任务

3.3 ApplicationMaster

  • 每个应用有一个,负责应用程序整个生命周期的管理
  • 分布式计算数据的切分
  • 为应用程序向Resource Manager申请计算资源(以Container为单位,一个应用程序通常为申请跟任务数相同个数的Container),并将Container分配给任务(实际上任务是在Container中执行的)
  • 任务监控与容错
  • (容错性)失败后,由Resource Manager负责重启,Application Manager需处理内部任务的容错问题,ApplicationManager运行过程中会保存已经运行完成的Task,重启后无需重新运行

3.4 Container

  • 是对任务运行环境的抽象
  • 任务运行资源(节点、内存、CPU)
  • 任务启动命令
  • 任务运行环境

4. 基于Yarn的Map Reduce的总体过程

 下图是Hadoop权威指南第三版描述的基于Yarn的Map Reduce过程

 

4.1 主要步骤

  • 作业提交
  • 作业初始化
  • 资源申请与任务分配
  • 任务执行

 

4.2 具体步骤

    在运行作业之前,Resource Manager和Node Manager都已经启动,所以在上图中,Resource Manager进程和Node Manager进程不需要启动

 

  • 1. 客户端进程通过runJob(实际中一般使用waitForCompletion提交作业)在客户端提交Map Reduce作业(在Yarn中,作业一般称为Application应用程序)
  • 2. 客户端向Resource Manager申请应用程序ID(application id),作为本次作业的唯一标识
  • 3. 客户端程序将作业相关的文件(通常是指作业本身的jar包以及这个jar包依赖的第三方的jar),保存到HDFS上。也就是说Yarn based MR通过HDFS共享程序的jar包,供Task进程读取
  • 4. 客户端通过runJob向ResourceManager提交应用程序
  • 5.a/5.b. Resource Manager收到来自客户端的提交作业请求后,将请求转发给作业调度组件(Scheduler),Scheduler分配一个Container,然后Resource Manager在这个Container中启动Application Master进程,并交由Node Manager对Application Master进程进行管理
  • 6. Application Master初始化作业(应用程序),初始化动作包括创建监听对象以监听作业的执行情况,包括监听任务汇报的任务执行进度以及是否完成(不同的计算框架为集成到YARN资源调度框架中,都要提供不同的ApplicationMaster,比如Spark、Storm框架为了运行在Yarn之上,它们都提供了ApplicationMaster)
  • 7. Application Master根据作业代码中指定的数据地址(数据源一般来自HDFS)进行数据分片,以确定Mapper任务数,具体每个Mapper任务发往哪个计算节点,Hadoop会考虑数据本地性,本地数据本地性、本机架数据本地性以及最后跨机架数据本地性)。同时还会计算Reduce任务数,Reduce任务数是在程序代码中指定的,通过job.setNumReduceTask显式指定的
  • 8.如下几点是Application Master向Resource Manager申请资源的细节
  • 8.1 Application Master根据数据分片确定的Mapper任务数以及Reducer任务数向Resource Manager申请计算资源(计算资源主要指的是内存和CPU,在Hadoop Yarn中,使用Container这个概念来描述计算单位,即计算资源是以Container为单位的,一个Container包含一定数量的内存和CPU内核数)。
  • 8.2 Application Master是通过向Resource Manager发送Heart Beat心跳包进行资源申请的,申请时,请求中还会携带任务的数据本地性等信息,使得Resource Manager在分配资源时,不同的Task能够分配到的计算资源尽可能满足数据本地性
  • 8.3 Application Master向Resource Manager资源申请时,还会携带内存数量信息,默认情况下,Map任务和Reduce任务都会分陪1G内存,这个值是可以通过参数mapreduce.map.memory.mb and mapreduce.reduce.memory.mb进行修改。

[Hadoop权威指南第六章]

The way memory is allocated is different from MapReduce 1, where tasktrackers have a fixed number of “slots,” set at cluster configuration time, and each task runs in a single slot. Slots have a maximum memory allowance, which again is fixed for a cluster, leading to both problems of underutilization when tasks use less memory (because other waiting tasks are not able to take advantage of the unused memory) and problems of job failure when a task can’t complete since it can’t get enough memory to run correctly and therefore can’t complete.

 

In YARN, resources are more fine-grained, so both of these problems can be avoided.In particular, applications may request a memory capability that is anywhere between the minimum allocation and a maximum allocation, and that must be a multiple of the minimum allocation. Default memory allocations are scheduler-specific, and for the capacity scheduler, the default minimum is 1024 MB (set by yarn.scheduler.capacity .minimum-allocation-mb) and the default maximum is 10240 MB (set by yarn.schedu ler.capacity.maximum-allocation-mb). Thus, tasks can request any memory allocation between 1 and 10 GB (inclusive), in multiples of 1 GB (the scheduler will round up to the nearest multiple if needed), by setting mapreduce.map.memory.mb and mapre duce.reduce.memory.mb appropriately.

 

  • 9a. Application Master申请到计算资源后(由Resource Manager的Scheduler负责分配),Application Manager通知Node Manager启动一个Container,这些Container用于执行Map任务或者Reduce任务
  • 9b.启动Container后,即开始执行Map任务或者Reduce任务,任务是在称为YarnChild进程中运行,不同于Map Reduce 1,Yarn上每个任务都会启动一个新的JVM进程,
  • 10.每个任务从HDFS上获取分区数据,以完成任务计算

 5. 状态更新(任务完成情况通知)



 
  • 1. 在基于Yarn的Map Reduce中,每个任务的执行状态或者counter计数器每隔3秒钟汇报给Application Master。所有的任务都会每隔3秒钟将自身的任务执行情况汇报给Application Master,因此Application Master汇总了各个任务的执行情况(可以称为aggregate view of progress of all the tasks)
  • 2. 客户端每隔1秒钟从Application Master拉取任务执行状态信息(progress monitor),这个时间间隔可以通过mapreduce.client.progressmonitor.pollinterval进行设置

 

6. 作业完成

客户端每隔5秒钟(可以通过mapreduce.client.completion.pollinterval)从Application Master处获取作业是否完成的信息,这个是在waitForJobCompletion中完成的。

作业完成后,Application Master以及Task Containers clean up working state。同时Job History Server也获得Job运行信息供历史Job查询

 

 

 
 
 
 
 
 
  • 大小: 131.8 KB
  • 大小: 99.1 KB
分享到:
评论

相关推荐

    23、hadoop集群中yarn运行mapreduce的内存、CPU分配调度计算与优化

    YARN支持基于内存和CPU的两种资源调度策略,以确保集群资源的有效利用。在非默认配置下,合理地调整这些参数对优化集群性能至关重要。 一、概述 YARN中的基本资源单元是Container,每个Container包含一定量的内存...

    hadoop中map/reduce

    在Hadoop中,MapReduce的工作流程还涉及一个重要的组件——JobTracker。JobTracker负责调度和监控所有的Map和Reduce任务,确保任务的正确执行和资源的有效分配。然而,在Hadoop 2.x版本中,JobTracker被YARN(Yet ...

    Hadoop Map Reduce教程

    - **YARN**:YARN (Yet Another Resource Negotiator) 是 Hadoop 2.x 版本引入的新资源管理系统,它使得 Hadoop 集群能够运行多种类型的计算任务。 - **Hive**:Hive 是一个数据仓库工具,允许用户通过 SQL 查询来...

    远程调用执行Hadoop Map/Reduce

    例如,`org.apache.hadoop.mapred.MapTask`和`org.apache.hadoop.mapreduce.ReduceTask`分别对应Map和Reduce任务的实现,开发者可以通过阅读这些源码了解任务执行的详细流程。 7. **工具集成**:有许多开源工具可以...

    基于Kubernetes平台部署Hadoop实践.docx

    第二,Hadoop新的Map-Reduce计算框架Yarn的模型出现的比较晚,它的集群机制要比HDFS复杂,资料也相对较少,增加了Hadoop整体建模与迁移Kubernetes平台的难度。 第三,Hadoop与Kubernetes分别属于两个不同的领域,一...

    hadoop 源码解析_yarn源码解析

    Hadoop 是一个基于 Java 的大数据处理框架,Yarn 是 Hadoop 的资源管理器,负责资源分配、任务调度和集群管理。下面是 Yarn 源码解析的知识点: 1. MR 程序提交 MR(MapReduce)程序提交到客户端所在的节点,由 ...

    Hadoop技术-YARN简介.pptx

    3. **资源利用率低下**:MapReduce V1采用固定大小的槽位(Slot)来分配资源,导致任务可能无法充分利用分配的资源,同时槽位分为Map Slot和Reduce Slot,不同类型的槽位不能共享,可能导致资源浪费。 4. **不兼容...

    3_Hadoop平台(YARN+MapReduce)1

    【Hadoop平台与YARN+MapReduce】 Hadoop是一个开源的大数据处理框架,它由Apache基金会开发,主要用于处理和存储海量数据。Hadoop的核心组成部分包括HDFS(Hadoop Distributed File System)和MapReduce,其中...

    基于Hadoop的电影影评数据分析

    【基于Hadoop的电影影评数据分析】是一项大数据课程的大作业,旨在利用Hadoop的分布式...通过这个项目,学生可以深入理解大数据处理流程,并学习如何利用Hadoop解决实际问题,为未来从事大数据相关工作打下坚实基础。

    Hadoop MapReduce实战手册(完整版)

    总之,《Hadoop MapReduce实战手册》全面覆盖了MapReduce的基本概念、工作流程、编程模型以及在大数据处理中的实际应用,是学习和理解大数据处理技术的理想读物。通过深入阅读,读者可以提升在大数据环境下的编程和...

    03_Hadoop MapReduce与Hadoop YARN.zip

    MapReduce与YARN的协同工作流程如下: 1. 用户提交一个MapReduce作业,该作业包含JobConf和程序代码。 2. JobTracker(在YARN中为ResourceManager)接收作业,并启动ApplicationMaster进程。 3. ApplicationMaster...

    05.hadoop上课笔记之hadoop5mapreduce和yarn

    本节笔记主要介绍了 Hadoop.MapReduce 和 YARN 的基本概念、组成部分、工作原理以及实践应用。 一、MapReduce 概念 MapReduce 是 Hadoop 的核心组件之一,负责处理大规模数据。MapReduce 是一种编程模型,用于处理...

    hadoop技术内幕mr_hdfs_yarn PDF 3本全

    《Hadoop技术内幕》系列书籍包含了MapReduce、YARN和HDFS三个核心组件的深入解析,是理解Hadoop生态系统不可或缺的资源。以下是这些主题的详细概述: **Hadoop MapReduce** MapReduce是Hadoop处理大数据的主要计算...

    第02节:hadoop精讲之map reduce原理及代码.pdf

    用户编写Map函数和Reduce函数,然后交给Hadoop框架进行处理。Map函数处理输入的键值对数据,生成中间键值对数据;Reduce函数再将这些中间键值对按键进行归约,产生最终的输出结果。这个过程可以在大量数据集上进行,...

    YarnExamples:Hadoop 2 (YARN API) 中带有 Map Reduce 示例的存储库

    Hadoop 2 (YARN API) 中带有 Map Reduce 示例的存储库 目前的例子: 如何执行示例? 我假设你克隆了这个存储库,你用 netbeans 编译并构建了一个 jar 文件,并且你已经安装了 Hadoop 2.X。 如果之前没问题,则应...

    基于hadoop商品推荐系统课程设计.zip

    例如,通过Map阶段将数据分散到不同的节点进行处理,Reduce阶段再进行聚合,从而快速获取用户兴趣模式和商品关联信息。 四、推荐算法实现 1. 协同过滤:这是一种基于用户行为的推荐方法,通过分析用户历史行为找到...

    hadoop,map,reduce,hdfs

    MapReduce的工作流程如下: 1. **Splitting**:输入数据被分成小块,每个块称为一个split。 2. **Mapping**:每个split被传递给映射函数,映射函数对输入数据进行处理并生成键值对。 3. **Shuffling**:键值对被排序...

    第02节:hadoop精讲之map reduce原理及代码.rar

    下面将详细阐述MapReduce的基本概念、工作流程以及如何编写MapReduce程序。 MapReduce的工作机制分为两个主要阶段:Map阶段和Reduce阶段,这两个阶段之间通过中间结果 Shuffle 和 Sort 阶段连接。 1. Map阶段:在...

    大数据技术之Hadoop(MapReduce&Yarn).docx

    它包括Map、Reduce和Driver三个部分,使用Hadoop的Writable接口进行数据序列化,例如BooleanWritable、IntWritable等。在实际操作中,需要编写Mapper将文本拆分成单词,Reducer则对单词计数并输出。 **环境准备与...

    一种基于Hadoop 的云计算平台搭建与性能

    Hadoop基于Google提出的Map-Reduce编程模型和GFS(Google File System)分布式存储系统原理。作为Apache基金会的开源项目,Hadoop提供了简单的分布式编程接口,让开发者能够编写程序,借助集群的强大计算与存储能力...

Global site tag (gtag.js) - Google Analytics