### 搭建 Spark on Yarn 模式的集群配置步骤
#### 1. 环境准备
在搭建 Spark on Yarn 的集群之前,需要确保 Hadoop 和 YARN 已经正常部署并运行。以下是必要的准备工作:
- 安装 Java JDK 并设置 `JAVA_HOME` 环境变量。
- 部署 Hadoop 集群,并确认 HDFS 和 YARN 正常工作。
#### 2. 下载与解压 Spark
下载适合版本的 Spark 压缩包,并将其解压缩至指定路径。例如:
```bash
wget https://archive.apache.org/dist/spark/spark-3.0.0/spark-3.0.0-bin-hadoop2.7.tgz
tar -xzvf spark-3.0.0-bin-hadoop2.7.tgz
mv spark-3.0.0-bin-hadoop2.7 /usr/local/spark
```
#### 3. 修改 Spark 配置文件
进入 Spark 的配置目录 `/usr/local/spark/conf`,并对以下文件进行修改:
##### (1) `spark-env.sh`
创建或编辑该文件以设置环境变量:
```bash
export SPARK_DIST_CLASSPATH=$(hadoop classpath)
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export HADOOP_CONF_DIR=/etc/hadoop/conf
```
此操作是为了让 Spark 能够识别 Hadoop 的类路径以及相关配置。
##### (2) `spark-defaults.conf`
启用事件日志记录功能以便于调试和监控:
```properties
spark.eventLog.enabled true
spark.eventLog.dir hdfs://<namenode-host>:9820/spark/eventLogs
spark.eventLog.compress true
spark.yarn.historyServer.address <history-server-host>:18080
spark.yarn.jars hdfs://<namenode-host>:9820/spark/jars/*
```
其中 `<namenode-host>` 是 HDFS NameNode 的主机名,而 `<history-server-host>` 则是 Spark History Server 所在的主机名称。
##### (3) `slaves`
如果计划使用独立模式作为备用方案,则需在此处定义 Worker 节点列表;但在纯 YARN 场景下可以忽略此项。
#### 4. 启动服务
完成以上配置之后即可依次启动所需的服务组件:
- **HDFS 和 YARN**: 使用命令 `start-dfs.sh` 及 `start-yarn.sh` 来开启分布式存储系统及其资源调度框架;
- **Spark History Server**: 如果启用了历史服务器支持的话,可通过执行脚本来激活它:
```bash
sbin/start-history-server.sh
```
#### 5. 提交作业测试
最后通过提交一个简单的例子来验证整个流程是否通畅无误。比如利用 Cluster Mode 方式运行经典的 Pi 计算案例:
```bash
./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
--driver-memory 1g \
--executor-memory 1g \
--executor-cores 1 \
examples/jars/spark-examples*.jar 10
```
这里指定了驱动器内存大小为 1GB (`--driver-memory`) ,每个执行者分配同样容量(`--executor-memory`)加上单核 CPU 处理能力(`--executor-cores`). 参数后面跟着的是 JAR 文件位置连同其主入口函数参数值.
---
### 注意事项
为了保证最佳性能体验,在实际生产环境中可能还需要进一步调整更多高级选项如动态分配策略等细节设定。