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

相关推荐
库库的数据库笔记7 分钟前
国产信创数据库的MySQL兼容性深度对比解析
大数据·数据库·mysql·oceanbase·政务
Elastic 中国社区官方博客1 小时前
我们如何通过 70 多个拉取请求,将 OpenTelemetry Java agent 迁移到 invokedynamic
java·大数据·开发语言·elasticsearch·搜索引擎·全文检索·es
珠海西格电力3 小时前
零碳园区管理系统的性能评估体系的行业标准
大数据·网络·人工智能·物联网·机器学习·架构·能源
杨先生哦3 小时前
SOC告警研判实战:海量告警降噪、误报甄别、内网风险处置全流程(上岗必用)
大数据
一线数智3 小时前
朱鹰:人的判断力,比算力更重要
大数据·人工智能
用户3610588626124 小时前
Flink ResourceManager启动流程源码深度剖析:从ClusterEntrypoint到Slot分配的完整链路
大数据
用户3610588626125 小时前
Flink ApplicationMaster启动流程源码深度剖析:从YARN提交到JobMaster启动的完整链路
大数据·flink
初心未改HD5 小时前
DSH Skill开发实战:SKILL.md是给LLM看的操作手册,不是给人看的README,踩了4个坑
java·大数据·开发语言
程序 代码狂人5 小时前
据仓库常见表类型详解(面试完整版,金融数仓适用)
大数据
阿里云大数据AI技术6 小时前
云栖实录|Hologres 5.0全新发布:Agent Native 的全模态实时数仓
大数据·人工智能·agent