如何搭建spark yarn模式的集群

一、环境准备​

1. 操作系统​

建议使用 Linux 系统,如 CentOS 7 或 Ubuntu 18.04。以 CentOS 7 为例,确保集群中所有节点的操作系统版本一致,并且已经安装好常用的基础软件包,如wget、vim等。可以通过以下命令安装:​

Scala 复制代码
sudo yum install wget vim -y

​2. JDK 安装​

Spark 运行依赖 Java 环境,需要在集群的每个节点上安装 JDK 8 或更高版本。从 Oracle 官网下载 JDK 安装包,上传至服务器后,通过以下命令解压安装:​​

Scala 复制代码
tar -zxvf jdk-1.8.0_371.tar.gz -C /usr/local/​

​然后配置环境变量,编辑/etc/profile文件,在文件末尾添加以下内容:​

Scala 复制代码
export JAVA_HOME=/usr/local/jdk1.8.0_371​

export PATH=$JAVA_HOME/bin:$PATH​

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar​

​使配置生效:​

Scala 复制代码
source /etc/profile​

​验证 JDK 是否安装成功,执行 java -version 命令,若能正确显示 JDK 版本信息,则安装成功。​

3. SSH 免密登录配置​

为了方便集群节点之间的通信,需要配置 SSH 免密登录。在主节点上执行以下命令生成密钥对:​

Scala 复制代码
ssh-keygen -t rsa​

一路回车使用默认设置,生成的密钥对位于 ~/.ssh/ 目录下。然后将公钥复制到各个从节点,假设从节点 IP 为192.168.1.101192.168.1.102,执行以下命令:​

Scala 复制代码
ssh-copy-id 192.168.1.101​

ssh-copy-id 192.168.1.102​

输入密码后,即可实现主节点到从节点的免密登录。同时,在每个从节点上也执行上述步骤,实现从节点之间的免密登录。​

二、Hadoop 安装与配置​

1. 下载 Hadoop​

从 Apache 官网下载适合的 Hadoop 版本,如 Hadoop 3.3.4。下载完成后,上传至服务器,解压到指定目录:​

Scala 复制代码
tar -zxvf hadoop-3.3.4.tar.gz -C /usr/local/​

2. 配置 Hadoop 环境变量​

编辑 /etc/profile 文件,在文件末尾添加以下内容:​

Scala 复制代码
export HADOOP_HOME=/usr/local/hadoop-3.3.4​

export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH​

使配置生效:​

Scala 复制代码
source /etc/profile​

​3. 核心配置文件修改​

(1)core-site.xml​

该文件用于配置 Hadoop 的核心属性,编辑 $HADOOP_HOME/etc/hadoop/core-site.xml 文件,添加以下内容:​​

Scala 复制代码
<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 文件,添加以下内容:​

Scala 复制代码
<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,然后编辑该文件,添加以下内容:​

Scala 复制代码
<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 文件,添加以下内容:​

Scala 复制代码
<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:​

Scala 复制代码
hdfs namenode -format

5. 启动 Hadoop 集群​

在主节点上执行以下命令启动 Hadoop 集群:​

Scala 复制代码
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。下载完成后,上传至服务器,解压到指定目录:​

Scala 复制代码
tar -zxvf spark-3.3.2-bin-hadoop3.tgz -C /usr/local/​

2. 配置 Spark 环境变量​

编辑/etc/profile文件,在文件末尾添加以下内容:​

Scala 复制代码
export SPARK_HOME=/usr/local/spark-3.3.2-bin-hadoop3
export PATH=$SPARK_HOME/bin:$SPARK_HOME/sbin:$PATH

使配置生效:​

Scala 复制代码
source /etc/profile

3. 配置 Spark 集群​

编辑$SPARK_HOME/conf/spark-env.sh.template文件,复制为spark-env.sh,然后添加以下内容:​

Scala 复制代码
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 地址,每行一个,例如:​

Scala 复制代码
slave1
slave2

4. 启动 Spark 集群​

在主节点上执行以下命令启动 Spark 集群:​

Scala 复制代码
start-all.sh

可以通过浏览器访问 http://master:8080 查看 Spark 集群的 Web 界面,确认 Spark 集群是否正常启动。​

四、测试集群​

1. 上传测试数据到 HDFS​

在本地准备一个测试数据文件,如 test.txt,然后上传到 HDFS:​

Scala 复制代码
hdfs dfs -mkdir /input
hdfs dfs -put test.txt /input

2. 运行 Spark 示例程序​

执行一个简单的 WordCount 示例程序,统计文件中的单词数量:​

Scala 复制代码
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

程序执行完成后,可以通过以下命令查看结果:​

Scala 复制代码
hdfs dfs -cat /output/part-*.txt

通过以上步骤,我们成功搭建了 Spark YARN 模式的集群,并进行了简单的测试。在实际应用中,可以根据业务需求对集群进行进一步的优化和扩展,充分发挥 Spark YARN 集群在大数据处理中的强大性能。

相关推荐
摘星编程35 分钟前
华为云Flexus+DeepSeek征文 | 模型即服务(MaaS)安全攻防:企业级数据隔离方案
大数据·人工智能·安全·华为云·deepseek
fajianchen41 分钟前
如何调优Kafka
分布式·kafka
没毛的刷子41 分钟前
kafka版本升级3.5.1-->3.9.1(集群或单体步骤一致)
分布式·kafka
yuren_xia1 小时前
RabbitMQ的交换机和队列概念
分布式·rabbitmq
木鱼时刻1 小时前
从大数据到大模型:我们是否在重蹈覆覆辙
大数据
liuze4082 小时前
VMware虚拟机集群上部署HDFS集群
大数据·hadoop·hdfs
BAGAE2 小时前
使用 Flutter 在 Windows 平台开发 Android 应用
android·大数据·数据结构·windows·python·flutter
TechubNews2 小时前
为何京东与蚂蚁集团竞相申请稳定币牌照?
大数据·人工智能
成长之路5146 小时前
【面板数据】中国与世界各国新能源汽车进出口数据-分类别与不分类别(2017-2024年)
大数据·汽车
说私域6 小时前
传统企业数字化转型:以定制开发开源 AI 智能名片 S2B2C 商城小程序源码为核心的销售环节突破
大数据·人工智能·开源