Yarn
一、理论
1、Yarn基础架构
1)ResourceManager主要作用:
①处理客户端请求
②监控NodeManager
③启动或监控ApplicationMaster
④资源的分配与调度
2)NodeManager主要作用:
①管理单个节点上的资源
②处理来自ResourceManager的命令
③处理来自ApplicationMaster的命令
3)ApplicationMaster作用:
①为应用程序申请资源并分配给内部的任务
②任务的监控与容错
4)Container
Container是YARN中的资源抽象,它封装了某个节点上的多维度资源,如内存、cpu、磁盘、网络等
2、Yarn的工作机制
3、Mapreduce/HDFS/Yarn作业提交流程
插图
插图
4、调度器和调度算法
FIFO:单队列,按照到达时间排序,先到先服务
容量调度器:
多队列:每个队列可配置一定的资源量,每个队列采用FIFO调度策略
容量保证:管理员可为每个队列设置资源最低保证和资源使用上限
灵活性:如果一个队列中的资源有剩余,可以暂时共享给那些需要资源的队列,而一旦该队列有新的应用程序提交,则
其他队列借调的资源会归还给该队列
多租户:
支持多用户共享集群和多应用程序同时运行
为了防止同一个用户的作业独占队列中的资源,该调度器会对同一用户提交的作业所占资源量进行限定
1)队列资源分配
从root开始,使用深度有限算法,优先选择资源占用率最低的队列分配资源
2)作业资源分配
默认按照提交作业的优先级和提交时间顺序分配资源
3)容器资源分配
按照容器的优先级分配资源;
如果优先级相同 按照数据本地性原则:
①任务和数据在同一节点
②任务和数据在同一机架
③任务和数据不在同一节点也不在同一机架
公平调度器:
同队列所有任务共享资源,在时间尺度上获得公平的资源
与容量调度器相同点:
①多队列:支持多队列多作业
②灵活性:如果一个队列中的资源有剩余,可以暂时共享给那些需要资源的队列,而一旦该队列有新的应用程序提交,则其他队列借调的资源会归还给该队列
③容量保证:管理员可为每个队列设置资源最低保证和资源使用上限
④多租户:
支持多用户共享集群和多应用程序同时运行
为了防止同一个用户的作业独占队列中的资源,该调度器会对同一用户提交的作业所占资源量进行限定
与容量调度器不同点:
(1)核心调度策略不同
容量调度器:优先选择资源利用率低的队列
公平调度器:优先选择对资源的缺额比例大的
(2)每个队列可以单独设置资源分配方式:
容量调度器:FIFO、DRF
公平调度器:FIFO、FAIR、DRF
5、yarn在生产环境下需要配置哪些参数
6、命令行操作Yarn
yarn appllication -list 查看正在运行的任务
yarn application -list -appStates FINISHED 查看已经运行成功的任务
kill掉Application
yarn application -kill +名称
yarn logs -applicationId +名称 查看日志
yarn logs -applicationId<ApplicationId> -containerId<ContainerId> 查看某一个容器
打印ApplicationAttemp状态:yarn applicationattempt -status <ApplicationAttemptId>
yarn container -list <ApplicationAttemptId>查看容器
yarn node -list -all 查看node状态
yarn rmadmin -refreshQueues 更新配置
yarn queue -status <QueueName> 查看队列
二、怎么玩?
1、生产环境下参数怎么配置
插图
2、容量调度器在生产环境配置
配置YARN-SITE
capacity-scheduler
3、公平调度器在生产环境配置
yarn-site
fair-scheduler
4、Yarn的tool接口