spark基本介绍

发布于:2025-05-10 ⋅ 阅读:(9) ⋅ 点赞:(0)

Spark 是基于内存计算的分布式大数据处理框架,由加州大学伯克利分校 AMPLab 开发,现已成为 Apache 顶级项目。以下是其核心要点:

 

核心特点

 

1. 内存计算:数据可驻留内存,大幅提升迭代计算(如机器学习、图计算)效率,比 Hadoop MapReduce 快数倍至数十倍。

2. 多语言支持:原生支持 Scala、Java、Python、R,提供统一 API。

3. 一站式生态:集成 Spark SQL(结构化数据)、Spark Streaming(流处理)、MLlib(机器学习)、GraphX(图计算),覆盖数据处理全流程。

4. 高兼容性:可读写 HDFS、HBase、Kafka 等数据源,无缝集成 Hadoop 生态。

5. 灵活部署:支持本地模式、集群模式(YARN/Mesos/Kubernetes),适配不同规模场景。

 

核心概念

 

1. 弹性分布式数据集(RDD)

- Spark 的基本数据结构,代表分布式存储的不可变数据集合,支持 转换(Transformation) 和 动作(Action) 操作。

- 例: rdd = sc.parallelize([1, 2, 3]) (创建 RDD), rdd.filter(x > 2).collect() (转换+动作)。

2. 分布式计算模型

- Driver Program:协调任务的主程序,负责调度作业(Job)。

- Executor:实际执行任务的进程,分布在集群节点,负责存储和计算。

- DAG(有向无环图):任务执行流程的逻辑图,Spark 自动优化任务调度。

 

主要组件

 

- Spark Core:提供内存计算和分布式任务调度的基础能力。

- Spark SQL:支持 SQL 和 DataFrame/Dataset 接口,处理结构化数据,兼容 Hive。

- Spark Streaming:支持实时流数据处理,基于微批(Micro-Batch)或持续处理模型。

- MLlib:内置机器学习算法库,支持分类、回归、聚类等。

- GraphX:图计算组件,支持图遍历、PageRank 等算法。

 

典型应用场景

 

- 批量数据处理:替代 MapReduce,处理离线日志、ETL 任务。

- 实时流处理:分析实时日志、传感器数据(如 Kafka 数据源)。

- 交互式分析:通过 Spark SQL 或 Jupyter 进行即席查询(Ad-hoc Query)。

- 机器学习与图计算:构建推荐系统、社交网络分析等。

 

与 Hadoop 的关系

 

- 互补而非替代:Spark 依赖 Hadoop 的 HDFS 存储数据,YARN 管理资源,但计算层性能远超 MapReduce。

- 生态整合:Spark 可直接读取 Hive 表数据,或通过 HBase 实现实时数据读写。

 

快速入门步骤

 

1. 安装 Spark:下载二进制包,配置环境变量(需提前安装 Java/Scala/Python)。

2. 启动交互式环境:

spark-shell # Scala 环境

pyspark # Python 环境

 

3. 运行第一个程序:

val data = sc.parallelize(1 to 1000)

val result = data.filter(_ % 2 == 0).count()

println(result) // 输出偶数个数

 

 

如需深入某部分(如架构原理、代码示例),可随时告知!


网站公告

今日签到

点亮在社区的每一天
去签到