一、环境准备
1. 操作系统
建议使用 Linux 系统,如 CentOS 7 或 Ubuntu 18.04。以 CentOS 7 为例,确保集群中所有节点的操作系统版本一致,并且已经安装好常用的基础软件包,如wget、vim等。可以通过以下命令安装:
sudo yum install wget vim -y
2. JDK 安装
Spark 运行依赖 Java 环境,需要在集群的每个节点上安装 JDK 8 或更高版本。从 Oracle 官网下载 JDK 安装包,上传至服务器后,通过以下命令解压安装:
tar -zxvf jdk-1.8.0_371.tar.gz -C /usr/local/
然后配置环境变量,编辑/etc/profile文件,在文件末尾添加以下内容:
export JAVA_HOME=/usr/local/jdk1.8.0_371export PATH=$JAVA_HOME/bin:$PATHexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
使配置生效:
source /etc/profile
验证 JDK 是否安装成功,执行 java -version 命令,若能正确显示 JDK 版本信息,则安装成功。
3. SSH 免密登录配置
为了方便集群节点之间的通信,需要配置 SSH 免密登录。在主节点上执行以下命令生成密钥对:
ssh-keygen -t rsa
一路回车使用默认设置,生成的密钥对位于 ~/.ssh/ 目录下。然后将公钥复制到各个从节点,假设从节点 IP 为 192.168.1.101、192.168.1.102,执行以下命令:
ssh-copy-id 192.168.1.101ssh-copy-id 192.168.1.102
输入密码后,即可实现主节点到从节点的免密登录。同时,在每个从节点上也执行上述步骤,实现从节点之间的免密登录。
二、Hadoop 安装与配置
1. 下载 Hadoop
从 Apache 官网下载适合的 Hadoop 版本,如 Hadoop 3.3.4。下载完成后,上传至服务器,解压到指定目录:
tar -zxvf hadoop-3.3.4.tar.gz -C /usr/local/
2. 配置 Hadoop 环境变量
编辑 /etc/profile 文件,在文件末尾添加以下内容:
export HADOOP_HOME=/usr/local/hadoop-3.3.4export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
使配置生效:
source /etc/profile
3. 核心配置文件修改
(1)core-site.xml
该文件用于配置 Hadoop 的核心属性,编辑 $HADOOP_HOME/etc/hadoop/core-site.xml 文件,添加以下内容:
<configuration><property><name>fs.defaultFS</name><value>hdfs://master:9000</value></property><property><name>hadoop.tmp.dir</name><value>/usr/local/hadoop-3.3.4/tmp</value></property>
</configuration>
其中,fs.defaultFS 指定 HDFS 的地址,master为主节点主机名;hadoop.tmp.dir 指定 Hadoop 临时文件存储目录。
(2)hdfs-site.xml
编辑 $HADOOP_HOME/etc/hadoop/hdfs-site.xml 文件,添加以下内容:
<configuration><property><name>dfs.replication</name><value>2</value></property><property><name>dfs.namenode.name.dir</name><value>/usr/local/hadoop-3.3.4/dfs/name</value></property><property><name>dfs.datanode.data.dir</name><value>/usr/local/hadoop-3.3.4/dfs/data</value></property>
</configuration>
dfs.replication指定数据块的副本数,根据实际情况调整;
dfs.namenode.name.dir 和 dfs.datanode.data.dir 分别指定 NameNode 和 DataNode 的数据存储目录。
(3)mapred-site.xml
将 $HADOOP_HOME/etc/hadoop/mapred-site.xml.template 文件复制为 mapred-site.xml,然后编辑该文件,添加以下内容:
<configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property>
</configuration>
该配置指定 MapReduce 使用 YARN 作为资源管理框架。
(4)yarn-site.xml
编辑 $HADOOP_HOME/etc/hadoop/yarn-site.xml 文件,添加以下内容:
<configuration><property><name>yarn.resourcemanager.hostname</name><value>master</value></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property>
</configuration>
yarn.resourcemanager.hostname 指定 ResourceManager 所在的主机名;yarn.nodemanager.aux-services 指定 NodeManager 辅助服务,用于支持 MapReduce 的 Shuffle 过程。
4. 格式化 HDFS
在主节点上执行以下命令格式化 HDFS:
hdfs namenode -format
5. 启动 Hadoop 集群
在主节点上执行以下命令启动 Hadoop 集群:
start-dfs.sh
start-yarn.sh
可以通过浏览器访问 http://master:9870 查看 HDFS 的 Web 界面,访问 http://master:8088 查看 YARN 的 Web 界面,确认 Hadoop 集群是否正常启动。
三、Spark 安装与配置
1. 下载 Spark
从 Spark 官网下载适合的 Spark 版本,如 Spark 3.3.2。下载完成后,上传至服务器,解压到指定目录:
tar -zxvf spark-3.3.2-bin-hadoop3.tgz -C /usr/local/
2. 配置 Spark 环境变量
编辑/etc/profile文件,在文件末尾添加以下内容:
export SPARK_HOME=/usr/local/spark-3.3.2-bin-hadoop3
export PATH=$SPARK_HOME/bin:$SPARK_HOME/sbin:$PATH
使配置生效:
source /etc/profile
3. 配置 Spark 集群
编辑$SPARK_HOME/conf/spark-env.sh.template文件,复制为spark-env.sh,然后添加以下内容:
export JAVA_HOME=/usr/local/jdk1.8.0_371
export HADOOP_CONF_DIR=/usr/local/hadoop-3.3.4/etc/hadoop
export SPARK_MASTER_IP=master
export SPARK_WORKER_MEMORY=2g
export SPARK_WORKER_CORES=2
JAVA_HOME 指定 JDK 安装目录;HADOOP_CONF_DIR指定 Hadoop 配置文件目录;SPARK_MASTER_IP 指定 Spark Master 的 IP 地址;SPARK_WORKER_MEMORY 和SPARK_WORKER_CORES 分别指定每个 Worker 节点的内存和核心数,可根据实际情况调整。
编辑 $SPARK_HOME/conf/slaves.template 文件,复制为 slaves ,在文件中添加从节点的主机名或 IP 地址,每行一个,例如:
slave1
slave2
4. 启动 Spark 集群
在主节点上执行以下命令启动 Spark 集群:
start-all.sh
可以通过浏览器访问 http://master:8080 查看 Spark 集群的 Web 界面,确认 Spark 集群是否正常启动。
四、测试集群
1. 上传测试数据到 HDFS
在本地准备一个测试数据文件,如 test.txt,然后上传到 HDFS:
hdfs dfs -mkdir /input
hdfs dfs -put test.txt /input
2. 运行 Spark 示例程序
执行一个简单的 WordCount 示例程序,统计文件中的单词数量:
spark-submit \
--class org.apache.spark.examples.JavaWordCount \
--master yarn \
/usr/local/spark-3.3.2-bin-hadoop3/examples/jars/spark-examples_2.12-3.3.2.jar \
hdfs://master:9000/input/test.txt \
hdfs://master:9000/output
程序执行完成后,可以通过以下命令查看结果:
hdfs dfs -cat /output/part-*.txt
通过以上步骤,我们成功搭建了 Spark YARN 模式的集群,并进行了简单的测试。在实际应用中,可以根据业务需求对集群进行进一步的优化和扩展,充分发挥 Spark YARN 集群在大数据处理中的强大性能。