大数据 -81 Spark 手把手搭建 分布式计算环境:从下载配置到多节点部署

点一下关注吧!!!非常感谢!!持续更新!!!
🚀 AI 篇持续更新中!(长期更新)
AI 炼丹日志-31- 千呼万唤始出来 GPT-5 发布!“快的模型 + 深度思考模型 + 实时路由”,持续打造实用 AI 工具指南!📐🤖
💻 Java 篇正式开启!(300 篇)
目前 2025 年 08 月 18 日更新到:Java-100 深入浅出 MySQL 事务隔离级别:读未提交、已提交、可重复读与串行化 MyBatis 已完结,Spring 已完结,Nginx 已完结,Tomcat 已完结,分布式服务正在更新!深入浅出助你打牢基础!
📊 大数据板块已完成多项干货更新(300 篇):
包括 Hadoop、Hive、Kafka、Flink、ClickHouse、Elasticsearch 等二十余项核心组件,覆盖离线+实时数仓全栈!大数据-278 Spark MLib - 基础介绍 机器学习算法 梯度提升树 GBDT 案例 详解

章节内容
上节我们完成了:
Spark 简单介绍
Spark 的特点
Spark 与 Hadoop MapReduce 框架对比
Spark 的系统架构
Spark 的部署模式

Spark 简介
上节我们已经介绍过了,这里为了保持完整性,简单的再扩展介绍一下。Spark(Apache Spark)是一个快速、通用的分布式数据处理框架,旨在以高效的方式进行大规模数据的处理和分析。它最初由加利福尼亚大学伯克利分校 AMPLab 开发,并在 2010 年开源。如今,Spark 已经成为大数据处理领域的重要工具之一,广泛应用于许多行业。Spark 凭借其速度、通用性和易用性,成为大数据处理领域的一项关键技术。无论是处理批量数据还是实时数据,亦或是进行机器学习和图计算,Spark 都提供了强大的支持。如果你在寻找一个高效的大数据处理框架,Spark 无疑是一个值得考虑的选择。
核心特性
速度优势
内存计算引擎:Spark 采用基于内存的分布式计算框架,通过在集群内存中缓存中间计算结果,显著减少磁盘 I/O 操作。典型场景下,迭代算法(如机器学习)性能提升尤为明显,相比 Hadoop MapReduce 可实现 10-100 倍的加速。
智能缓存机制:支持 MEMORY_ONLY、MEMORY_AND_DISK 等多种存储级别策略,当内存不足时自动将部分数据溢出到磁盘,例如在 Spark SQL 查询中,常用表可被持久化缓存以加速后续查询。
执行优化:通过 DAG 调度器将任务分解为有向无环图,配合 Tungsten 引擎的二进制内存管理,减少 JVM 对象开销。例如,在 TPC-DS 基准测试中,Spark 3.0 比早期版本性能提升 2 倍以上。
通用计算平台
多语言支持:提供 Java/Scala 原生 API(核心实现)、Python(PySpark)和 R(SparkR)接口。如在 Jupyter Notebook 中可直接使用 PySpark 进行数据分析。
统一计算引擎:
批处理:通过 RDD/DataFrame 处理 PB 级数据
流处理:Structured Streaming 支持微批和持续处理模式
机器学习:MLlib 库包含常见算法实现(如随机森林、K-means)
图计算:GraphX 支持 Pregel API,适用于社交网络分析等场景
生态系统集成:可与 HDFS、Hive、Kafka 等大数据组件无缝对接,例如通过 Spark Streaming 消费 Kafka 实时数据流。
开发者友好性
抽象层次:
基础 RDD API 提供分布式集合操作(map/reduce/filter 等)
DataFrame API 引入 schema 概念,支持 SQL 式操作
最新 Dataset API 结合类型安全与优化优势
交互式工具:
自带 spark-shell(Scala)和 pyspark(Python)REPL 环境
支持 Zeppelin、Jupyter 等笔记本工具
Spark SQL CLI 提供类 Hive 的查询体验
学习资源:保持与 Hadoop 相似的 MapReduce 编程范式,但提供更简洁的 lambda 表达式写法,例如 WordCount 示例代码量减少 60%。
弹性扩展能力
集群部署:
支持 Standalone 模式快速搭建测试集群
原生集成 YARN,可复用 Hadoop 集群资源
通过 K8s Operator 实现容器化部署
资源调度:
动态资源分配(DRA)根据负载自动调整 executor 数量
支持公平调度(Fair Scheduler)满足多租户需求
规模验证:实际生产环境中已验证可处理 EB 级数据,如在某互联网公司的推荐系统每天处理超过 5PB 的用户行为数据。
Spark 的组件
Spark Core
作为 Spark 的核心基础模块,Spark Core 提供了分布式计算的基本功能。它实现了以下关键机制:
内存管理:采用弹性分布式数据集(RDD)的内存缓存机制,通过内存计算显著提升计算速度
任务调度:基于 DAG(有向无环图)的任务调度系统,支持任务依赖关系管理和优化执行
容错机制:通过 RDD 的 Lineage(血统)信息实现数据恢复,无需数据复制即可保证容错
存储系统交互:支持 HDFS、HBase、Cassandra 等多种存储系统,提供统一的访问接口
典型应用场景:ETL 处理、迭代算法(如 PageRank)、交互式数据分析等
Spark SQL
结构化数据处理模块,主要功能包括:
DataFrame API:提供类似 R/Pandas 的 DataFrame 抽象,支持结构化操作
SQL 支持:完整兼容 ANSI SQL 标准,支持常见 SQL 操作
数据源集成:
内置支持 Parquet、JSON、JDBC 等格式
通过 Hive 兼容层可访问 Hive 元数据和表数据
支持自定义数据源扩展
优化器:基于 Catalyst 的查询优化器,自动优化执行计划
应用示例:数据仓库分析、报表生成、交互式查询等
Spark Streaming
实时流处理解决方案,特点包括:
微批处理架构:将流数据划分为小批次(如 2 秒)进行处理
精确一次语义:保证每个记录只被处理一次
窗口操作:支持滑动窗口、统计窗口等时间窗口操作
与批处理集成:可与 Spark SQL、MLlib 等无缝结合
典型应用场景:实时监控、日志分析、实时推荐系统等
MLlib
分布式机器学习库,主要提供:
算法实现:
分类:逻辑回归、决策树、随机森林等
回归:线性回归、保序回归等
聚类:K-means、LDA 等
协同过滤:ALS(交替最小二乘)
工具链:
特征工程:TF-IDF、Word2Vec、标准化等
流水线:提供类似 scikit-learn 的 Pipeline API
模型评估:交叉验证、多种评估指标
模型持久化:支持模型保存和加载
应用场景:用户画像、推荐系统、风险预测等
GraphX
图计算框架,主要功能:
图抽象:提供属性图(带属性的顶点和边)表示
图操作:
基础操作:子图筛选、顶点/边映射等
图算法:PageRank、连通组件、三角形计数等
图并行计算:基于 Pregel API 实现大规模图计算
与 RDD 互操作:可与普通 RDD 相互转换
典型应用:社交网络分析、交通网络分析、推荐系统等
使用场景
Spark 广泛应用于各种需要大规模数据处理的场景,包括但不限于:
批处理:处理大量历史数据,如日志分析、ETL 操作。
流处理:实时数据分析和处理,如网络监控、实时推荐系统。
机器学习:大规模数据上的机器学习任务,如推荐系统、文本分类。
交互式查询:通过 Spark SQL 对大数据集进行快速查询和分析。
图计算:处理社交网络、推荐系统中的复杂图结构数据。
下载文件
我们到官方地址下载:
页面如下,为了保证稳定和学习的方便,我用了比较老的版本:2.4.5

我们选择:without-hadoop-scala 这种版本,可以不用安装配置 Scala:

解压配置
我们可以使用 wget 或者其他工具来完成文件的下载,我这里是传到服务器上:

下载完成后,我们进行解压并移动到指定位置:

移动目录到 servers 下(之前的规范):

环境变量
配置完的结果,记得刷新环境变量

修改配置
slaves
配置完的样子大概如下:

spark-defaults
配置完的结果如下图:

创建 HDFS 目录
spark-env
配置完成截图如下:

分发软件
传输文件
使用我们之前编写的 rsync-script 工具。当然你也可以每台都配置一次也行,只要保证环境一致即可。(之前 Hadoop 等都使用过,如果你没有,你可以用复制或者别的方式)
过程会很漫长,请耐心等待:

文件传输分发完毕:

环境变量
每天机器都需要配置环境变量!!!
h122 服务器

h123 服务器

版权声明: 本文为 InfoQ 作者【武子康】的原创文章。
原文链接:【http://xie.infoq.cn/article/ce4abf8d8f1ed539d5706034a】。文章转载请联系作者。
评论