Apache Spark Core是Spark框架的核心组件,它提供了分布式计算的基本功能和API,为上层的高级库如Spark SQL、Spark Streaming、MLlib和GraphX等提供支持。以下是Spark Core的关键概念和技术要点:
-
RDD (Resilient Distributed Datasets)
- RDD是Spark的基本数据结构,表示一个不可变、可分区的并行数据集。它可以从HDFS、Cassandra、HBase等多种数据源创建,也可以通过转换操作(Transformation)生成新的RDD,并通过行动操作(Action)获取结果或写回存储系统。
-
DAGScheduler
- DAGScheduler负责将用户的高层次运算逻辑转化为物理执行计划,即一系列的Stage和Task。它会根据RDD之间的依赖关系构建DAG(有向无环图),并将其划分为多个Stage,每个Stage包含一组可以并行执行的任务。
-
TaskScheduler & ExecutorBackend
- TaskScheduler负责任务的实际调度工作,将DAGScheduler分解出的Task分配到各个Executor上运行。ExecutorBackend则是Executor与Driver之间通信的接口,用于接收和汇报任务状态信息。
-
Executor
- Executor是Spark在集群节点上运行任务的工作进程,负责执行具体的数据处理任务。每个Executor有自己的内存和CPU资源,可以在同一进程中执行多个Task,实现数据本地化优化。
-
Lineage和容错机制
- Spark通过RDD的Lineage(血统)来实现数据容错。当某个RDD的部分分区数据丢失时,可以通过其父RDD重新计算得到。这种容错机制使得Spark能够在分布式环境下保证数据的高可用性。
-
Broadcast变量与Accumulator
- Spark还提供了两种特殊的共享变量类型:
- Broadcast变量:用于高效地将大对象分发给所有Executor,避免在任务中重复传输相同数据。
- Accumulator:设计用于在并行任务中累加值,具有只增不减的特性,主要用于统计或聚合运算结果。
- Spark还提供了两种特殊的共享变量类型:
-
SparkContext
- SparkContext是Spark应用程序的入口点,用户通过它与Spark集群进行交互,创建RDD、提交作业以及访问其他Spark服务。
Spark Core以其简洁高效的API设计和强大的分布式计算能力,为开发者提供了构建大规模数据处理应用的基础。