Advertisement

yarn常用概念知识点汇总

阅读量:

问题一:集群提交任务,是什么决定任务分配到哪个节点上?
Yarn(RM,NM)

问题二:在集群环境下提交任务时偶尔会成功偶尔会失败(采用外部配置文件)?答:程序所需数据的配置文件存在不足;有的节点缺少该数据有的节点则具备。解决方案是将在所有节点上存储一份程序所需的数据的副本(即复制一份配置文件到每个节点)。谁负责分配这项任务呢?答案是Yarn.

ResourceManager:在一个集群中只有一个Resource Manager对外负责服务(尽管可能存在内部多个Resource Managers)。
NodeManager:在一个集群中有多个Resource Managers(通常也包括Data Nodes作为其一部分)。

什么是Yarn?
一个通用资源管理系统和调度平台。

Yarn特点:支持多个数据计算框架,运行成本低,数据共享。

资源指的是什么? CPU 内存

Yarn的意义在于减少了组织的硬件支出(硬件成本),减少了资源利用率的问题,并使运行成本得以节省,同时实现了数据共享。

Yarn内部组件结构如下:
1、ResourceManager 负责管理集群中的资源分配
2、NodeManager 负责管理单个节点上的资源管理
3、每个计算任务均配备有一个APPMaster负责管理其相关资源
4、容器包含内存以及CPU资源

Yarn提交任务的流程

1、Client将应用程序提交给Resource Manager,并包含启动该应用所需的信息如ApplicationMaster程序、启动命令及用户程序等。
2、Resource Manager分配一个容器用于运行Application Master。
3、Application Master与Resource Manager建立关联并完成注册操作。
4、Application Master请求Resource Manager获取所需资源以支持其功能。
5、当容器申请成功时,Application Master执行初始化操作并将初始化信息传递给Node Manager。
6、Node Manager分配计算资源给容器以便其正常运行。
7、容器在运行过程中持续监控自身状态并通过RPC协议汇报相关信息。
8、当应用关闭时(ApplicationMaster)完成注销操作并释放其相关的容器以便回收管理。

Yarn的调度机制包含三种主要类型:

FiFo举例子
排队食堂打饭、排队买车票、医院挂号

容量调度器举例说明:例如多个售票窗口、多个服务窗口、多个服务台以及高速公路收费口等场景中常见的多窗口服务设置

公平调度器
军人优先买车票、公交车老人坐

Default Scheduler(CDH默认的调度器)
Root
├── Workload Management Environment(工作负载管理环境) 40 %
└── Test Environment(测试环境) 60 %
├── MapReduce 占用了60 % 的50%资源
└── Spark 占用了60 % 的50%资源

1、编辑集群内的capacity-scheduler.xml 配置文件,输入一下内容

yarn.scheduler.capacity.root.queues
prod,dev

yarn.scheduler.capacity.root.dev.queues
mapreduce,spark

yarn.scheduler.capacity.root.prod.capacity
40

yarn.scheduler.capacity.root.dev.capacity
60

yarn.scheduler.capacity.root.dev.maximum-capacity
75

yarn.scheduler.capacity.root.dev.mapreduce.capacity
50

yarn.scheduler.capacity.root.dev.spark.capacity
50

2、部署更新后的配置参数至集群所有节点。
scp capacity-scheduler.xml node02:/PWD
scp capacity-scheduler.xml node03:/PWD

Current directory/ShutdownAllClusterScript

Current directory/ShUTDOWN_ALL_CLUSTER_SCRIPT

通过 hadoop 执行以下 Jar 文件:…/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.14.0.jar pi -D mapreduce.job.name=mapreduce 10 10

补充说明

<!—未指定对列 默认提交default队列,该对列名字为用户名 -->

yarn.scheduler.fair.user-as-default-queue
true

yarn.scheduler.fair.allow-undeclared-pools true

公平调度器
1、修改yarn-site.xml配置文件添加以下配置

The YARN resource manager scheduler class is configured to manage resources effectively.
The system is running on the Apache Hadoop platform version 2.x, specifically CDH 5.x.
The Fair Scheduler is allocated to the path located at /export/servers/hadoop-2.x-cdh5.x/etc/hadoop/fair-scheduler.xml.
Preemption settings are activated with a threshold of 0% for cluster utilization.
By default, users are assigned to a queue, and undeclared pools are not allowed in this configuration.

2、添加fair-scheduler.xml配置文件

30 512mb,4vcores 102400mb,100vcores 100 1.0 fair
复制代码
    <queue name="default">
    	<minResources>512mb,4vcores</minResources>
    	<maxResources>30720mb,30vcores</maxResources>
    	<maxRunningApps>100</maxRunningApps>
    	<schedulingMode>fair</schedulingMode>
    	<weight>1.0</weight>
    	<!--  所有的任务如果不指定任务队列,都提交到default队列里面来 -->
    	<aclSubmitApps>*</aclSubmitApps>
    </queue>
复制代码
    <queue name="hadoop">
    	<minResources>512mb,4vcores</minResources>
    	<maxResources>20480mb,20vcores</maxResources>
    	<maxRunningApps>100</maxRunningApps>
    	<schedulingMode>fair</schedulingMode>
    	<weight>2.0</weight>
    	<aclSubmitApps>hadoop hadoop</aclSubmitApps>
    	<aclAdministerApps>hadoop hadoop</aclAdministerApps>
    </queue>
    
    <queue name="develop">
    	<minResources>512mb,4vcores</minResources>
    	<maxResources>20480mb,20vcores</maxResources>
    	<maxRunningApps>100</maxRunningApps>
    	<schedulingMode>fair</schedulingMode>
    	<weight>1</weight>
    	<aclSubmitApps>develop develop</aclSubmitApps>
    	<aclAdministerApps>develop develop</aclAdministerApps>
    </queue>
    
    <queue name="test1">
    	<minResources>512mb,4vcores</minResources>
    	<maxResources>20480mb,20vcores</maxResources>
    	<maxRunningApps>100</maxRunningApps>
    	<schedulingMode>fair</schedulingMode>
    	<weight>1.5</weight>
    	<aclSubmitApps>test1,hadoop,develop test1</aclSubmitApps>
    	<aclAdministerApps>test1 group_businessC,supergroup</aclAdministerApps>
    </queue>

3、分发新添加的配置文件到集群的所有节点

scp yarn-site.xml fair-scheduler.xml "node 02" "WD" scp yarn-site.xml fair-scheduler.xml "node 03" "WD"

4、重启Yarn集群
stop-yarn.sh
start-yarn.sh

5、验证
a) 配置用于验证的用户(在队列中设置)
创建名为Hadoop的用户
对Hadoop进行密码设置

此外,在实际操作中需要完成以下步骤:

  1. 使用命令 groupadd 创建一个名为 supergroup 的新组。
  2. 该关系涉及的超级组为:supergroup。
  3. 为超级组 supergroup 添加属性 hadoop。
  4. 进一步说明:在执行上述操作时,请确保已正确配置相关权限。
  5. 同样地,请注意在执行以下命令时应遵循相同的步骤:
    a. 为超级组 supergroup 添加属性 test1。
    b. 为超级组 supergroup 添加属性 develop。

更新HDFS上的组配置,并以命令行启动相关操作:sudo su root 和 hdfs dfsadmin -refreshUserToGroupsMappings

第b步, 执行任务并检查浏览器中的验证步骤。切换到测试用户的账户.su test1.运行Hadoop Jar应用程序, 使用配置文件位置在特定路径下运行.$ hadoop jar …/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.14.0.jar pi 10 10 查看界面.<转到验证界面>

全部评论 (0)

还没有任何评论哟~