Hadoop學習筆記--發展歷程&版本

luckyfriends發表於2014-03-06

1.1. Hadoop的發展歷程

clip_image002

1. 這一切是如何開始的—Web上龐大的資料!

2. 使用Nutch抓取Web資料

3. 要儲存Web上龐大的資料——HDFS應運而生

4. 如何使用這些龐大的資料?

5. 採用Java或任何的流/管道語言構建MapReduce框架用於編碼並進行分析

6. 如何獲取Web日誌,點選流,Apache日誌,伺服器日誌等非結構化資料——fuse,webdav, chukwa, flume, Scribe

7. Hiho和sqoop將資料載入到HDFS中,關係型資料庫也能夠加入到Hadoop隊伍中

8. MapReduce程式設計需要的高階介面——Pig, Hive, Jaql

9. 具有先進的UI報表功能的BI工具- Intellicus

10. Map-Reduce處理過程使用的工作流工具及高階語言

11. 監控、管理hadoop,執行jobs/hive,檢視HDFS的高階檢視—Hue, karmasphere, eclipse plugin, cacti, ganglia

12. 支援框架—Avro (進行序列化), Zookeeper (用於協同)

13. 更多高階介面——Mahout, Elastic map Reduce

14. 同樣可以進行OLTP——Hbase

1.2. Hadoop 版本

Hadoop Common:在0.20及以前的版本中,包含HDFSMapReduce和其他專案公共內容,從0.21開始HDFS和MapReduce被分離為獨立的子專案,其餘內容為Hadoop Common

HDFS:Hadoop分散式檔案系統(Distributed File System)-HDFS(Hadoop Distributed File System)

MapReduce平行計算框架,0.20前使用org.apache.hadoop.mapred舊介面,0.20版本開始引入org.apache.hadoop.mapreduce的新API

The project includes these modules:

· Hadoop Common: The common utilities that support the other Hadoop modules.

· Hadoop Distributed File System (HDFS?): A distributed file system that provides high-throughput access to application data.

· Hadoop YARN: A framework for job scheduling and cluster resource management.

· Hadoop MapReduce: A YARN-based system for parallel processing of large data sets.

由於Hadoop版本混亂多變,因此,Hadoop的版本選擇問題一直令很多初級使用者苦惱。本文總結了Apache Hadoop和Cloudera Hadoop的版本衍化過程,並給出了選擇Hadoop版本的一些建議。

1.2.1. Apache Hadoop

1.1  Apache版本衍化

截至目前(2012年12月23日),Apache Hadoop版本分為兩代,我們將第一代Hadoop稱為Hadoop 1.0,第二代Hadoop稱為Hadoop 2.0。第一代Hadoop包含三個大版本,分別是0.20.x,0.21.x和0.22.x,其中,0.20.x最後演化成1.0.x,變成了穩定版,而0.21.x和0.22.x則NameNode HA等新的重大特性。第二代Hadoop包含兩個版本,分別是0.23.x和2.x,它們完全不同於Hadoop 1.0,是一套全新的架構,均包含HDFS Federation和YARN兩個系統,相比於0.23.x,2.x增加了NameNode HA和Wire-compatibility兩個重大特性。

apache hadoop官方給出的版本說明是:

1.0.X - current stable version, 1.0 release

1.1.X - current beta version, 1.1 release

2.X.X - current alpha version

0.23.X - simmilar to 2.X.X but missing NN HA.

0.22.X - does not include security

0.20.203.X - old legacy stable version

0.20.X - old legacy version

經過上面的大體解釋,大家可能明白了Hadoop以重大特性區分各個版本的,總結起來,用於區分Hadoop版本的特性有以下幾個:

(1)Append 支援檔案追加功能,如果想使用HBase,需要這個特性。

(2)RAID 在保證資料可靠的前提下,通過引入校驗碼較少資料塊數目。詳細連結:

https://issues.apache.org/jira/browse/HDFS/component/12313080

(3)Symlink 支援HDFS檔案連結,具體可參考: https://issues.apache.org/jira/browse/HDFS-245

4Security    Hadoop安全,具體可參考:https://issues.apache.org/jira/browse/HADOOP-4487

5 NameNode HA 具體可參考:https://issues.apache.org/jira/browse/HDFS-1064

6 HDFS FederationYARN

clip_image003

需要注意的是,Hadoop 2.0主要由Yahoo獨立出來的hortonworks公司主持開發。

1.2  Apache版本下載

(1) 各版本說明:http://hadoop.apache.org/releases.html

(2) 下載穩定版:找到一個映象,下載stable資料夾下的版本。

(3) Hadoop最全版本:http://svn.apache.org/repos/asf/hadoop/common/branches/,可直接導到eclipse中。

1.2.2. Cloudera Hadoop

2.1  CDH版本衍化

Apache當前的版本管理是比較混亂的,各種版本層出不窮,讓很多初學者不知所措,相比之下,Cloudera公司的Hadoop版本管理的要很多。

我們知道,Hadoop遵從Apache開源協議,使用者可以免費地任意使用和修改Hadoop,也正因此,市面上出現了很多Hadoop版本,其中比較出名的一是Cloudera公司的發行版,我們將該版本稱為CDH(Cloudera Distribution Hadoop)。截至目前為止,CDH共有4個版本,其中,前兩個已經不再更新,最近的兩個,分別是CDH3(在Apache Hadoop 0.20.2版本基礎上演化而來的)和CDH4在Apache Hadoop 2.0.0版本基礎上演化而來的),分別對應Apache的Hadoop 1.0和Hadoop 2.0,它們每隔一段時間便會更新一次。

clip_image004

Cloudera以patch level劃分小版本,比如patch level為923.142表示在原生態Apache Hadoop 0.20.2基礎上新增了1065個patch(這些patch是各個公司或者個人貢獻的,在Hadoop jira上均有記錄),其中923個是最後一個beta版本新增的patch,而142個是穩定版發行後新新增的patch。由此可見,patch level越高,功能越完備且解決的bug越多。

Cloudera版本層次更加清晰,且它提供了適用於各種作業系統的Hadoop安裝包,可直接使用apt-get或者yum命令進行安裝,更加省事。

2.2 CDH版本下載

(1) 版本含義介紹:

https://ccp.cloudera.com/display/DOC/CDH+Version+and+Packaging+Information

(2)各版本特性檢視:

https://ccp.cloudera.com/display/DOC/CDH+Packaging+Information+for+Previous+Releases

(3)各版本下載:

CDH3:http://archive.cloudera.com/cdh/3/

CDH4:http://archive.cloudera.com/cdh4/cdh/4/

注意,Hadoop壓縮包在這兩個連結中的最上層目錄中,不在某個資料夾裡,很多人進到連結還找不到安裝包!

3. 如何選擇Hadoop版本

當前Hadoop版本比較混亂,讓很多使用者不知所措。實際上,當前Hadoop只有兩個版本:Hadoop 1.0和Hadoop 2.0,其中,Hadoop 1.0由一個分散式檔案系統HDFS和一個離線計算框架MapReduce組成,而Hadoop 2.0則包含一個支援NameNode橫向擴充套件的HDFS,一個資源管理系統YARN和一個執行在YARN上的離線計算框架MapReduce。相比於Hadoop 1.0,Hadoop 2.0功能更加強大,且具有更好的擴充套件性、效能,並支援多種計算框架。

當我們決定是否採用某個軟體用於開源環境時,通常需要考慮以下幾個因素:

(1)是否為開源軟體,即是否免費。

(2) 是否有穩定版,這個一般軟體官方網站會給出說明。

(3) 是否經實踐驗證,這個可通過檢查是否有一些大點的公司已經在生產環境中使用知道。

(4) 是否有強大的社群支援,當出現一個問題時,能夠通過社群、論壇等網路資源快速獲取解決方法。

考慮到以上幾個因素,我們分析一下開源軟體Hadoop。對於Hadoop 2.0而言,目前尚不穩定,無法用於生產環境,因此,如果當前你正準備使用Hadoop,那麼只能從Hadoop 1.0中選擇一個版本,而目截至目前(2012年12月23日),Apache和Cloudera最新的穩定版分別是Hadoop 1.0.4和CDH3U4,因此,你可以從中任選一個使用。

clip_image006

1.2.3. 參考:

常見的下載hadoop不同版本的地址:

http://archive.apache.org/dist/hadoop/core/

http://archive.cloudera.com/cdh/3/

http://archive.cloudera.com/cdh4/cdh/4/

另外附註一個 hadoop各商業發行版的比較:

http://www.xiaohui.org/archives/795.html

http://dongxicheng.org/mapreduce-nextgen/hadoop-2-0-terms-explained/

http://dongxicheng.org/mapreduce-nextgen/how-to-select-hadoop-versions/

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14710393/viewspace-1102512/,如需轉載,請註明出處,否則將追究法律責任。

相關文章