Apache Hadoop 項目有兩個核心組件,被稱為 Hadoop 分布式文件系統 (Hadoop Distributed File System, HDFS) 的文件存儲,以及被稱為 MapReduce 的編程框架。有一些支持項目充分利用了 HDFS 和 MapReduce。
- HDFS: 如果您希望有 4000 多台電腦處理您的數據,那么最好將您的數據分發給 4000 多台電腦。HDFS 可以幫助您做到這一點。HDFS 有幾個可以移動的部件。Datanodes 存儲數據,Namenode 跟蹤存儲的位置。還有其他部件,但這些已經足以使您開始了。
- MapReduce: 這是一個面向 Hadoop 的編程模型。有兩個階段,毫不意外,它們分別被稱為 Map 和 Reduce。如果希望給您的朋友留下深刻的印象,那么告訴他們,Map 和 Reduce 階段之間有一個隨機排序。JobTracker 管理您的 MapReduce 作業的 4000 多個組件。TaskTracker 從 JobTracker 接受訂單。如果您喜歡 Java,那么用 Java 編寫代碼。如果您喜歡 SQL 或 Java 以外的其他語言,您的運氣仍然不錯,您可以使用一個名為 Hadoop Streaming 的實用程序。
- Hadoop Streaming:一個實用程序,在任何語言(C、Perl 和 Python、C++、Bash 等)中支持 MapReduce 代碼。示例包括一個 Python 映射程序和一個 AWK 縮減程序。
- Hive 和 Hue: 如果您喜歡 SQL,您會很高興聽到您可以編寫 SQL,並使用 Hive 將其轉換為一個 MapReduce 作業。不,您不會得到一個完整的 ANSI-SQL 環境,但您的確得到了 4000 個注釋和多 PB 級的可擴展性。Hue 為您提供了一個基於瀏覽器的圖形界面,可以完成您的 Hive 工作。
- Pig: 一個執行 MapReduce 編碼的更高層次的編程環境。Pig 語言被稱為 Pig Latin。您可能會發現其命名約定有點不合常規,但是您會得到令人難以置信的性價比和高可用性。
- Sqoop:在 Hadoop 和您最喜愛的關系數據庫之間提供雙向數據傳輸。
- Oozie:管理 Hadoop 工作流。這並不能取代您的調度程序或 BPM 工具,但它在您的 Hadoop 作業中提供 if-then-else 分支和控制。
- HBase:一個超級可擴展的鍵值存儲。它的工作原理非常像持久的散列映射(對於 Python 愛好者,可以認為是詞典)。盡管其名稱是 HBase,但它並不是一個關系數據庫。
- FlumeNG:一個實時的加載程序,用來將數據流式傳輸到 Hadoop 中。它將數據存儲在 HDFS 和 HBase 中。您會希望從 FlumeNG 開始,因為它對原始的水槽有所改進。
- Whirr:面向 Hadoop 的雲配置。您可以在短短幾分鍾內使用一個很短的配置文件啟動一個集群。
- Mahout:面向 Hadoop 的機器學習。用於預測分析和其他高級分析。
- Fuse:讓 HDFS 系統看起來就像一個普通的文件系統,所以您可以對 HDFS 數據使用 ls、rm、cd 和其他命令。
- Zookeeper:用於管理集群的同步性。您不需要為 Zookeeper 做很多事情,但它在為您努力工作。如果您認為自己需要編寫一個使用 Zookeeper 的程序,您要么非常非常聰明,並且可能是 Apache 項目的一個委員會,要么終將會有過得非常糟糕的一天。
