
Spark on YARN集群模式搭建全攻略
387KB |
更新于2024-09-02
| 187 浏览量 | 5 评论 | 举报
收藏
"Spark环境搭建——on yarn集群模式"
Spark on YARN集群模式的搭建教程主要涉及以下几个关键步骤和概念:
1. 准备工作
在搭建Spark on YARN集群模式前,首先要确保Hadoop环境已经正确安装并启动,包括HDFS(Hadoop分布式文件系统)和YARN(Yet Another Resource Negotiator,资源调度器)。由于Spark应用是在YARN上运行的,因此Hadoop的这两个组件是必不可少的基础设施。
2. 安装单机版Spark
尽管我们需要在YARN集群上运行Spark应用,但并不意味着我们需要在每个节点上都安装完整的Spark集群。只需要一个单机版的Spark,用于提交任务到YARN。这个单机版Spark提供了`spark-shell`和`spark-submit`等命令,用于与YARN交互。
3. 配置修改
在配置Spark环境时,需要在`spark-env.sh`文件中添加`HADOOP_CONF_DIR`环境变量,该变量指定了Hadoop配置文件的路径。这样Spark才能正确地与Hadoop通信。例如:
```
export HADOOP_CONF_DIR=/export/servers/hadoop/etc/hadoop
```
4. 集群模式(Cluster Mode)
- Cluster模式是Spark on YARN的一种部署方式,适用于企业生产环境。在这种模式下,Driver程序并不运行在提交任务的工作站上,而是作为一个YARN的应用管理器(Application Manager)在集群内部运行。Driver与Executor都在YARN集群内,提高了数据处理的效率和隔离性。
5. Driver的角色
Driver是执行Spark应用的主程序,它负责运行`main()`函数,并创建SparkContext对象,从而初始化整个Spark应用。在Cluster模式下,Driver由YARN负责管理和调度。
6. 提交任务(spark-submit)
使用`spark-submit`命令将Spark应用提交到YARN集群。例如:
```
/export/servers/spark/bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
--driver-memory 1g \
--executor-memory 1g \
--executor-cores 2 \
--queue ...
```
这里,`--master`参数指定使用YARN作为Master,`--deploy-mode cluster`表示使用Cluster模式,其他参数如`--driver-memory`、`--executor-memory`和`--executor-cores`分别设置Driver和Executor的内存和核心数量。
7. Client模式与Cluster模式的区别
- Client模式下,Driver程序运行在提交任务的工作站上,与YARN通信的职责由提交任务的工作站承担。这种方式适用于交互式应用或者调试,因为它允许快速反馈,但可能不适合大规模生产环境。
- Cluster模式则更适合大规模处理,因为Driver运行在YARN内部,与应用程序的其他部分保持在同一集群中,降低了网络延迟,提高了整体性能和容错性。
通过以上步骤,可以成功地在YARN集群上搭建并运行Spark应用,充分利用Hadoop的资源管理和调度能力。理解并掌握这些知识点对于进行大数据处理和分析至关重要。
相关推荐



















资源评论

玛卡库克
2025.05.30
Alice的这篇教程非常实用,详细介绍了Spark on YARN集群模式的搭建流程。

daidaiyijiu
2025.05.23
文档中提及的cluster模式与client模式的区别,是理解Spark运行机制的关键。

城北伯庸
2025.05.18
适合初学者的Spark环境搭建指南,步骤清晰,易于理解。

被要求改名字
2025.03.07
通过本文可以轻松掌握如何将Spark程序提交至YARN集群运行。

开眼旅行精选
2025.02.10
对于想要深入学习Hadoop生态系统的朋友,这篇文章是个不错的起点。

weixin_38642285
- 粉丝: 5
最新资源
- Flutter自动生成MDI图标包与JavaScript开发的完美结合
- 打造可执行独立容器:从Docker映像到单文件应用
- Spring课程集体比赛与网络服务器实践教学
- 探索DAppNodePackage-bitwarden:简化密码安全存储方案
- 使用REST-Explorer学习REST操作:一个GUI界面工具
- 开源JavaScript纸钱包生成器:安全性与轻巧并重
- Markdown Lint: Docker中Markdown文件的统一规范工具
- Ruby开发者必备:Wargaming.net API的使用指南
- 利用Docker容器操作libguestfs管理虚拟磁盘映像
- 自动化可视化更新:探索Debian下的计算机语言基准
- AutoDoc:Java源码分析与版本比较工具
- 基于DFT的Matlab源代码助力3D打印金属表面计算
- ALOE++: 探索软件无线电的DFT与分布式实时处理
- TWAIN应用程序:夫妻计划制定与执行的虚拟视觉板工具
- CyberveinDB: 基于Redis和Tendermint的去中心化KV数据库系统
- Gulp静态网站生成器:打造更优化的网页结构
- Matlab实现独立于传感器的照明估计
- 构建于WebRTC之上的对等覆盖网络:woverlay介绍
- Forgo:简化JSX开发的4KB轻量级Web应用库
- Python开发的初学者渗透测试工具包BabySploit
- Pythonic智能合约语言Vyper的安装与入门
- DevOps World 2020: 使用Docker, Jenkins和Minikube实现生活简化
- Matlab实现希尔伯特-黄变换详细教程
- D3与R结合:创建动态文字云界面的教程