3.1 资源调度框架 YARN

面对着已经存储到hdfs海量的日志数据,我们需要对数据进行离线计算,离线计算需要申请资源,hadoop内置了资源管理者-YARN

3.1.1 什么是YARN

  • Yet Another Resource Negotiator, 另一种资源协调者
  • 通用资源管理系统
  • 为上层应用提供统一的资源管理和调度,为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处

3.1.2 YARN产生背景

  • MapReduce1.x存在的问题: 单点故障&节点压力大&不易扩展

    • 在Hadoop1.x中MapReduce是Master/Slave结构,在集群中的表现形式为:1个JobTracker带多个TaskTracker;
    • JobTracker:负责资源管理和作业调度
    • TaskTracker:定期向JobTracker汇报本节点的健康状况、资源使用情况以及任务的执行情况;接收来自JobTracker的命令(启动/杀死任务等)并执行接收到的命令;
  • 资源利用率低 运维成本高

  • 不同计算框架可以共享同一个HDFS集群上的数据,享受整体的资源调度

3.1.3 YARN架构

  • ①ResourceManager: RM ​ 整个集群同一时间提供服务的RM只有一个,负责集群资源的统一管理和调度 ​ 处理客户端的请求: 提交一个作业、杀死一个作业 ​ 监控我们的NM,一旦某个NM挂了,那么该NM上运行的任务需要告诉我们的AM来如何进行处理
  • ② NodeManager: NM ​ 整个集群中有多个,负责自己本身节点资源管理和使用 ​ 定时向RM汇报本节点的资源使用情况 ​ 接收并处理来自RM的各种命令:启动Container ​ 处理来自AM的命令 ​ 单个节点的资源管理
  • ③ ApplicationMaster: AM ​ 每个应用程序对应一个:MR、Spark,负责应用程序的管理 ​ 为应用程序向RM申请资源(core、memory),分配给内部task ​ 需要与NM通信:启动/停止task,task是运行在container里面,AM也是运行在container里面
  • ④ Container ​ 封装了CPU、Memory等资源的一个容器 ​ 是一个任务运行环境的抽象
  • ⑤ Client ​ 提交作业 ​ 查询作业的运行进度 ​ 杀死作业

3.4 YARN执行流程

1,Client提交作业请求

2,ResourceManager接收到请求,在其中一个NodeManager上启动Container,

3,启动的Container为了创建ApplicationMaster

4,ApplicationMaster收到任务后,向ResourceManager申请资源

5,得到批准后,向对应的NodeManager申请启动Container

6,Container启动后,执行对应的任务

3.5 YARN环境搭建

1)mapred-site.xml

<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>

2)yarn-site.xml

<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>

3) 启动YARN相关的进程 sbin/start-yarn.sh

4)验证

jps
    ResourceManager
    NodeManager
http://node-teach:8088

5)停止YARN相关的进程 ​ sbin/stop-yarn.sh

3.6 提交MapReduce作业到Yarn上运行

体验MapReduce在Yarn中的运算流程:

在hadoop目录下

xxx/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar

在hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar这个jar包上已经内置了很多样例功能,我们取一个简单的测试下:

hadoop jar hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar pi 10 20

results matching ""

    No results matching ""