Spark on YARN 基本概念
- YARN(Yet Another Resource Negotiator): 是 Hadoop 生态系统的一部分,用于集群资源管理和作业调度。
- Spark on YARN: 是指在 YARN 上运行 Spark 应用程序,利用 YARN 来管理资源和调度任务。
Spark on YARN 的运行模式
- Cluster 模式: 在这种模式下,Spark Driver 运行在 YARN 集群的一个节点上,适合长时间运行的作业。
- Client 模式: 在这种模式下,Spark Driver 运行在提交应用程序的客户端机器上,适合开发和调试。
Spark on YARN 的配置
为了在 YARN 上运行 Spark,需要进行一些配置:
-
yarn-site.xml: 这是 YARN 的配置文件,通常位于 Hadoop 配置目录中。你需要确保这个文件在 Spark 配置中可以访问。
-
spark-env.sh: 这是 Spark 的环境配置文件。你需要设置一些环境变量,比如 SPARK_HOME, HADOOP_CONF_DIR 等。
-
spark-defaults.conf: 这是 Spark 的默认配置文件,可以在这里设置 Spark 作业的一些默认参数,比如 master URL(yarn)、deploy mode(client 或 cluster)、executor 内存等。
提交 Spark 作业到 YARN
可以使用 spark-submit 命令将 Spark 作业提交到 YARN 上运行:
python
spark-submit \
--class <main-class> \
--master yarn \
--deploy-mode cluster \
--executor-memory 4g \
--executor-cores 2 \
<application-jar> \
[application-arguments]
注意事项
- 资源配置: 根据作业的需求合理配置 executor 内存和核心数量,避免资源浪费或不足。
- 日志查看: 在 YARN 上运行的 Spark 作业的日志可以通过 YARN ResourceManager 或 YARN History Server 查看,帮助你调试和优化作业。
- 依赖管理: 如果你的 Spark 作业有外部依赖库,需要确保这些库可以被 YARN 节点访问,可以通过 --jars 参数指定依赖库路径。
例子
假设你有一个 Spark 应用程序,主类是 com.example.MyApp,打包后的 jar 文件名是 myapp.jar,你可以用以下命令提交到 YARN 上运行:
python
spark-submit \
--class com.example.MyApp \
--master yarn \
--deploy-mode cluster \
--executor-memory 4g \
--executor-cores 2 \
myapp.jar