1. 程式人生 > >幾種大資料框架的對比

幾種大資料框架的對比

hadoop(批量,離線,非實時) 主要用於搜尋引擎,檔案儲存等等,  Hadoop實現了一個分散式檔案系統(Hadoop Distributed File System),簡稱HDFS。HDFS有高容錯性的特點,並且設計用來部署在低廉的(low-cost)硬體上;而且它提供高吞吐量(high throughput)來訪問應用程式的資料,適合那些有著超大資料集(large data set)的應用程式。HDFS放寬了(relax)POSIX的要求,可以以流的形式訪問(streaming access)檔案系統中的資料。Hadoop的框架最核心的設計就是:HDFS和MapReduce。HDFS為海量的資料提供了儲存,則MapReduce為海量的資料提供了計算。Hadoop旗下有很多經典子專案,比如HBase、Hive等,這些都是基於HDFS和MapReduce發展出來的
MapReduce 海量資料地計算 MapReduce的基本原理就是:將大的資料分析分成小塊逐個分析,最後再將提取出來的資料彙總分析,最終獲得我們想要的內容。當然怎麼分塊分析,怎麼做Reduce操作非常複雜,Hadoop已經提供了資料分析的實現,我們只需要編寫簡單的需求命令即可達成我們想要的資料.
如果計算的陣列長度少的話,這樣實現是不會有問題的,還是面對海量資料的時候就會有問題。
MapReduce會這樣做:首先數字是分佈儲存在不同塊中的,以某幾個塊為一個Map,計算出Map中最大的值,然後將每個Map中的最大值做Reduce操作,Reduce再取最大值給使用者。
Hdfs 分散式檔案系統 NameNode(主機存檔案目錄)-DataNode(分佈在廉價機)-Block(64M,多個Block構成DataNode)
Hive MapReduce的改進 1.hive是基於Hadoop的一個數據倉庫工具,可以將結構化的資料檔案對映為一張資料庫表,並提供完整的sql查詢功能,可以將sql語句轉換為MapReduce任務進行執行。其優點是學習成本低,可以通過類SQL語句快速實現簡單的MapReduce統計,不必開發專門的MapReduce應用,十分適合資料倉庫的統計分析。2.Hive是建立在 Hadoop 上的資料倉庫基礎構架。它提供了一系列的工具,可以用來進行資料提取轉化載入(ETL),這是一種可以儲存、查詢和分析儲存在 Hadoop 中的大規模資料的機制。Hive 定義了簡單的類 SQL 查詢語言,稱為 HQL,它允許熟悉 SQL 的使用者查詢資料。同時,這個語言也允許熟悉 MapReduce 開發者的開發自定義的 mapper 和 reducer 來處理內建的 mapper 和 reducer 無法完成的複雜的分析工作。
Spark MapReduce的改進 spark是一種分散式計算框架,和mapreduce並列,可以運行於yarn上。yarn是hadoop2.0的一種資源管理框架
1、MR作業的資源管控是通過yarn進行的,spark可以通過yarn進行資源管控,也可以不使用yarn,但是多個元件合設時(如叢集中既有spark計劃,又有HBase查詢),建議還是使用yarn;
2、spark是基於記憶體計算的,計算的中間結果存放在記憶體,可以進行反覆迭代計算;而MR計算的中間結果是要落磁碟的,所以一個job會涉及到反覆讀寫磁碟,這也是效能比不上spark的主要原因;
3、MR的一個task就要對應一個container,container的每次啟動都要耗費不少時間,有些hadoop版本(如華為OceanInsight Hadoop)實現了容器預熱(重用)功能,這個消耗可能會小一些;而spark是基於執行緒池來實現的,資源的分配會更快一些。
ZooKeeper ZooKeeper是一個分散式的,開放原始碼的分散式應用程式協調服務,它包含一個簡單的原語集,分散式應用程式可以基於它實現同步服務,配置維護和命名服務等
Apache Storm 實時的、分散式以及具備高容錯的計算系統 Nimbus:負責資源分配和任務排程。
Supervisor:負責接受nimbus分配的任務,啟動和停止屬於自己管理的worker程序。
Worker:執行具體處理元件邏輯的程序。
Task:worker中每一個spout/bolt的執行緒稱為一個task. 在storm0.8之後,task不再與物理執行緒對應,同一個spout/bolt的task可能會共享一個物理執行緒,該執行緒稱為executor