1. Mapreduce和Spark的相同和區別
- 兩者都是用mr模型來進行並行計算
- hadoop的一個作業:job
- job分為map task和reduce task,每個task都是在自己的進程中運行的
- 當task結束時,進程也會結束
- spark用戶提交的任務:application
- 一個application對應一個sparkcontext,app中存在多個job
- 每觸發一次action操作就會產生一個job
- 這些job可以並行或串行執行
- 每個job中有多個stage,stage是shuffle過程中DAGSchaduler通過RDD之間的依賴關系划分job而來的
- 每個stage里面有多個task,組成taskset有TaskSchaduler分發到各個executor中執行
- executor的生命周期是和app一樣的,即使沒有job運行也是存在的,所以task可以快速啟動讀取內存進行計算。
- hadoop的job只有map和reduce操作,表達能力比較欠缺
- 在mr過程中會重復的讀寫hdfs,造成大量的io操作,多個job需要自己管理關系。
- spark的迭代計算都是在內存中進行的
- API中提供了大量的RDD操作如join,groupby等
- 通過DAG圖可以實現良好的容錯