Spark on YARN 本质
构建HA standAlone集群可以满足稳定的Spark生产环境要求。
而在YARN集群之上构建Hadoop集群可以提高资源利用率,因为企业的服务器资源总是紧张的
YARN本身是一个资源调度框架,负责对运行在内部的计算框架进行资源调度管理
作为典型的计算框架,Spark本身也是直接运行在YARN中,并接受YARN调度。
所以,SPARK on YARN 无需部署Spark集群,只要找一台服务器,充当Spark的客户端,既可以提交任务到YARN 集群中运行。
本质:
- Master角色由YARN的ResourceManager担任。Worker角色由YARN的NodeManager担任。
- Driver角色运行在YARN容器内 或 提交任务的客户端进程。
- 真正干活的Executor运行在YARN提供的容器内。
配置spark on YARN 环境
1 | vi /opt/spark/conf/spark-env.sh |
只要配置好HADOOP_CONF_DIR和YARN_CONF_DIR配置即可
1 | # 启动 |
部署模式DeployMode
Spark on YARN 有两种运行模式:
- Cluster模式:Driver运行在容器内部,和ApplicationMaster在同一个容器内
- Clinet模式:Driver运行在客户端进程中,比如Driver运行在spark-submit程序的进程中
通过spark-submit,pyspark,spark-shell启动的任务
cluster模式 效率高,但产生的日志也在容器内部不宜查找
Spark on YARN 两种模式总结
Cluster | Client | |
---|---|---|
Driver运行位置 | YARN容器内 | 客户端进程内 |
通讯效率 | 高 | 低于cluster |
日志查看 | 日志输出在容器内,查看不方便 | 日志输出在客户端的标准输出流中,方便查看 |
生产可用 | 推荐不推荐 | |
稳定性 | 稳定 | 基于客户端进程,受到客户端进程影响 |