今年,大資料在很多公司都成為相關話題。雖然沒有一個標準的定義來解釋何為 “大資料”,但在處理大資料上,Hadoop已經成為事實上的標準。IBM、Oracle、SAP、甚至Microsoft等幾乎所有的大型軟體供應商都採用了Hadoop。然而,當你已經決定要使用Hadoop來處理大資料時,首先碰到的問題就是如何開始以及選擇哪一種產品。你有多種選擇來安裝Hadoop的一個版本並實現大資料處理。本文討論了不同的選擇,並推薦了每種選擇的適用場合。
Hadoop平台的多種選擇
下圖展示了Hadoop平台的多種選擇。你可以只安裝Apache 發布版本,或從不同供應商所提供的幾個發行版本中選擇一個,或決定使用某個大資料套件。每個發行版本都包含有Apache Hadoop,而幾乎每個大資料套件都包含或使用了一個發行版本,理解這一點是很重要的。
下面我們首先從Apache Hadoop開始來好好看看每種選擇。
Apache Hadoop
Apache Hadoop項目的目前版本(2.0版)含有以下模組:
Hadoop通用模組:支援其他Hadoop模組的通用工具集。
HadoopDistributed File System(HDFS):支援對應用資料高輸送量訪問的Distributed File System。
Hadoop YARN:用於作業調度和叢集資源管理的架構。
Hadoop MapReduce:基於YARN的大資料平行處理系統。
在本地系統上獨立安裝Apache Hadoop是非常容易的(只需解壓縮並設定某些環境變數,然後就可以開始使用了)。但是這隻合適於入門和做一些基本的教程學習。
如果你想在一個或多個“真正的節點”上安裝Apache Hadoop,那就複雜多了。
問題1:複雜的叢集設定
你可以使用偽分布式模式在單個節點上類比多節點的安裝。你可以在單台伺服器上類比在多台不同伺服器上的安裝。就算是在該模式下,你也要做大量的配置工作。如果你想設定一個由幾個節點群組成的叢集,毫無疑問,該過程就變得更為複雜了。要是你是一個新手管理員,那麼你就不得不在使用者權限、存取權限等諸如此類的問題中痛苦掙紮。
問題2: Hadoop生態系統的使用
在Apache中,所有項目之間都是相互獨立的。這是很好的一點!不過Hadoop生態系統除了包含Hadoop外,還包含了很多其他Apache項目:
Pig:分析大資料集的一個平台,該平台由一種表達資料分析程式的進階語言和對這些程式進行評估的基礎設施一起組成。
Hive:用於Hadoop的一個資料倉儲系統,它提供了類似於SQL的查詢語言,通過使用該語言,可以方便地進行資料匯總,特定查詢以及分析存放在Hadoop相容檔案系統中的大資料。
Hbase:一種分布的、可伸縮的、大資料儲存庫,支援隨機、即時讀/寫訪問。
Sqoop:為高效傳輸批量資料而設計的一種工具,其用於Apache Hadoop和結構化資料儲存庫如關聯式資料庫之間的資料轉送。
Flume:一種分布式的、可靠的、可用的服務,其用於高效地搜集、匯總、移動大量日誌資料。
ZooKeeper:一種集中服務,其用於維護配置資訊,命名,提供分布式同步,以及提供分組服務。
還有其他一些項目。
你需要安裝這些項目,並手動地將它們整合到Hadoop中。
你需要自己留意不同的版本和發布版本。不幸的是,不是所有的版本都能在一起完美地運行起來。你要自己比較發布說明並找出解決之道。Hadoop提供了眾多的不同版本、分支、特性等等。跟你從其他項目瞭解的1.0、1.1、2.0這些版本號碼不同,Hadoop的版本可遠沒這麼簡單。如果你想更進一步瞭解關於“Hadoop版本地獄”的細節,請閱讀“大象的家譜(Genealogy of elephants)”一文。
問題3:商業支援
Apache Hadoop只是一個開源項目。這當然有很多益處。你可以訪問和更改源碼。實際上有些公司使用並擴充了基礎代碼,還添加了新的特性。很多討論、文章、部落格和郵件清單中都提供了大量資訊。
然而,真正的問題是如何擷取像Apache Hadoop這樣的開源項目的商業支援。公司通常只是為自己的產品提供支援,而不會為開源項目提供支援(不光是Hadoop項目,所有開源項目都面臨這樣的問題)。