Spark概述

Spark:基于内存的分布式的计算框架,是一个针对海量数据处理的非常快的通用的计算引擎(计算框架)。

特点:

先进架构    采用Scala语言编写,底层采用actormodel的akka作为通讯框架,代码十分简洁高效。基于DAG图执行引擎,减少多次计算中间结果写到HDFS的开销。建立在统一抽象的RDD之上,以基本一致的方式应对不同的大数据处理。

高效  基于cache机制来支持需要反复迭代的计算或者多次数据共享,减少数据读取的IO开销。基于内存运算比MR要快100倍,基于硬盘的运算也比MR快10倍。

易用  提供广泛的数据集操作类型(20+种),而MR只有两种。Spark支持Java,Python和ScalaAPI,支持交互的Python和Scala的shell

整体解决方案   Spark内存中批处理  SparkSQL交互式查询  SparkStreaming流式计算 Graphx和MLib提供的常用图计算和机器学习算法。

与Hadoop无缝链接   可以使用Yarn作为集群管理框架,读取HDFS、Hbase等一切Hadoop数据。


核心组件:

SparkCore: 核心部分  包含Spark基本功能(任务调度 内存管理 容错机制等)

SparkSQL: Spark中交互式处理模块

SparkStreaming: Spark中流式数据处理的模块

SparkMLib:Spark机器学习相关模块 => Mahout

SparkGraphX: Spark中图形计算的模块

SparkManagers:集群管理  (HadoopYARN、ApacheMesos、Spark自带的单独调度器)


spark与mapreduce的比较

MapReduce: 分布式的计算框架 -> Hive问题:shuffle:大文件的排序+读写磁盘+网络传输 => 比较慢只有两种执行算子/API: MapTask(数据转换+过滤)和ReduceTask(数据聚合) ==> 定制化稍微有点差。不适合迭代式的计算。对于需要快速执行的产生结果的应用场景不适合。Spark:为了解决MapReduce执行慢、不适合迭代执行的问题。

Spark计算的核心思路就是将数据集缓存在内存中加快读取速度,Spark的中间结果放到内存中,一次创建数据集,可以多次迭代运算,减少IOK开销。适合运算比较多的ML和DL。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容