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。

Spark概述_第1张图片

你可能感兴趣的:(Spark概述)