官方网站 云服务器 专用服务器香港云主机28元月 全球云主机40+ 数据中心地区 成品网站模版 企业建站 业务咨询 微信客服 控制版面

云服务器安装Spark

admin 3个月前 (07-19) 阅读数 285 #云服务器知识
文章标签 Spark安装

✅ 错别字与语法修正(如“免维护基础设施”→“免运维基础设施”,“规避版本冲突”→更精准表述)
✅ 语句润色与节奏优化:消除冗余表达,增强专业性与可读性,避免口语化或宣传腔 补充与深化增加安全加固建议、资源隔离说明、Standalone模式局限性提醒、Python脚本健壮性改进、云环境最佳实践等关键细节
✅
原创性强化重写所有描述性段落,重构技术逻辑链条,融入一线工程经验(如端口复用风险、Worker并发调优、PySpark环境变量陷阱等)
✅
结构更清晰增设小标题层级、技术要点标注、风险提示框,便于快速扫读与实操定位
✅
符合中文技术文档规范**:术语统一(如“ECS实例”而非“服务器”)、命令高亮标准化、路径与版本明确标注


🌩️ 云服务器零基础部署 Apache Spark:从单节点验证到生产就绪集群的实战指南

在大数据技术深度融入业务系统的今天,Apache Spark 已超越“分布式计算框架”的单一定义,演变为集批处理、实时流计算(Structured Streaming)、交互式SQL分析、机器学习(MLlib)与图计算(GraphX)于一体的统一数据引擎,其内存优先的执行模型、丰富的多语言API(Scala/Java/Python/R)以及活跃的开源生态,使其成为构建现代数据平台的事实标准。

初学者常陷入两个典型困境:
🔹 本地伪分布式(Local Mode) 虽上手简单,却无法体现任务调度、Executor生命周期管理、Shuffle机制等核心分布式特性;
🔹 物理集群部署 则面临硬件采购周期长、网络拓扑复杂、Hadoop依赖链脆弱、运维成本高等现实壁垒。

而公有云弹性计算服务(如阿里云ECS、腾讯云CVM、AWS EC2、华为云ECS)恰恰提供了最优解:按需启停的计算资源、毫秒级网络延迟、跨可用区高可用能力、免运维的底层基础设施——开发者得以将全部精力聚焦于数据建模与算法逻辑本身,而非基础设施编排。

本文以 Ubuntu 22.04 LTS 系统为基准环境,基于 Spark 3.5.0(兼容Hadoop 3.x),完整呈现一套安全、轻量、可扩展、可监控的云上Spark Standalone集群部署方案,涵盖JDK/Scala环境精细化配置、预编译包选型原理、Standalone模式双节点模拟、Web UI全链路观测、PySpark端到端功能验证,并嵌入生产环境必备加固项与避坑指南。


🔧 第一步:云资源准备与安全组配置

  • 创建一台 4核8GB内存、100GB SSD系统盘 的Ubuntu 22.04 ECS实例(推荐选择同地域VPC内网互通的可用区);
  • 安全组规则必须开放以下端口(切勿全端口放行!):
    22(SSH远程管理)
    8080(Spark Master Web UI,仅限可信IP访问,生产环境建议通过Nginx反向代理+Basic Auth加固)
    7077(Master RPC通信端口,务必限制源IP为Worker节点内网地址)
    8081(Worker Web UI,同理限制访问范围)
    4040–4045(Application UI端口池,Spark动态分配,需开放连续端口段)
  • 绑定弹性公网IP(EIP),并确保实例已加入VPC默认路由表与DNS解析策略。

⚠️ 关键提醒:云厂商默认启用iptables/firewalld,即使安全组已放行,仍需在OS层确认防火墙状态:
sudo ufw status verbose → 若为active,执行 sudo ufw allow 22,8080,7077,8081 && sudo ufw allow 4040:4045/tcp


📦 第二步:基础运行时环境搭建

# 更新系统并安装核心工具链
sudo apt update && sudo apt upgrade -y
sudo apt install -y openjdk-11-jdk wget curl vim net-tools unzip jq
# 验证JDK版本(Spark 3.3+官方支持JDK 11/17,**JDK 18+因模块系统变更导致ClassLoader异常,严禁使用**)
java -version  # 输出应为 openjdk version "11.0.x"
# 永久配置JAVA_HOME(注意:Ubuntu 22.04中OpenJDK 11路径为 /usr/lib/jvm/java-11-openjdk-amd64,ARM架构请替换为 arm64)
echo 'export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64' >> ~/.bashrc
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

⚙️ 第三步:Scala运行时(非必需但强烈推荐)

尽管Spark二进制包已打包Scala库,但显式安装可解决调试器断点失效、IDE智能提示缺失等问题:

wget https://downloads.scala-lang.org/files/archive/scala-2.12.18.tgz
tar -xzf scala-2.12.18.tgz
sudo mv scala-2.12.18 /opt/scala
echo 'export SCALA_HOME=/opt/scala' >> ~/.bashrc
echo 'export PATH=$SCALA_HOME/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
scala -version  # 验证输出:Scala code runner version 2.12.18

☁️ 第四步:Hadoop兼容性决策与Spark包选型

Spark对Hadoop的依赖本质是客户端协议栈(用于访问HDFS/S3/OSS等存储),若仅使用本地文件系统(file:///)或对象存储(S3/OSS),无需独立部署Hadoop集群。

✅ 推荐方案:直接下载 spark-3.5.0-bin-hadoop3.tgz(官网预编译版)

  • 内置Hadoop 3.3.x client jar,原生支持AWS S3A、阿里云OSS、腾讯云COS等对象存储;
  • 避免手动配置core-site.xml、hdfs-site.xml等易出错的XML文件;
  • 兼容云环境常见Kerberos/LDAP认证场景(需额外配置spark.hadoop.*参数)。

❗ 注意:spark-3.5.0-bin-hadoop2.7.tgz 无法连接Hadoop 3.x集群,请严格匹配版本。


🚀 第五步:Spark部署与环境变量固化

cd /opt
sudo wget https://downloads.apache.org/spark/spark-3.5.0/spark-3.5.0-bin-hadoop3.tgz
sudo tar -xzf spark-3.5.0-bin-hadoop3.tgz
sudo mv spark-3.5.0-bin-hadoop3 spark
sudo chown -R $USER:$USER spark
# 关键环境变量(特别注意PYTHONPATH需精确匹配py4j版本)
echo 'export SPARK_HOME=/opt/spark' >> ~/.bashrc
echo 'export PATH=$SPARK_HOME/bin:$SPARK_HOME/sbin:$PATH' >> ~/.bashrc
# 动态解析py4j版本,避免硬编码(Spark 3.5.0对应py4j-0.10.9.7)
echo 'export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-*-src.zip:$SPARK_HOME/python/lib/py4j-*.zip:$PYTHONPATH' >> ~/.bashrc
source ~/.bashrc

🌐 第六步:Standalone集群启动与健康检查

# 启动Master(监听本机所有接口,实际生产中建议绑定内网IP)
$SPARK_HOME/sbin/start-master.sh
# 启动Worker(以当前主机为Worker,模拟分布式负载)
$SPARK_HOME/sbin/start-worker.sh spark://$(hostname -I | awk '{print $1}'):7077 -c 2 -m 4g
# 参数说明:-c 2(分配2个CPU核) -m 4g(分配4GB内存),避免单节点资源争抢

✅ 验证方式:

  • jps 应显示 Master 和 Worker 进程;
  • 访问 `http://<ECS
版权声明
本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主 如果涉及侵权请尽快告知,我们将会在第一时间删除。
本站原创内容未经允许不得转载,或转载时需注明出处:特网云知识库

热门