❣️这篇文章简单介绍一下资源调度工具YARN
YARN 产生背景
-
MapReduce1.x ==> MapReduce2.x
- master/slave : JobTracker/TaskTracker
- JobTracker:单点、压力大
- 仅仅只能够支持 mapreduce 作业
-
资源利用率
- 所有的计算框架运行在一个集群中,共享一个集群的资源,按需分配!
master: resource management:ResourceManager (RM)
job scheduling/monitoring:per-application ApplicationMaster (AM)
slave: NodeManager (NM)
YARN 架构
- Client、ResourceManager、NodeManager、ApplicationMaster
- master/slave: RM/NM
Client: 向 RM 提交任务、杀死任务等
-
ApplicationMaster:
- 每个应用程序对应一个 AM
- AM 向 RM 申请资源用于在 NM 上启动对应的 Task
- 数据切分
- 为每个 task 向 RM 申请资源(container)
- NodeManager 通信
- 任务的监控
-
NodeManager: 多个
- 干活
- 向 RM 发送心跳信息、任务的执行情况
- 接收来自 RM 的请求来启动任务
- 处理来自 AM 的命令
-
ResourceManager:集群中同一时刻对外提供服务的只有 1 个,负责资源相关
- 处理来自客户端的请求:提交、杀死
- 启动/监控 AM
- 监控 NM
- 资源相关
-
container:任务的运行抽象
- memory、cpu....
- task 是运行在 container 里面的
- 可以运行 am、也可以运行 map/reduce task
yarn 执行流程
提交自己开发的 MR 作业到 YARN 上运行的步骤:
- mvn clean package -DskipTests 打包 jar 包
windows/Mac/Linux ==> Maven - 把编译出来的 jar 包(项目根目录/target/...jar)以及测试数据上传到服务器
scp xxxx hadoop@hostname:directory - 把数据上传到 HDFS
hadoop fs -put xxx hdfspath - 执行作业
hadoop jar xxx.jar 完整的类名(包名+类名) args..... - 到 YARN UI(8088) 上去观察作业的运行情况
- 到输出目录去查看对应的输出结果