如何搭建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 集群在大数据处理中的强大性能。

相关推荐
计算所陈老师22 分钟前
基于论文的大模型应用:基于SmartETL的arXiv论文数据接入与预处理(四)
大数据·人工智能·数据治理·信息抽取
deepdata_cn1 小时前
开源分布式数据库(TiDB)
数据库·分布式
方二华4 小时前
Apache Flink的架构设计与运行流程说明
大数据·flink·apache
啊喜拔牙5 小时前
如何在idea中写spark程序
java·spark·intellij-idea
IT成长日记5 小时前
【Hive入门】Hive与Spark SQL深度集成:通过Spark ThriftServer高效查询Hive表
hive·sql·spark
依年南台5 小时前
如何搭建spark yarn模式的集群
大数据·分布式·spark
windwind20005 小时前
(转)角色与动画的性能优化 | UnrealFest演讲干货
大数据·游戏·青少年编程·性能优化·创业创新
z_mazin7 小时前
IP伪装、代理池与分布式爬虫
分布式·爬虫·tcp/ip
yangmf20407 小时前
如何防止 ES 被 Linux OOM Killer 杀掉
大数据·linux·elasticsearch·搜索引擎·全文检索