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

相关推荐
lilye663 小时前
精益数据分析(79/126):从黏性到爆发——病毒性增长的三种形态与核心指标解析
大数据·数据挖掘·数据分析
难以触及的高度4 小时前
优化Hadoop性能:如何修改Block块大小
大数据·hadoop·分布式
Themberfue6 小时前
RabbitMQ ⑥-集群 || Raft || 仲裁队列
linux·运维·分布式·后端·rabbitmq·ruby
数数科技的数据干货6 小时前
如何避免你的高付费用户活跃度下降?
大数据·人工智能·游戏
Leo.yuan6 小时前
bi软件是什么?bi软件是做什么用的?
大数据·数据仓库·信息可视化·数据分析·数字化转型
数据要素X6 小时前
【数据架构03】数据治理架构篇
大数据·数据库·数据仓库·架构
小小工匠6 小时前
分布式缓存:缓存的三种读写模式及分类
分布式·缓存·read/write·cache aside·write behind
搞不懂语言的程序员7 小时前
Elasticsearch简单集成java框架方式。
java·大数据·elasticsearch
菲路普科技8 小时前
作业过程管控——看安全生产信息化平台全方位解决方案
大数据·人工智能
叫我黎大侠8 小时前
使用 LibreOffice 实现各种文档格式转换(支持任何开发语言调用 和 Linux + Windows 环境)[全网首发,保姆级教程,建议收藏]
java·大数据·linux·开发语言·python·c#·php