Spark on YARN 环境搭建

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
2
3
# 启动
./bin/spark-submit --master yarn
./bin/spark-submit --master yarn /opt/spark/examples/src/main/python/pi.py 100

spark_yarn

spark_yarn_hadoop

部署模式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
日志查看 日志输出在容器内,查看不方便 日志输出在客户端的标准输出流中,方便查看
生产可用 推荐不推荐
稳定性 稳定 基于客户端进程,受到客户端进程影响

两种模式详细流程