Spark 及其生态圈

背景

产生于加州大学伯克利分校AMP实验室,2013年6月成为Apache成为孵化项目,Spark使用Scala语言进行实现,Scala 建立在JAVA之上

设计理念 :改善 MAP REDUCE 的弱点: 交互式和迭代式 ,在集群多点内存中运行的分布式计算 ,容错数据集合,DAG

为什么用SPARK

先进的大数据分布式编程和计算框架
试图替代HADOOP (SPARK 可以独立于HADOOP)
内存分布式计算: 运行速度快
可以用 不同语言编程 (JAVA, SCALA, R and PYTHON)
可以从不同的数据源取数据 (HDFS、Cassandra、HBase)
实现不同的大数据功能:Spark Core、Spark SQL、Spark Streaming,Spark MLIB 以及 GraphX

SPARK 的几种运行模式

批处理 – 用于大规模的分布式数据处理 如:

spark-submit predict.py
spark-submit –class “SparkPi” target/scala-2.10/realtime-event_2.10-1.0.jar

流方式 – Spark流用于传送和处理实时数据

交互方式:常用于处理在内存中的大块数据.较低的延迟性 如:

spark-shell
pyspark

SPARK 的数据读取和存储

Spark可以从以下系统访问数据

Hadoop HDFS 以及HIVE, HBASE 等生态圈部件
Amazon S3
Cassandra, Mongodb
其他流工具如 Flume, Kafka所支持的各协议如 AVRO

另外Spark可以支持一下文件格式

Text (包括CSV JSON 等)
SequenceFiles
AVRO
Parquet

SPARK部件和应用平台

Spark 的主要部

SPARK CORE:包含spark的主要基本功能。所有跟RDD有关的API都出自于SPARK CORE。
Spark SQL: Spark 中用于结构化数据处理的软件包。用户用户可以在Spark环境下用 SQL语言处理数据。
Spark Streaming:Spark 中用来处理流数据的部件
MLlib:Spark 中用来进行机器学习和数学建模的软件包
GraphX:Spark 中用来进行图计算(如社交媒体关系) 的库函数
Cluster Managers:Spark 中用来管理机群或节点的软件平台.这包括Hadoop YARN, Apache Mesos, 和 Standalone Scheduler (Spark 自带的用于单机系统)

SPARK CORE

Spark生态圈的核心:

负责从HDFS、Amazon S3和HBase等持久层读取数据
在、YARN和Standalone为资源管理器调度Job完成分布式 计算
包括两个重要部件
有向无环图(DAG)的分布式并行计算框架
容错分布式数据RDD (Resilient Distributed Dataset)
总结SPARK CORE
SPARK CORE 就是 SPARK 功能调度中心,其中包括任务调动, 内存管理,容错管理及存储管理。同时也是一些列应用程序 的集中地。
这些应用程序用来定义和管理RDD (Resilient Distributed Dataset).
RDD代表了一系列数据集合分布在机群的内存中。SPARK CORE 的任务是对这些数据进行分布式计算。

解释RDD

弹性分布式数据集分布在不同集群节点的内存中
可以理解成一大数组
数组的每一元素是RDD的一分区
RDD的每一分区是一数据块
一个RDD可以分布并被运算在多台计算机节点的内存及硬盘中
RDD数据块可以放在磁盘上也可放在内存中(取决于设置)
如出现缓存失效或丢失,RDD的分区可以重新计算刷新
RDD本身是不能被修改的
但RDD可以通过API (底层采用Scala)被变换生成新的RDD
有两类对RDD的操作:变换和操作

RDD 编程

SPARK RDD 的API实现了MapReduce的基本map函数和reduce函数 及计算模型,还提供更为丰富的函数如filter、join、groupByKey 等。另外SPARK SQL 可以用来操作有数据结构的RDD 即 SPARK DATA FRAME

解释DAG

有向无环图(DAG,Directed Acycle graph)的分布式并行计算框架
反应RDD之间的依赖关系
提供Cache机制来支持多次迭代计算或者数据共享以减少迭代计算 之间读取数据局的开销
根据用户端对RDD的指令进行优化以减少系统开销
Spark 及其生态圈

SPARK和MAPREDUCE

SPARK RDD 的运算原理和MR是一样的
但是它们的运行方式不同
MR的运算是内存磁盘交互读写.不能再内存*享数据
MR弱点:replication, serialization和 disk IO
RDD可以被共享和持久化
大数据运算经常是交互式和迭代式的。所以数据的重用性很 重要。而MR的磁盘交互读写带来I/O 开销导致速度减慢

MAPREDUCE的迭代式运行

Spark 及其生态圈

MAPREDUCE的交互式运行

Spark 及其生态圈

对比SPARK

Spark 及其生态圈