1) Speed,(開發和執行)速度快。基於內存的計算;DAG(有向無環圖)的計算引擎;基於線程模型;python
2)Easy of use,易用 。 多語言(Java,python,scala,R); 多種計算API可調用;可在交互式模式下運行;數據庫
3)Generality 通用。能夠一站式解決多個不一樣場景的應用業務框架
Spark Streaming :用來作流處理運維
MLlib : 用於機器學習機器學習
GraphX:用來作圖形計算的分佈式
4) Runs Everywhere :oop
(1)能夠運行在Hadoop的yarn,Mesos,standalone(Sprk自帶的)這些資源管理和調度的程序之上學習
(2) 能夠鏈接包括HDFS,Cassandra,HBase,S3這些數據源 spa
(1)代碼繁瑣(官網有WordOCunt案例)線程
(2)效率低下:
a) 有結果寫入磁盤,下降效率;
b) 經過進程模型,銷燬建立效率低
(3)只能支持map和reduce方法
(4) 不適合迭代屢次,交互式,流水的處理
(1)批處理(離線):MapReduce,Hive,Pig
(2)流式處理(實時):Storm,Jstorm
(3)交互式計算 :Impala
綜上: 框架的多樣化致使生產時所須要的框架繁多,學習運維成本較高,那麼有沒有一種框架,
既能執行效率高,學習成本低,還能支持批處理和流式處理與交互計算呢?
結論:Spark誕生
Hive:數據倉庫
R:數據分析
Mahout:機器學習庫
pig:腳本語言,跟Hive相似
Oozie:工做流引擎,管理做業執行順序
Zookeeper:用戶無感知,主節點掛掉選擇從節點做爲主的
Flume:日誌收集框架
Sqoop:數據交換框架,例如:關係型數據庫與HDFS之間的數據交換
Hbase : 海量數據中的查詢,至關於分佈式文件系統中的數據庫
注意:在對實時的查詢來講,Spark只是一個快速的分佈式計算框架,因此沒有存儲的框架,可是能夠鏈接多個存儲的數據源
MapReduce:若進行屢次計算,MP則須要將上一次執行結果寫入到磁盤,叫作數據落地
Spark:直接將存儲在內存中的結果拿來使用,沒有數據落地
Spark概述和與Hadoop對比