Spark 集群搭建:Standalone 模式详解

在大数据处理领域,Spark 凭借其高效的内存计算能力广受青睐。搭建一个稳定、高效的 Spark 集群是充分发挥其性能的关键。本文将详细讲解如何搭建 Spark Standalone 集群。

一、环境准备

  1. 硬件要求

    • 至少准备三台服务器(一台作为主节点,两台作为从节点)。每台服务器建议配置 4 核 CPU、8GB 内存、100GB 以上硬盘空间。服务器之间的网络要高速、稳定,以确保数据传输的高效性。
  2. 软件要求

    • 操作系统:CentOS 7.x 或 Ubuntu 20.04 等 Linux 系统。

    • Java 环境:安装 JDK 1.8.x 以上版本。因为 Spark 是基于 Java 的框架,需要 Java 环境来运行。

    • Scala 环境:虽然 Spark 用 Scala 开发,但通常在集群搭建中,只要 Java 环境满足要求,Scala 相关的依赖 Spark 自带版本即可正常工作。

    • SSH 服务:用于在主节点远程管理从节点,确保在主节点能够通过 SSH 免密登录到各个从节点。

二、安装 Java 环境

  1. 在所有节点上安装

    • 下载 JDK 安装包,可以从 Oracle 官网获取。例如,下载链接为 Java Downloads | Oracle(具体链接可能因版本更新而变化)。

    • 解压安装包到指定目录,如 /usr/local/java。在终端执行以下命令: tar -zxvf jdk-8u301-linux-x64.tar.gz -C /usr/local/java

    • 配置环境变量。编辑 /etc/profile 文件,添加以下内容:

    bash 复制代码
    export JAVA_HOME=/usr/local/java/jdk1.8.0_301
    export JRE_HOME=${JAVA_HOME}/jre
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
    export PATH=${JAVA_HOME}/bin:$PATH
    • 使环境变量生效,执行 source /etc/profile 命令。

    • 验证安装是否成功,执行 java -version 命令,若输出版本信息则安装成功。

三、安装 Spark

  1. 在主节点上安装

    bash 复制代码
    export SPARK_HOME=/opt/spark-3.3.0-bin-hadoop3
    export PATH=${SPARK_HOME}/bin:${PATH}
    • 使环境变量生效,执行 source /etc/profile 命令。
  • 将 Spark 分发到从节点

    • 在主节点上,使用 scp 命令将 Spark 安装包分发到从节点。例如,从节点 IP 分别为 192.168.1.101 和 192.168.1.102,执行以下命令将安装包复制到从节点的/opt目录下:
    bash 复制代码
    scp -r /opt/spark-3.3.0-bin-hadoop3 [email protected]:/opt
    scp -r /opt/spark-3.3.0-bin-hadoop3 [email protected]:/opt
    • 在从节点上,同样配置 Spark 环境变量并使其生效。

四、配置 Spark Standalone 集群

  1. 主节点配置

    • 编辑 Spark 主节点的配置文件 conf/spark-env.sh。如果没有该文件,可以复制 conf/spark-env.sh.template 并重命名为 spark-env.sh。在文件中添加以下内容:
bash 复制代码
export SPARK_MASTER_HOST=<主节点主机名或 IP>
export SPARK_MASTER_PORT=7077
export SPARK_WORKER_CORES=2 # 根据从节点实际可用 CPU 核数设置
export SPARK_WORKER_MEMORY=4G # 根据从节点实际可用内存设置
  • 创建集群配置文件 conf/slaves。在文件中列出从节点的主机名或 IP 地址,每个从节点占一行。例如:
    bash 复制代码
    192.168.1.101
    192.168.1.102
  1. 从节点配置

    • 在每个从节点上,只需确保 Spark 的配置与主节点一致即可,特别是 SPARK_MASTER_HOST 要指向主节点的地址。

五、启动 Spark 集群

  1. 启动主节点

    • 在主节点的 Spark 安装目录下执行以下命令启动主节点: sbin/start-master.sh

    • 查看主节点是否启动成功,可以通过浏览器访问 http://<主节点主机名或 IP>:8080,若能看到 Spark 主页面,则表明主节点启动成功。

  2. 启动从节点

    • 在主节点上执行以下命令启动所有从节点: sbin/start-slaves.sh

    • 或者也可以在每个从节点上分别执行: sbin/start-slave.sh spark://<主节点主机名或 IP>:7077

    • 验证从节点是否成功加入集群,同样在浏览器访问 Spark 主页面,可以看到已连接的从节点信息。

六、测试 Spark 集群

  1. 提交任务测试

    • 在主节点上,进入 Spark 安装目录的 bin 文件夹,执行以下命令提交一个示例任务: ./spark-submit --master spark://<主节点主机名或 IP>:7077 examples/src/main/python/pi.py 1000

    • 观察任务执行过程和结果,以及在 Spark 主页面查看任务的执行情况,若任务正常完成,说明集群搭建成功并能够正常运行任务。

七、常见问题及解决方法

  1. 无法通过 SSH 免密登录

    • 检查主节点到从节点的 SSH 配置是否正确。在主节点执行 ssh-keygen 生成密钥对,然后将公钥复制到从节点的 ~/.ssh/authorized_keys 文件中。确保从节点的 SSH 服务正常运行,并且没有防火墙阻止 SSH 端口(默认 22)。
  2. 从节点无法连接主节点

    • 检查主节点的 Spark 配置文件中的 SPARK_MASTER_HOST 是否正确,以及从节点上的防火墙是否阻止了 7077 端口。可以尝试在主节点上执行 netstat -tunlp | grep 7077 查看主节点是否正确监听了该端口。

八、总结

通过以上步骤,我们成功搭建了一个 Spark Standalone 集群。这个集群为大数据处理提供了一个高效的计算平台。在实际应用中,我们可以根据业务需求进一步优化集群配置,如调整内存分配、增加节点数量等,以满足大规模数据处理的要求。同时,也要定期对集群进行维护和监控,确保其稳定运行。

希望这篇博客能帮助你顺利搭建起自己的 Spark 集群,开启大数据处理之旅!如果你在搭建过程中遇到任何问题,欢迎在评论区留言交流。

相关推荐
种时光的人9 分钟前
Java多线程的暗号密码:5分钟掌握wait/notify
java·开发语言
猫猫头有亿点炸14 分钟前
C语言中的递归1.0
c语言·开发语言
猫猫头有亿点炸32 分钟前
C语言中小写字母转大写字母
c语言·开发语言·算法
和算法死磕到底1 小时前
ubantu18.04(Hadoop3.1.3)Hive3.1.2安装指南
大数据·数据库·hive·hadoop·mysql·hdfs·dubbo
阿里云大数据AI技术1 小时前
立马耀:通过阿里云 Serverless Spark 和 Milvus 构建高效向量检索系统,驱动个性化推荐业务
大数据·spark·serverless
论迹1 小时前
【JavaEE】-- MyBatis操作数据库(1)
java·开发语言·数据库·java-ee·mybatis
用户199701080181 小时前
手把手教你搭建 cssbuy 式淘宝代购系统
大数据·php
景天科技苑1 小时前
【Rust所有权机制】Rust所有权机制详细解析与应用实战
开发语言·后端·rust·rust所有权·引用与借用·rust内存安全
柠好Ninghao2 小时前
C++入门基础(2)
开发语言·c++
掘金-我是哪吒2 小时前
分布式微服务系统架构第117集:Kafka发送工具,标准ASCII
分布式·微服务·kafka·系统架构·linq