如何搭建spark yarn模式的集群

Spark 在 YARN 模式下的运行原理与配置

123

Apache Spark 是一个强大的分布式数据处理框架,它可以在各种集群管理器上运行,其中 YARN(Yet Another Resource Negotiator)是 Hadoop 的集群资源管理系统。在 YARN 上运行 Spark 任务时,可以选择两种不同的模式:Client 模式Cluster 模式

Spark 在 YARN 上的运行机制

在 YARN 上运行 Spark 时,不需要单独部署 Spark 集群。YARN 本身作为资源调度框架,负责对内部运行的计算框架进行资源调度管理。Spark 作为计算框架,直接运行在 YARN 中,并接受 YARN 的资源调度。在这种设置中,YARN 的 ResourceManager 充当 Master 角色,而 NodeManager 充当 Worker 角色。Spark 的 Driver 可以运行在 YARN 容器内或提交任务的客户端进程中,而实际执行任务的 Executor 运行在 YARN 提供的容器内。

配置 Spark 在 YARN 环境中的运行

要在 YARN 上运行 Spark,需要配置 spark-env.sh 文件,确保 HADOOP_CONF_DIR 和 YARN_CONF_DIR 指向正确的 Hadoop 配置文件目录。这样,Spark 就能够读取 HDFS 上的文件并在 YARN 集群中运行。

连接到 YARN

可以通过以下命令使用不同的 Spark 工具连接到 YARN:

  • PySparkbin/pyspark --master yarn --deploy-mode client|cluster

  • Spark Shellbin/spark-shell --master yarn --deploy-mode client|cluster

  • Spark Submitbin/spark-submit --master yarn --deploy-mode client|cluster /path/to/app.py args

注意,交互式环境如 PySpark 和 Spark Shell 无法运行在 cluster 模式。

部署模式

在 YARN 上运行 Spark 时,可以选择以下两种部署模式:

  • Client 模式: 在这种模式下,Driver 运行在客户端机器上,这通常用于学习和测试环境。Driver 与集群的通信成本较高,但输出结果会在客户端显示。

  • Cluster 模式: 在这种模式下,Driver 运行在 YARN 集群中的一个容器内,通常用于生产环境。这种模式下,Driver 与集群的通信成本较低,但输出结果不会在客户端显示。如果 Driver 出现问题,YARN 会重启 ApplicationMaster(Driver)。

测试部署模式

可以通过运行圆周率 PI 程序来测试不同的部署模式。例如,使用 client 模式运行 PI 程序的命令如下:

bin/spark-submit --master yarn --deploy-mode client --driver-memory 512m --executor-memory 512m --num-executors 2 --total-executor-cores 2 /path/to/pi.py 10

而在 cluster 模式下,命令如下:

bin/spark-submit --master yarn --deploy-mode cluster --driver-memory 512m --executor-memory 512m --num-executors 2 --total-executor-cores 2 /path/to/pi.py 10

在 client 模式下,日志会随客户端的标准输出流输出,而在 cluster 模式下,客户端不会有日志信息和结果输出。

两种模式的详细流程

在 Client 模式下,Driver 在本地机器上运行,并与 ResourceManager 通信以申请启动 ApplicationMaster。ApplicationMaster 启动后,会向 ResourceManager 申请 Executor 内存,并在指定的 NodeManager 上启动 Executor 进程。Executor 进程启动后,会向 Driver 反向注册,并在所有 Executor 注册完成后开始执行主函数。

在 Cluster 模式下,Driver 运行在 NodeManager 的 Container 中,与 ApplicationMaster 合为一体。Driver 启动后,会向 ResourceManager 申请 Executor 内存,并在合适的 NodeManager 上启动 Executor 进程。Executor 进程启动后,会向 Driver 反向注册,并在所有 Executor 注册完成后开始执行主函数。

总结来说,Client 模式适合学习测试,而 Cluster 模式适合生产环境。两种模式的本质区别在于 Driver 程序运行的位置。在企业环境中,通常会选择 Cluster 模式以降低通信成本并提高稳定性。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值