Spark YARN 模式集群搭建指南
一、环境准备
硬件准备:准备多台服务器作为集群节点,至少包含 1 个主节点(Master Node)和多个工作节点(Worker Node)。各节点的硬件配置根据实际业务需求而定,例如每台节点建议配备 8GB 以上内存、多核心 CPU 以及足够的磁盘空间。
软件准备:确保所有节点安装相同版本的 Linux 操作系统(如 CentOS 7),并且各节点之间网络互通,可通过ping命令测试节点间的网络连接。同时,关闭所有节点的防火墙和 SELinux,避免网络通信受到限制。
TypeScript
取消自动换行
复制
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 关闭SELinux
sed -i's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
setenforce 0
时间同步:为保证集群各节点时间一致,所有节点需配置时间同步服务。可以使用 NTP(Network Time Protocol)进行时间同步,以阿里云 NTP 服务器为例,执行以下命令:
TypeScript
取消自动换行
复制
yum install ntp -y
vim /etc/ntp.conf
# 在文件中添加以下内容
server ntp.aliyun.com iburst
# 重启NTP服务
systemctl restart ntpd
systemctl enable ntpd
二、安装配置 JDK
下载 JDK:从 Oracle 官网下载适合 Linux 系统的 JDK 安装包(如 JDK 1.8),将安装包上传至所有节点的指定目录(如/opt/software)。
解压安装:在所有节点上执行以下命令解压 JDK 安装包:
TypeScript
取消自动换行
复制
tar -zxvf jdk-8uxxx-linux-x64.tar.gz -C /opt/
配置环境变量:在所有节点上编辑/etc/profile文件,添加以下内容:
TypeScript
取消自动换行
复制
export JAVA_HOME=/opt/jdk1.8.0_xxx
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
保存文件后,执行source /etc/profile使环境变量生效。
4. 验证安装:在所有节点上执行java -version命令,若显示 JDK 版本信息,则说明 JDK 安装配置成功。
三、安装配置 Hadoop
下载 Hadoop:从 Apache 官网下载 Hadoop 安装包(如 Hadoop 3.3.4),将安装包上传至所有节点的/opt/software目录。
解压安装:在所有节点上执行以下命令解压 Hadoop 安装包:
TypeScript
取消自动换行
复制
tar -zxvf hadoop-3.3.4.tar.gz -C /opt/
配置 Hadoop 环境变量:在所有节点上编辑/etc/profile文件,添加以下内容:
TypeScript
取消自动换行
复制
export HADOOP_HOME=/opt/hadoop-3.3.4
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
保存文件后,执行source /etc/profile使环境变量生效。
4. 配置核心文件
core-site.xml:在/opt/hadoop-3.3.4/etc/hadoop目录下编辑core-site.xml文件,添加以下内容:
TypeScript
取消自动换行
复制
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9820</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop-3.3.4/tmp</value>
</property>
</configuration>
其中master为 HDFS 主节点主机名,可根据实际情况修改。
hdfs-site.xml:在/opt/hadoop-3.3.4/etc/hadoop目录下编辑hdfs-site.xml文件,添加以下内容:
TypeScript
取消自动换行
复制
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
dfs.replication表示数据副本数,可根据集群节点数量调整。
mapred-site.xml:在/opt/hadoop-3.3.4/etc/hadoop目录下编辑mapred-site.xml文件,添加以下内容:
TypeScript
取消自动换行
复制
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
yarn-site.xml:在/opt/hadoop-3.3.4/etc/hadoop目录下编辑yarn-site.xml文件,添加以下内容:
TypeScript
取消自动换行
复制
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
配置 SSH 免密登录:在主节点上执行以下命令生成 SSH 密钥对:
TypeScript
取消自动换行
复制
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
将主节点的公钥复制到所有节点(包括主节点自身):
TypeScript
取消自动换行
复制
ssh-copy-id master
ssh-copy-id worker1
ssh-copy-id worker2
# 依次类推,将公钥复制到所有工作节点
格式化 HDFS:在主节点上执行以下命令格式化 HDFS 文件系统:
TypeScript
取消自动换行
复制
hdfs namenode -format
启动 Hadoop 集群:在主节点上执行以下命令启动 Hadoop 集群:
TypeScript
取消自动换行
复制
start-dfs.sh
start-yarn.sh
通过浏览器访问http://master:9870(HDFS 管理界面)和http://master:8088(YARN 管理界面),查看 Hadoop 集群运行状态。
四、安装配置 Spark
下载 Spark:从 Apache 官网下载适合 Hadoop 版本的 Spark 安装包(如 Spark 3.3.2-bin-hadoop3.3),将安装包上传至所有节点的/opt/software目录。
解压安装:在所有节点上执行以下命令解压 Spark 安装包:
TypeScript
取消自动换行
复制
tar -zxvf spark-3.3.2-bin-hadoop3.3.tgz -C /opt/
配置 Spark 环境变量:在所有节点上编辑/etc/profile文件,添加以下内容:
TypeScript
取消自动换行
复制
export SPARK_HOME=/opt/spark-3.3.2-bin-hadoop3.3
export PATH=$SPARK_HOME/bin:$SPARK_HOME/sbin:$PATH
保存文件后,执行source /etc/profile使环境变量生效。
4. 配置 Spark 文件
spark-env.sh:在/opt/spark-3.3.2-bin-hadoop3.3/conf目录下复制spark-env.sh.template文件并重命名为spark-env.sh,编辑该文件,添加以下内容:
TypeScript
取消自动换行
复制
export JAVA_HOME=/opt/jdk1.8.0_xxx
export HADOOP_CONF_DIR=/opt/hadoop-3.3.4/etc/hadoop
export SPARK_MASTER_IP=master
export SPARK_WORKER_MEMORY=4g
其中JAVA_HOME根据实际 JDK 安装路径修改,SPARK_WORKER_MEMORY可根据节点内存情况调整。
slaves:在/opt/spark-3.3.2-bin-hadoop3.3/conf目录下复制slaves.template文件并重命名为slaves,编辑该文件,添加所有工作节点的主机名或 IP 地址,每行一个。
启动 Spark 集群:在主节点上执行以下命令启动 Spark 集群:
TypeScript
取消自动换行
复制
start-all.sh
通过浏览器访问http://master:8080(Spark 管理界面),查看 Spark 集群运行状态。
五、测试验证
运行 Spark 示例程序:在主节点上执行以下命令,运行 Spark 自带的 WordCount 示例程序:
TypeScript
取消自动换行
复制
spark-submit \
--class org.apache.spark.examples.JavaWordCount \
--master yarn \
/opt/spark-3.3.2-bin-hadoop3.3/examples/jars/spark-examples_2.12-3.3.2.jar \
hdfs://master:9820/user/hadoop/input.txt \
hdfs://master:9820/user/hadoop/output
其中input.txt为 HDFS 上的输入文件路径,output为输出文件路径。
2. 查看运行结果:程序运行完成后,通过 HDFS 管理界面或命令行查看输出结果:
TypeScript
取消自动换行
复制
hdfs dfs -cat hdfs://master:9820/user/hadoop/output/part-*.txt
若能正确显示单词统计结果,则说明 Spark YARN 模式集群搭建成功。