重庆南坪网站建设公司,建设网站平台需要的设备,建筑网官网查询,dw是什么软件大数据学习笔记 Yarn资源调度器
Yarn是一个资源调度平台#xff0c;负责为运算程序提供服务器运算资源#xff0c;相当于一个分布式的操作系统平台#xff0c;而MapReduce等运算程序则相当于运行与操作系统之上的应用程序。 #xff08;也就是负责MapTask、ReduceTask等任… 大数据学习笔记 Yarn资源调度器
Yarn是一个资源调度平台负责为运算程序提供服务器运算资源相当于一个分布式的操作系统平台而MapReduce等运算程序则相当于运行与操作系统之上的应用程序。 也就是负责MapTask、ReduceTask等任务分配资源
1. Yarn基本架构
Yarn主要由ResourceManager、NodeManager、ApplicationMaster、Container。 1ResourceManagerRM主要作用
处理客户端请求监控NodeManager启动或监控ApplicationMaster资源的分配与调度 2NodeManagerNM主要作用如下管理单个节点上的资源处理来自ResourceManager的命令处理来自ApplicationMaster的命令 3ApplicationMasterAM作用负责数据的切分为应用程序申请资源并分配给内部的任务任务的监控和容错 4Container Container是Yarn中的资源抽象它封装了某个节点上的多维度资源如内存、CPU、磁盘、网络等。
2. Yarn工作机制
1MR程序提交到客户端所在的节点。 2YarnRunner向ResourceManager申请一个Application。 3RM将该应用程序的资源路径返回给YarnRunner。 4该程序将运行所需资源提交到HDFS上。 5程序资源提交完毕后申请运行mrAppMaster。 6RM将用户的请求初始化成一个Task。 7其中一个NodeManager领取到Task任务。 8该NodeManager创建容器Container并产生MRAppmaster。 9Container从HDFS上拷贝资源到本地。 10MRAppmaster向RM 申请运行MapTask资源。 11RM将运行MapTask任务分配给另外两个NodeManager另两个NodeManager分别领取任务并创建容器。 12MR向两个接收到任务的NodeManager发送程序启动脚本这两个NodeManager分别启动MapTaskMapTask对数据分区排序。 13MrAppMaster等待所有MapTask运行完毕后向RM申请容器运行ReduceTask。 14ReduceTask向MapTask获取相应分区的数据。 15程序运行完毕后MR会向RM申请注销自己。
3. Yarn作业提交全过程
第1步Client调用job.waitForCompletion方法向整个集群提交MapReduce作业。 第2步Client向RM申请一个作业id。 第3步RM给Client返回该job资源的提交路径和作业id。 第4步Client提交jar包、切片信息和配置文件到指定的资源提交路径。 第5步Client提交完资源后向RM申请运行MrAppMaster。 2作业初始化 第6步当RM收到Client的请求后将该job添加到容量调度器中。 第7步某一个空闲的NM领取到该Job。 第8步该NM创建Container并产生MRAppmaster。 第9步下载Client提交的资源到本地。 3任务分配 第10步MrAppMaster向RM申请运行多个MapTask任务资源。 第11步RM将运行MapTask任务分配给另外两个NodeManager另两个NodeManager分别领取任务并创建容器。 4任务运行 第12步MR向两个接收到任务的NodeManager发送程序启动脚本这两个NodeManager分别启动MapTaskMapTask对数据分区排序。 第13步MrAppMaster等待所有MapTask运行完毕后向RM申请容器运行ReduceTask。 第14步ReduceTask向MapTask获取相应分区的数据。 第15步程序运行完毕后MR会向RM申请注销自己。 5进度和状态更新 YARN中的任务将其进度和状态(包括counter)返回给应用管理器, 客户端每秒(通过mapreduce.client.progressmonitor.pollinterval设置)向应用管理器请求进度更新, 展示给用户。 6作业完成 除了向应用管理器请求作业进度外, 客户端每5秒都会通过调用waitForCompletion()来检查作业是否完成。时间间隔可以通过mapreduce.client.completion.pollinterval来设置。作业完成之后, 应用管理器和Container会清理工作状态。作业的信息会被作业历史服务器存储以备之后用户核查。
4. 资源调度器
目前hadoop作业调度主要有三种FIFO先进先出、Capacity Scheduler容量调度 【默认】、Fair Scheduler功能调度。
FIFO调度 容量调度器
支持多个队列每个队列可配置一定的资源量每个队列采用FIFO调度策略为了防止同一用户的作业独占队列中的资源该调度器会对同一个用户提交的作业所占资源量进行限定。首先计算每个队列中正在运行的任务数与其应该分得的计算资源之间的比值选择一个该比值最小的队列——最闲的。其次按照作业优先级和提交时间顺序同时考虑用户资源量限制和内存限制对队列任务排序。三个队列同时按照队列先后顺序执行。
公平调度器并发度比较大
支持多队列多用户每个队列中的资源可以配置同一队列中的作用公平共享队列中所有资源。
任务的推测执行
如果一个任务长时间运行不完而且拖慢整个机制那么就可以用到推测执行机制。 推测执行机制发现拖后腿的任务比如某个任务运行速度远慢于任务平均速度。为拖后腿任务启动一个备份任务同时运行。谁先运行完则采用谁的结果。 1每一个Task只能有一个备份任务 2当前job已完成的Task必须不小于5% 3开启推测执行参数设置
不能使用推测执行机制的情况 1任务间存在严重的负载均衡 2特殊任务比如任务向数据库中写数据
推测执行算法原理 1MR总是选择差值最大的任务并为之启动备份任务。 2为了防止大量任务同时启动备份任务造成的资源浪费MR为每个作业设置了同时启动的备份任务数量上限。 3推测执行机制实际上采用了经典的优化算法以空间换时间。
MapReduce跑的慢的原因
MapReduce程序效率的瓶颈在于两点
计算机性能CPU、内存、磁盘健康、网络I/O操作优化 1数据倾斜 2Map和Reduce数设置不合理 3Map运行时间太长导致reduce等待过久 4小文件过多 5大量的不可分块的超大文件 6Spill次数过多 7Merge次数过多等。
Map阶段优化 1减少溢写次数 2减少合并次数 3在Map之后不影响业务逻辑前提下先进行Combine处理减少I/O。 reduce阶段优化 1 合理设置Map和reduce数 2设置Map、reduce共存调整slowstart.completedmaps参数是map运行到一定程度后reduce也开始运行减少reduce的等待时间。 3规避使用reduce减少了shuffle。 4合理设置reduce buffer I/O传输 1采用数据压缩的方式 2使用SequenceFile二进制文件 数据倾斜问题 方法1抽样和范围分区 方法2自定义分区 方法3Combine 方法4采用Map Join尽量避免reduce join