Spark初识-Spark与Hadoop的比较
Spark,是分布式計算平臺,是一個用scala語言編寫的計算框架,基于內存的快速、通用、可擴展的大數據分析引擎
Hadoop,是分布式管理、存儲、計算的生態系統;包括HDFS(存儲)、MapReduce(計算)、Yarn(資源調度)
一、Spark VS Hadoop 概覽
Hadoop和Spark都是并行計算,兩者都是用MR模型進行計算
Hadoop一個作業稱為一個Job,Job里面分為Map Task和Reduce Task階段,每個Task都在自己的進程中運行,當Task結束時,進程也會隨之結束;
Spark用戶提交的任務稱為application,一個application對應一個SparkContext,app中存在多個job,每觸發一次action操作就會產生一個job。這些job可以并行或串行執行,每個job中有多個stage,stage是shuffle過程中DAGScheduler通過RDD之間的依賴關系劃分job而來的,每個stage里面有多個task,組成taskset,由TaskScheduler分發到各個executor中執行;executor的生命周期是和app一樣的,即使沒有job運行也是存在的,所以task可以快速啟動讀取內存進行計算。
ps:一個Application -> 多個job ->一個job多個stage -> 一個stage多個task
mapreduce 讀 – 處理 - 寫磁盤 – 讀 - 處理 - 寫
spark 讀 - 處理 - 處理 --(需要的時候)寫磁盤 - 寫
| 類型 | 基礎平臺,包括計算、調度、存儲 | 分布式計算工具 |
| 場景 | 大規模數據集上的批處理 | 迭代計算、交互式計算、流計算 |
| 價格 | 對機器要求低、便宜 | 對內存有要求、相對較貴 |
| 編程范式 | Map+Reduce,API較為底層、適應性差 | RDD組成DAG有向無環圖,API較為頂層,方便使用 |
| 數據存儲結構 | MapReduce計算結果存在HDFS磁盤上,延遲大 | RDD中間運算結果存在內存上,延遲小 |
| 運行方式 | Task以進程的方式維護,任務啟動慢 | Task以線程的方式維護,任務啟動快 |
二、Spark相對Hadoop的優越性
Spark 是在借鑒了 MapReduce 之上發展而來的,繼承了其分布式并行計算的優點并改進了 MapReduce 明顯的缺陷,(spark 與 hadoop 的差異)具體如下:
首先,Spark 把中間數據放到內存中,迭代運算效率高。MapReduce 中計算結果需要落地,保存到磁盤上,這樣勢必會影響整體速度,而 Spark 支持 DAG 圖的分布式并行計算的編程框架,減少了迭代過程中數據的落地,提高了處理效率。(延遲加載)
其次,Spark 容錯性高。Spark 引進了彈性分布式數據集 RDD (Resilient DistributedDataset) 的抽象,它是分布在一組節點中的只讀對象集合,這些集合是彈性的,如果數據集一部分丟失,則可以根據“血統”(即允許基于數據衍生過程)對它們進行重建。另外在RDD 計算時可以通過 CheckPoint 來實現容錯。
最后,Spark 更加通用。mapreduce 只提供了 Map 和 Reduce 兩種操作,Spark 提供的數據集操作類型有很多,大致分為:Transformations 和 Actions 兩大類。Transformations包括 Map、Filter、FlatMap、Sample、GroupByKey、ReduceByKey、Union、Join、Cogroup、MapValues、Sort 等多種操作類型,同時還提供 Count, Actions 包括 Collect、Reduce、Lookup 和 Save 等操作
三、 各方面比較
四、三大分布式計算系統
Hadoop適合處理離線的靜態的大數據;
Spark適合處理離線的流式的大數據;
Storm/Flink適合處理在線的實時的大數據。
*、本文參考
Spark和Hadoop的區別和比較
Spark與Hadoop相比的優缺點
[Spark 和 Hadoop MapReduce 對比](
總結
以上是生活随笔為你收集整理的Spark初识-Spark与Hadoop的比较的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 多主机推送公钥、修改配置、修改密码脚本
- 下一篇: Oracle GoldenGate微服务