大數據計算框架除了 MapReduce 還有哪些呢,不應該是 MapReduce 去解決所有問題吧?
現在談大數據必說MapReduce,好像MapReduce就是大數據的代名詞,希望能夠更完整、更專業的解釋
在Hadoop生態系統中有很多技術
HDFS,大數據的存儲,利用便宜的PC機組成的集群存儲大量的數據,支持故障恢復MapReduce,大數據處理,利用便宜的PC機組成集群的批量處理大量的數據,支持分散式並行計算以及故障轉移HBase,基於HDFS的NoSql資料庫Hive,基於HDFS的資料庫和查詢引擎,主要是提供類似SQL的方式對HDFS上的數據進行查詢
Mahout,大數據處理的機器學習框架Pig,基於MapReduce的數據流程,提供DAGHCatalog,元數據框架Oozie,Hadoop上的任務調度流程Sqoop,完成大數據平台與關係型資料庫的數據雙向遷移SplunkFlume,基於大數據平台的系統日誌處理Storm,流式處理框架Spark,新型的大數據處理框架,提供基於RDD的DAG,為批量,流式,互動式,機器學習提供了統一的處理框架Tez,另一種大數據框架,包括ORCFile,DAG,和優化的Hive
Impla,基於大數據平台的查詢引擎還有許多種。如面向內存迭代運算的spark,專門針對流式計算的storm等等;只是相比之下,在Hadoop體系中MapReduce是最常用最成熟的計算框架,許多更高級的計算體系都是基於MapReduce實現的,如Hive,Pig以及機器學習包Mahout,與R語言結合的RHADOOP等。
當然不會用MapReduce解決所有問題,MapReduce的容錯能力超強,適合處理巨大規模集群(幾百上千個節點)下長時間非實時的大計算任務;但其實時性較差,對實時性要求高的計算一般就不採用MapReduce了,而會使用上面提到的Storm和Spark。
由於MapReduce過於低層,編寫代碼非常繁瑣,所以即使適合它完成的運算,一般也會使用更高級的Hive和PIG來做。另外還有Cloudera提供的不基於MapReduce的SQL產品Impala也可以處理Hadoop內的大數據。
對於更常見的中小規模(十幾到幾十個節點)的集群,MapReduce的超強容錯能力意義不大(機器在這個規模壞掉概率沒那麼大了),反而由於總要使用外存交換數據導致低下的性能,這時候可採用潤乾公司(就是那做報表的)開發的集算器(潤乾公司計算系列產品),可以靈活地決定使用內存或外存交換數據,而且提供的類庫豐富,編寫代碼比MapReduce要輕鬆得多,性能也會高出不少。不僅可以訪問HDFS,也支持使用本地文件系統的輕量級方案。
每種計算框架都有自己適合的場景,不可能只用一種搞定一定問題,MapReduce的2.0版Yarn就把自己搞成了一個計算框架管理器,允許更多種計算框架融在一起。例外的是,spark似乎揚言要包打天下,它本來支持內存交換帶來的高性能,並且支持函數式語法以方便編寫,還宣稱要支持不亞於MapReduce的超大規模的強容錯(這裡,spark的主要貢獻人在提及與Impala的差異時說,Apache Hadoop: How does Impala compare to Shark?。impala因為用了本地編譯技術,性能很好,這裡有講:Inside Cloudera Impala: Runtime Code Generation,但容錯性一般般,),有興趣的話可以一試,不過scala 語言(spark基於並使用scala)看起來簡單,深入掌握並不容易。
濕了,MR是編程模型
著作權歸作者所有。
商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。
作者:千鋒互聯教育
鏈接:大數據分析的框架有哪些,各自有什麼特點_百度知道
來源:百度知道
主流的大數據分析平台構架
1 HadoopHadoop 採用 Map Reduce 分散式計算框架,根據 GFS開發了 HDFS 分散式文件系統,根據 Big Table 開發了 HBase數據存儲系統。Hadoop 的開源特性使其成為分散式計算系統的事實上的國際標準。Yahoo,Facebook,Amazon 以及國內的百度,阿里巴巴等眾多互聯網公司都以 Hadoop 為基礎搭建自己的分布。2 Spark
Spark 是在 Hadoop 的基礎上進行了一些架構上的改良。Spark 與Hadoop 最大的不同點在於,Hadoop 使用硬碟來存儲數據,而Spark 使用內存來存儲數據,因此 Spark 可以提供超過 Ha?doop 100 倍的運算速度。由於內存斷電後會丟失數據,Spark不能用於處理需要長期保存的數據。3 StormStorm是 Twitter 主推的分散式計算系統。它在Hadoop的基礎上提供了實時運算的特性,可以實時的處理大數據流。不同於Hadoop和Spark,Storm不進行數據的收集和存儲工作,它直接通過網路實時的接受數據並且實時的處理數據,然後直接通過網路實時的傳回結果。4 SamzaSamza 是由 Linked In 開源的一項技術,是一個分散式流處理框架,專用於實時數據的處理,非常像Twitter的流處理系統Storm。不同的是Samza 基於 Hadoop,而且使用了 Linked In 自家的 Kafka 分散式消息系統。Samza 非常適用於實時流數據處理的業務,如數據跟蹤、日誌服務、實時服務等應用,它能夠幫助開發者進行高速消息處理,同時還具有良好的容錯能力。
基礎理論四大法寶:
Streaming
External MemoryParallel ComputingDistributed Computing mapreduce只是分散式計算中的一小塊,還有很多其他有趣的思想,有的甚至70年代就已經出現了。搞清這些腦洞才是磨刀大法。推薦入門讀物:Mining of Massive Datasets. Rajaramanusers area treated like animals by mapreduce, but are treated carefully on flink
Apache Spark:該技術採用內存計算,從多迭代批量處理出發,允許將數據載入內存做反覆查詢,此外還融合數據倉庫、流處理和圖計算等多種計算範式,Spark用Scala語言實現,構建在HDFS上,能與Hadoop很好的結合,據說速度比MapReduce快100倍。
http://web.engr.illinois.edu/~adityagp/courses/cs598/papers/rdds.pdf
Resilient Distributed Datasets: A Fault-Tolerant Abstraction for
In-Memory Cluster Computing
建議題主去讀spark rdd那篇論文,在第7節和第8節提到了多種計算模型,並與spark做了對比。
推薦閱讀:
※到現在為止,NoSQL運動給資料庫系統留下什麼寶貴的思想?
※為什麼很多分散式系統都是以DAG(Directed acyclic graph )實現運算的?
※分散式系統工程如何搭建,有沒有一套完整的系統的實踐方法論,比如,存儲服務?
※分散式系統工程師要不要轉行做機器學習?
※一名分散式存儲工程師的技能樹是怎樣的?