标签:扩展 logs 发送请求 request请求 严格 情况下 语义 nothing src
YARN是什么?
YARN是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。
如果没有YARN!
- 无法管理集群资源分配问题。
- 无法合理的给程序分配合理的资源。
- 不方便监控程序的运行状态及日志。
1. 客户端发送请求,由Resource Manager分析需要多少内存资源。
2. Resource Manager告诉Node Manager用什么样的jar包什么样的启动命令。
3. Node Manager创建Container,在Container启动Application Master。
4. Application Master向Resource Manager发送ResourceRequest请求去Resource Manager申请资源
5. 启动对应的Node Manager进行通信
6. Node Manager找到对应的Container执行Task
集群资源调度器需要解决:
Yarn使用列队解决多租户中共享资源的问题
root
|---prd
|---dev
? |---eng
? |---science
支持三种资源调度器(yarn.resourcemanager.scheduler.class)
FIFO
Capacity Scheduler
设计思想:资源按照比例分配给各个列队
计算能力保证:以列队为单位划分资源,每个列队最低资源保证
灵活:当某个列队空闲时,其资源可以分配给其他的列队使用
支持优先级:单个列队内部使用的就是FIFO,支持作业优先级调度
多租户:
基于资源调度:支持内存资源调度和CPU资源的调度
从2.8.0版本开始支持抢占
root
|---prd 70%
|---dev 30%
? |---eng 50%
? |---science 50%
Fair Scheduler(推荐)
调用Wordcount案例,看看效果吧
hadoop jar /opt/cloudera/parcels/CDH-6.2.0-1.cdh6.2.0.p0.967373/lib/hadoop-mapreduce/hadoop-mapreduce-examples-3.0.0-cdh6.2.0.jar wordcount -Dmapreduce.job.queuename="root.default" /word.txt /output
#任务2将会失败root.users is not a leaf queue,有了自列队就不能提交
hadoop jar /opt/cloudera/parcels/CDH-6.2.0-1.cdh6.2.0.p0.967373/lib/hadoop-mapreduce/hadoop-mapreduce-examples-3.0.0-cdh6.2.0.jar wordcount -Dmapreduce.job.queuename="root.users" /word.txt /output1
hadoop jar /opt/cloudera/parcels/CDH-6.2.0-1.cdh6.2.0.p0.967373/lib/hadoop-mapreduce/hadoop-mapreduce-examples-3.0.0-cdh6.2.0.jar wordcount -Dmapreduce.job.queuename="root.users.dev" /word.txt /output2
hadoop jar /opt/cloudera/parcels/CDH-6.2.0-1.cdh6.2.0.p0.967373/lib/hadoop-mapreduce/hadoop-mapreduce-examples-3.0.0-cdh6.2.0.jar wordcount -Dmapreduce.job.queuename="root.users.test" /word.txt /output3
从图中看出yarn的HA相对于HDFS的HA简单很多。原因是YARN在开发的过程中,HDFS才考虑到HA的应用(在出2.0版本),HDFS为了老代码的兼容性,和新代码的可拓展性加入了ZKFailoverController(ZKFC)来处理ZK相关的业务。而YARN就直接将ZK的相关的业务规划进了源架构中,所以架构图看起来比HDFS HA简单很多。
也很简单,一步完成。
标签:扩展 logs 发送请求 request请求 严格 情况下 语义 nothing src
原文地址:https://www.cnblogs.com/ttzzyy/p/12324064.html