Hadoop Yarn的好处
- 资源管理和任务调度统一
- 公司资源统一分配
- 任务多种模式调度
MR ON YARN
image.png流程
1.首先客户端提交mr程序,向rm请求资源,运行APP master
2.RM收到请求后,会根据集群资源使用情况和,会分配一台node manger,预留容器资源.
3.客户端,在这台容器内启动app master,am 启动后会跟客户端 和rm 注册监听,保持心跳,汇报给rm 任务执行情况
4.AM 根据本次逻辑切片的个数 与rm 申请对应的task任务的资源
5.rm收到分配资源的请求后并不会马上就分配资源,而是请求的信息在调度队列中 原则(fifo,队列调度)等
6.当调度到自己的时候,am 到rm分配的容器上面 运行task任务(map task reduce task)
7 task任务启动后需要跟rm 保持监听,汇报自己的任务执行情况
8.当所有task任务运行结束后, AM跟rm汇报任务执行完毕及最终状态,并且申请回收资源,最后am向rm注销自己,并释放资源
Spark 应用服务
当Spark Application运行到Hadoop YARN上时,提交应用指定master为yarn
需要启动 yarn集群 job histroy服务
启动 spark history服务
(base) [root@node1 ~]# start-dfs.sh
# WEB UI:http://node1.itcast.cn:9870/
(base) [root@node1 ~]# start-yarn.sh
# WEB UI:http://node1.itcast.cn:8088/
## 第二、启动MRHistoryServer服务,在node1执行命令
mapred --daemon start historyserver
# WEB UI:http://node1.itcast.cn:19888/
## 第三、启动Spark HistoryServer服务,,在node1执行命令
/export/server/spark-yarn/sbin/start-history-server.sh
# WEB UI:http://node1.itcast.cn:18080/
spark on yarn
spark应用角色
Driver program (spark 应用老大):负责具体job调度
Executor 执行者:负责具体Task任务的执行
spark on yarn deploy-mode
spark应用 submit有两种部署模式
- client 客户端模式
Driver 负责调度执行Job
AppMaster 负责向yarn 的 resource manager 申请资源 - cluster 集群模式
cluster:两者合并,Driver运行在AppMaster内部
1_Spark on Yarn client
image.png流程:
spark 应用提交到客户端
1.一个spark 应用在submit 提交之后 就会在本地启动一个 Driver program
2.启动后的Driver program 会向 RM申请分配资源启动AppMaster
3.RM收到请求后 会在其合适的node_manager上分配一个Containe容器,并在容器内启动一个AppMaster
4 APPmaster 会根据spark 应用提交的设置 去向RM申请对应分配的Executor个数的资源
5.RM会在合适的node manger 上分配对应容器 启动 executor ,启动后的executor 会向Driver 反向注册并保持心跳
- Driver会调度对应的task 任务到 executor上执行
2_Spark on Yarn cluster
image.png流程
1.spark 应用提交到yarn上
2.yarn会在响应的nodemanager 上分配一个containe容器去启动AppMaster(只要有应用提交给yarn 都会启动) ,此时的Appmaster 就是Driver program(合二为一 即负责job调度 由负责申请资源)
3.Appmaster 会向yarn 申请对应的executor 执行的资源, rm收到申请后在响应的nodemanger上 分配容器 启动executor 进程
4.启动后的executor 会向Appmaster 反向注册 保持心跳
5.Executor全部注册完成后Driver开始执行main函数,之后执行到Action算子时,触发一个job,并根据宽依赖开始划分stage,每个 stage生成对应的taskSet,之后将task分发到各个Executor上执行;
网友评论