Spark
Spark是什么
Spark是一个用来实现快速而通用的集群计算的平台。
Spark软件架构
Spark Core
SparkCore实现了Spark的基本功能,包括任务调度,内存管理,错误恢复,与存储系统的交互
Spark Core包含了对RDD(resilient distributed dataset)的定义,表示分布在多个计算节点上可以并行操作的元素集合,这是Spark主要的编程对象
SparkSQL
是Spark用来操作结构化数据的程序包
Spark Streaming
是Spark提供对实时数据进行流式计算的组件
MLlib
Spark的机器学习的程序库,提供算法与模型
GraphX
用来操作图的程序库,可以进行并行的图计算
集群管理器(cluster manager)
Spark可以在一个节点到上千个节点之间的伸缩计算,支持在各种集群管理器上运行,如Hadoop YARN,Apache Mesos,Spark自带的独立调度器
存储
Spark可以访问存储在HDFS,Hbase,Cassandra,Amazon S3,本地文件系统等等的数据,支持文本文件,序列文件以及任何Hadoop的InputFormat
核心概念 RDD
Spark 中的 RDD 就是一个不可变的分布式对象集合。每个 RDD 都被分为多个分区,这些
分区运行在集群中的不同节点上。 RDD 可以包含 Python、 Java、 Scala 中任意类型的对象,
甚至可以包含用户自定义的对象。
RDD 支持两种操作: 转化操作和行动操作。 RDD 的转化操作是返回一
个新的 RDD 的操作,比如 map() 和 filter(),而行动操作则是向驱动器程序返回结果或
把结果写入外部系统的操作, 会触发实际的计算,比如 count() 和 first()。
Spark运行时架构
在分布式环境下, Spark 集群采用的是主 / 从结构。在一个 Spark 集群中,有一个节点负
责中央协调, 调度各个分布式工作节点。这个中央协调节点被称为驱动器( Driver) 节点,
与之对应的工作节点被称为执行器( executor) 节点。驱动器节点可以和大量的执行器节
点进行通信, 它们也都作为独立的 Java 进程运行。驱动器节点和所有的执行器节点一起被
称为一个 Spark 应用( application)。