Spark:基于內(nèi)存的分布式的計算框架谨究,是一個針對海量數(shù)據(jù)處理的非彻桌疲快的通用的計算引擎(計算框架)猜谚。
特點:
先進架構 ? ?采用Scala語言編寫,底層采用actormodel的akka作為通訊框架辨嗽,代碼十分簡潔高效世落。基于DAG圖執(zhí)行引擎糟需,減少多次計算中間結果寫到HDFS的開銷屉佳。建立在統(tǒng)一抽象的RDD之上,以基本一致的方式應對不同的大數(shù)據(jù)處理洲押。
高效 ?基于cache機制來支持需要反復迭代的計算或者多次數(shù)據(jù)共享武花,減少數(shù)據(jù)讀取的IO開銷¤菊剩基于內(nèi)存運算比MR要快100倍体箕,基于硬盤的運算也比MR快10倍专钉。
易用 ?提供廣泛的數(shù)據(jù)集操作類型(20+種),而MR只有兩種累铅。Spark支持Java跃须,Python和ScalaAPI,支持交互的Python和Scala的shell
整體解決方案 ??Spark內(nèi)存中批處理 ?SparkSQL交互式查詢 ?SparkStreaming流式計算 Graphx和MLib提供的常用圖計算和機器學習算法娃兽。
與Hadoop無縫鏈接 ? 可以使用Yarn作為集群管理框架菇民,讀取HDFS、Hbase等一切Hadoop數(shù)據(jù)投储。
核心組件:
SparkCore: 核心部分 ?包含Spark基本功能(任務調度 內(nèi)存管理 容錯機制等)
SparkSQL: Spark中交互式處理模塊
SparkStreaming: Spark中流式數(shù)據(jù)處理的模塊
SparkMLib:Spark機器學習相關模塊 => Mahout
SparkGraphX: Spark中圖形計算的模塊
SparkManagers:集群管理 ?(HadoopYARN第练、ApacheMesos、Spark自帶的單獨調度器)
spark與mapreduce的比較
MapReduce: 分布式的計算框架 -> Hive問題:shuffle:大文件的排序+讀寫磁盤+網(wǎng)絡傳輸 => 比較慢只有兩種執(zhí)行算子/API: MapTask(數(shù)據(jù)轉換+過濾)和ReduceTask(數(shù)據(jù)聚合) ==> 定制化稍微有點差玛荞。不適合迭代式的計算复旬。對于需要快速執(zhí)行的產(chǎn)生結果的應用場景不適合。Spark:為了解決MapReduce執(zhí)行慢冲泥、不適合迭代執(zhí)行的問題。
Spark計算的核心思路就是將數(shù)據(jù)集緩存在內(nèi)存中加快讀取速度壁涎,Spark的中間結果放到內(nèi)存中凡恍,一次創(chuàng)建數(shù)據(jù)集,可以多次迭代運算怔球,減少IOK開銷嚼酝。適合運算比較多的ML和DL。