一起重新开始学大数据-hadoop篇-day48 Yarn |
Yarn
Yarn概述
yarn:资源调度系统
运算资源:运算程序jar、配置文件、cpu、内存、IO
只负责程序运行所需资源的分配回收等调度任务,与应用程序的内部运作机制完全无关,所以yarn已经成为了通用资源调度平台,许许多多的运算框架都可以借助它来实现资源管理,
such as :MR、spark、storm、TEZ、Flink…
yarn核心组件功能
YARN Client
YARN Client提交Application到RM,它会首先创建一个Application上下文对象,并设置AM必需的资源请求信息,然后提交到RM。YARN Client也可以与RM通信,获取到一个已经提交并运行的Application的状态信息等。
ResourceManager(RM)
RM是YARN集群的Master,负责管理整个集群的资源和资源分配。RM作为集群资源的管理和调度的角色,如果存在单点故障,则整个集群的资源都无法使用。在2.4.0版本才新增了RM HA的特性,这样就增加了RM的可用性。
NodeManager(NM)
NM是YARN集群的Slave,是集群中实际拥有实际资源的工作节点。我们提交Job以后,会将组成Job的多个Task调度到对应的NM上进行执行。Hadoop集群中,为了获得分布式计算中的Locality特性,会将DN和NM在同一个节点上运行,这样对应的HDFS上的Block可能就在本地,而无需在网络间进行数据的传输。
Container
Container是YARN集群中资源的抽象,将NM上的资源进行量化,根据需要组装成一个个Container,然后服务于已授权资源的计算任务。计算任务在完成计算后,系统会回收资源,以供后续计算任务申请使用。Container包含两种资源:内存和CPU,后续Hadoop版本可能会增加硬盘、网络等资源。
ApplicationMaster(AM)
AM主要管理和监控部署在YARN集群上的Application,以MapReduce为例,MapReduce Application是一个用来处理MapReduce计算的服务框架程序,为用户编写的MapReduce程序提供运行时支持。通常我们在编写的一个MapReduce程序可能包含多个Map Task或Reduce Task,而各个Task的运行管理与监控都是由这个MapReduceApplication来负责,比如运行Task的资源申请,由AM向RM申请;启动/停止NM上某Task的对应的Container,由AM向NM请求来完成。
查看MapReduce任务的输出日志
historyserver进程作用
把之前本来散落在nodemanager节点上的日志统计收集到hdfs上的指定目录中
启动historyserver
执行sbin/mr-jobhistory-daemon.sh start historyserver
通过master:19888
观察
application id
获取application id 通过执行
yarn logs applicationId (application id )
MapReduce在yarn上的执行过程
图示部分关键字分析
什么是YarnChild:
MrAppMaster运行程序时向resouce manager请求的maptask、reduceTask,也就是运行程序的容器,其实它就是一个运行程序的进程
FIFO Scheduler
FIFO是Hadoop设计之初提供的一个最简单的调度机制: 即先来先服务。所有应用程序被统一提交到一个队里中,Hadoop按照提交顺序依次运行这些作业。只有等先来的应用程序资源满足后,再开始为下一个应用程序进行调度运行和分配资源。
优点:
原理是和实现简单。也不需要任何单独的配置
缺点:
1, 无法提供QoS,只能对所有的任务按照同一优先级处理。
2, 无法适应多租户资源管理。先来的大应用程序把集群资源占满,导致其他用户的程序无法得到及时执行。
3, 应用程序并发运行程度低。
Yarn资源调度策略(转)
YARN 资源调度器是直接从MR基础上修改而来,它提供了三种可用资源调度器,分别是FIFO Scheduler、Yahoo!的Capacity Scheduler 和Fackbook 的 Fair Scheduler,它们的原理和细节基本上与MR的三种调度器一致。都是层级队列方式组织资源的。这种方式符合公司或部门组织架构,有利于资源在不同资源间分配和共享,进而提高集群资源利用率。
- 详细关于yarn资源调度策略查看原文👉腾讯云链接
优化
1,通过修改map的切片大小控制map数据量(尽量和block大小保持一致)
并不是map越多越好,根据集群资源
set mapred.max.split.size=256000000
2,合并小文件。因为一个文件会至少生成一个map
3,避免数据倾斜
数据倾斜无非就是大量的相同的key被partition分配到同一个分区,造成分配不均匀的情况,这样可能会造成一种情况reduce进度一直在百分之99长时间无法结束
解决方法大致:
增加reduce个数
自定义分区,需要用户自己继承partition类,指定分区策略
重新设计key
4,combine操作
5,mapjoin操作
👉详见该系列上一章实操部分mapjoin
6,适当备份,因为备份多可以本地化生成map任务
大数据体系概述图
看看大数据体系概述图,后面还要学什么部分(0_o)!
|
|
|
|
上一章-hadoop篇-day47 mapreduce(总)
下一章-hadoop篇-day49 Hive简介和安装
|
|
|
|
|
听说长按大拇指👍会发生神奇的事情呢!好像是下面的画面,听说点过的人🧑一个月内就找到了对象的💑💑💑,并且还中了大奖💴$$$,考试直接拿满分💯,颜值突然就提升了😎,虽然对你好像也不需要,是吧,吴彦祖🤵! |