如何在CentOS系统上安装Spark?分步指南

CentOS系统下Spark部署指南

Apache Spark作为一款高效的大数据处理框架,凭借其内存计算和分布式处理能力,已成为企业级数据分析的核心工具之一,本文将以CentOS 7/8系统为例,逐步解析Spark的完整安装流程,并提供性能优化建议与常见问题解决方案。

**环境准备

1、系统更新与依赖安装

执行以下命令更新系统并安装基础工具:

   sudo yum update -y
   sudo yum install -y wget curl tar java-1.8.0-openjdk-devel

注意:Spark依赖Java 8或11,推荐使用OpenJDK 8以避免兼容性问题。

2、配置主机名与SSH免密登录(可选)

若需搭建集群环境,需配置各节点的主机名解析:

   sudo hostnamectl set-hostname master  # 主节点命名为master
   echo "192.168.1.100 master" | sudo tee -a /etc/hosts

生成SSH密钥并分发至各节点:

   ssh-keygen -t rsa
   ssh-copy-id master  # 若为单机测试可跳过此步骤

**Spark安装与配置

1、下载与解压安装包

访问[Apache Spark官网](https://spark.apache.org/downloads.html)获取最新稳定版链接(例如Spark 3.3.1):

   wget https://dlcdn.apache.org/spark/spark-3.3.1/spark-3.3.1-bin-hadoop3.tgz
   tar -xzvf spark-3.3.1-bin-hadoop3.tgz
   sudo mv spark-3.3.1-bin-hadoop3 /opt/spark

2、环境变量配置

编辑/etc/profile文件,追加以下内容:

   export SPARK_HOME=/opt/spark
   export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

加载配置并验证:

   source /etc/profile
   spark-shell --version  # 显示版本号即成功

3、基础参数调优

修改$SPARK_HOME/conf/spark-env.sh

   cp $SPARK_HOME/conf/spark-env.sh.template $SPARK_HOME/conf/spark-env.sh
   echo "export SPARK_MASTER_HOST=master" >> $SPARK_HOME/conf/spark-env.sh
   echo "export SPARK_WORKER_MEMORY=4g" >> $SPARK_HOME/conf/spark-env.sh  # 根据内存调整

**运行验证与基础操作

1、启动单机模式

执行以下命令启动Spark独立集群:

   $SPARK_HOME/sbin/start-all.sh

通过jps命令查看进程,应包含MasterWorker,访问http://服务器IP:8080可查看Web监控界面。

2、提交测试任务

运行内置的Pi计算示例验证集群:

   spark-submit --class org.apache.spark.examples.SparkPi \
   --master spark://master:7077 \
   $SPARK_HOME/examples/jars/spark-examples_2.12-3.3.1.jar 1000

若输出包含Pi is roughly 3.1415则表明运行成功。

**常见问题排查

Java版本冲突

若出现UnsupportedClassVersionError,使用java -version检查版本,并通过alternatives --config java切换至Java 8。

端口占用问题

Spark默认使用8080(Web UI)和7077(Master通信端口),若被占用可修改spark-env.sh中的SPARK_MASTER_WEBUI_PORT参数。

内存不足报错

调整spark-env.sh中的SPARK_WORKER_MEMORYSPARK_DRIVER_MEMORY值,建议保留至少1GB给系统进程。

**性能优化建议

1、数据本地化配置

spark-defaults.conf中增加:

   spark.locality.wait=3s  
   spark.scheduler.maxRegisteredResourcesWaitingTime=300s

2、启用动态资源分配

添加以下参数实现资源弹性调度:

   spark.dynamicAllocation.enabled=true
   spark.shuffle.service.enabled=true

3、序列化优化

使用Kryo序列化提升性能:

   conf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")

从实际运维经验看,Spark的稳定性高度依赖硬件资源配置与参数调优,对于生产环境,建议结合监控工具(如Prometheus+Granafa)实时跟踪Executor内存使用情况,若需处理TB级数据,可进一步研究RDD持久化策略与Shuffle优化技巧。

发布于 2025-05-22 13:33:57
分享
海报
215
上一篇:如何在CentOS上配置iptables防火墙? 下一篇:CentOS所有版本有哪些?完整列表及特点解析
目录

    忘记密码?

    图形验证码