spark开篇,dreamspark


spark是什么?
spark开源的类Hadoop MapReduce的通用的并行计算框架
spark基于map reduce算法实现的分布式计算
拥有Hadoop MapReduce所具有的优点
但不同于MapReduce的是Job中间输出和结果可以保存在内存中
从而不再需要读写HDFS

从上面的官方解释中我们可以得到的信息时,spark是一套并行计算的框架,并且性能要比hadoop的map-reduce好

简单来说,可以将spark看成是一个开发分布式并行计算程序的SDK,通过spark生态圈提供的各种API来进行开发

spark生态圈大致如下图:
spark生态圈示意图

从图中左下角可以看出,spark既可以直接对hadoop的hdfs进行操作,也能在Amazon的S3上运行
spark和hadoop的关系其实是十分紧密的,它可以在hadoop中和传统的mr任务并存,共享数据信息等

一句话概括spark生态圈的组件

SparkStreaming:一个对实时数据流进行高通量、容错处理的流式处理系统,可以对多种数据源(如Kdfka、Flume、Twitter、 Zero和TCP 套接字)进行类似map、reduce、join、window等复杂操作

SharkSQL:可以将hive的sql语句在spark上执行

BlinkDB:一个在速度和精度上做抉择的交互式查询系统,用户查询的时候可以选择查询的速度或者精度,二者选一

MLbase/MLlib:MLlib是Spark实现一些常见的机器学习算法和实用程序,包括分类,回归,聚类,协同过滤,降维,以及底层优化。

GraphX:基于Spark的图处理和图并行计算API

spark生态圈的各个组件计算都是以一种名为RDD的数据结构为基础的
首先RDD是一种数据结构,根据不同的使用场景,如实时流处理或者批处理都会生成不同的RDD模型
但是各种RDD模型之间都有互相转换的方式,也就是说,spark各个组件之间处理的数据都可以很方便的进行交流互换
RDD将各个组件融合在spark平台上(不同的组件提供不同的功能,根据需求组合组件处理问题)使得spark能够适用于各种大数据场合
spark RDD之间存在着明确的依赖关系,一旦某个环节发生错误,可以根据这种依赖找到错误的父节点来进行重新操作,所以spark在容错性方面十分强大

Spark生态圈以Spark为核心、以RDD为基础,打造了一个基于内存计算的大数据平台,为人们提供了all-in-one的数据处理方案。人们可以 根据不同的场景使用spark生态圈的多个产品来解决应用,而不是使用多个隔离的系统来满足场景需求。

众所周知,在大数据的实时流处理方面storm一直是一个热点,那么和spark的streaming相比如何呢?
storm的亮点在与处理延迟是毫秒级别的,而吞吐量不高
spark streaming则是高吞吐量,处理延迟是秒级的
两者可以使一种互补的关系

作为spark的初学者,查阅了网上大量资料之后整理出对spark的初次了解作为学习spark的开篇记录,如有错误之处望请指出,感激不尽

相关内容