搭建spark on yarn 的环境支持两种模式
1)yarn-cluster:适用于生产环境;
2)yarn-client:适用于交互、调试,希望立即看到app的输出
由于自己遇到的是yarn-client 模式下的问题,记录一下
首先下说明一下,spark-client的Yarn-client模式下作业执行流程:
Yarn-client模式下作业执行流程
- 客户端生成作业信息提交给ResourceManager(RM)
- RM在本地NodeManager启动container并将Application Master(AM)分配给该NodeManager(NM)
- NM接收到RM的分配,启动Application Master并初始化作业,此时这个NM就称为Driver
- Application向RM申请资源,分配资源同时通知其他NodeManager启动相应的Executor
- Executor向本地启动的Application Master注册汇报并完成相应的任务
Yarn-client
在Yarn-client中,Application Master仅仅从Yarn中申请资源给Executor,之后client会跟container通信进行作业的调度,下图是Yarn-client模式
由此图可以看出,spark在client模式下启动后,application中的Driver(驱动程序)是运行在本地的,Application中的Executor
是在yarn中的container中运行。
接下来说的是spark的日志设置
spark的conf目录中有个log.properties.template文件,修改为log.properties然后放在项目的路径下,
# Set ever