Hadoop 是一個處理、存儲和分析海量的分布式、非結(jié)構(gòu)化數(shù)據(jù)的開源框架。最初由 Yahoo 的工程師 Doug Cutting 和 Mike Cafarella 在 2005 年合作開發(fā)。后來,Hadoop 被貢獻給了 Apache 基金會,成為 Apache 基金會的開源項目。
Hadoop 系統(tǒng)簡介
Hadoop 是一種分析和處理大數(shù)據(jù)的軟件平臺,是一個用 Java 語言實現(xiàn)的 Apache 的開源軟件框架,在大量計算機組成的集群中實現(xiàn)了對海量數(shù)據(jù)的分布式計算。
Hadoop 采用 MapReduce 分布式計算框架,根據(jù) GFS 原理開發(fā)了 HDFS(分布式文件系統(tǒng)),并根據(jù) BigTable 原理開發(fā)了 HBase 數(shù)據(jù)存儲系統(tǒng)。
Hadoop 和 Google 內(nèi)部使用的分布式計算系統(tǒng)原理相同,其開源特性使其成為分布式計算系統(tǒng)的事實上的國際標(biāo)準。
Yahoo、Facebook、Amazon,以及國內(nèi)的百度、阿里巴巴等眾多互聯(lián)網(wǎng)公司都以 Hadoop 為基礎(chǔ)搭建了自己的分布式計算系統(tǒng)。
Hadoop 是一個基礎(chǔ)框架,允許用簡單的編程模型在計算機集群上對大型數(shù)據(jù)集進行分布式處理。它的設(shè)計規(guī)模從單一服務(wù)器到數(shù)千臺機器,每個服務(wù)器都能提供本地計算和存儲功能,框架本身提供的是計算機集群高可用的服務(wù),不依靠硬件來提供高可用性。
用戶可以在不了解分布式底層細節(jié)的情況下,輕松地在 Hadoop 上開發(fā)和運行處理海量數(shù)據(jù)的應(yīng)用程序。低成本、高可靠、高擴展、高有效、高容錯等特性讓 hadoop 成為最流行的大數(shù)據(jù)分析系統(tǒng)。
Hadoop 生態(tài)圈
Hadoop 是一個由 Apache 基金會開發(fā)的大數(shù)據(jù)分布式系統(tǒng)基礎(chǔ)架構(gòu)。用戶可以在不了解分布式底層細節(jié)的情況下,輕松地在 Hadoop 上開發(fā)和運行處理大規(guī)模數(shù)據(jù)的分布式程序,充分利用集群的威力高速運算和存儲。
Hadoop 是一個數(shù)據(jù)管理系統(tǒng),作為數(shù)據(jù)分析的核心,匯集了結(jié)構(gòu)化和非結(jié)構(gòu)化的數(shù)據(jù),這些數(shù)據(jù)分布在傳統(tǒng)的企業(yè)數(shù)據(jù)棧的每一層。
Hadoop 也是一個大規(guī)模并行處理框架,擁有超級計算能力,定位于推動企業(yè)級應(yīng)用的執(zhí)行。
Hadoop 又是一個幵源社區(qū),主要為解決大數(shù)據(jù)的問題提供工具和軟件。
如果你對大數(shù)據(jù)開發(fā)感興趣,想系統(tǒng)學(xué)習(xí)大數(shù)據(jù)相關(guān)知識的話,可以加入大數(shù)據(jù)技術(shù)學(xué)習(xí)交流扣扣群:458數(shù)字345數(shù)字782,歡迎添加,私信管理員,了解課程介紹,獲取學(xué)習(xí)資源
雖然 Hadoop 提供了很多功能,但仍然應(yīng)該把它歸類為由多個組件組成的 Hadoop 生態(tài)圈,這些組件包括數(shù)據(jù)存儲、數(shù)據(jù)集成、數(shù)擔(dān)處理和其他進行數(shù)據(jù)分析的專門工具。
圖 1 展示了 Hadoop 的生態(tài)系統(tǒng),主要由 HDFS、MapReduce, HBase, Zookeeper, Pig、 Hive 等核心組件構(gòu)成,另外還包括 Sqoop、Flume 等框架,用來與其他企業(yè)系統(tǒng)融合。同時, Hadoop 生態(tài)系統(tǒng)也在不斷增長,它新增了 Mdhout、Ambari 等內(nèi)容,以提供更新功能。

圖 1? Hadoop的生態(tài)系統(tǒng)
Hadoop 生態(tài)圈包括以下主要組件。
1)HDFS
一個提供高可用的獲取應(yīng)用數(shù)據(jù)的分布式文件系統(tǒng)。
2)MapReduce
一個并行處理大數(shù)據(jù)集的編程模型。
3)HBase
一個可擴展的分布式數(shù)據(jù)庫,支持大表的結(jié)構(gòu)化數(shù)據(jù)存儲。是一個建立在 HDFS 之上的,面向列的?NoSQL?數(shù)據(jù)庫,用于快速讀/寫大量數(shù)據(jù)。
4)Hive
一個建立在 Hadoop 上的數(shù)據(jù)倉庫基礎(chǔ)構(gòu)架。它提供了一系列的工具;可以用來進行數(shù)據(jù)提取轉(zhuǎn)化加載(ETL),這是一種可以存儲、查詢和分析存儲在 Hadoop 中的大規(guī)模數(shù)據(jù)的機制。
Hive 定義了簡單的類 SQL 查詢語言,稱為 HQL,它允許不熟悉 MapReduce 的開發(fā)人員也能編寫數(shù)據(jù)查詢語句,然后這些語句被翻譯為 Hadoop 上面的 MapReduce 任務(wù)。
5)Mahout
可擴展的機器學(xué)習(xí)和數(shù)據(jù)挖掘庫。它提供的 MapReduce 包含很多實現(xiàn)方法,包括聚類算法、回歸測試、統(tǒng)計建模。
6)Pig
一個支持并行計算的高級的數(shù)據(jù)流語言和執(zhí)行框架。它是 MapReduce 編程的復(fù)雜性的抽象。Pig 平臺包括運行環(huán)境和用于分析 Hadoop 數(shù)據(jù)集的腳本語言(PigLatin)。其編譯器將 PigLatin 翻譯成 MapReduce 程序序列。
7)Zookeeper
—個應(yīng)用于分布式應(yīng)用的高性能的協(xié)調(diào)服務(wù)。它是一個為分布式應(yīng)用提供一致性服務(wù)的軟件,提供的功能包括配置維護、域名服務(wù)、分布式同步、組服務(wù)等。
8)Amban
一個基于 Web 的工具,用來供應(yīng)、管理和監(jiān)測 Hadoop 集群,包括支持 HDFS、MapReduceAHive、HCatalog、HBase、ZooKeeperAOozie、Pig 和 Sqoop 。
Ambari 也提供了一個可視的儀表盤來查看集群的健康狀態(tài),并且能夠使用戶可視化地查看 MapReduce、Pig 和 Hive 應(yīng)用來診斷其性能特征。
Hadoop 的生態(tài)圈還包括以下幾個框架,用來與其他企業(yè)融合。
1)Sqoop
一個連接工具,用于在關(guān)系數(shù)據(jù)庫、數(shù)據(jù)倉庫和 Hadoop 之間轉(zhuǎn)移數(shù)據(jù)。Sqoop 利用數(shù)據(jù)庫技術(shù)描述架構(gòu),進行數(shù)據(jù)的導(dǎo)入/導(dǎo)出;利用 MapReduce 實現(xiàn)并行化運行和容錯技術(shù)。
2)Flume
提供了分布式、可靠、高效的服務(wù),用于收集、匯總大數(shù)據(jù),并將單臺計算機的大量數(shù)據(jù)轉(zhuǎn)移到 HDFS。它基于一個簡單而靈活的架構(gòu),并提供了數(shù)據(jù)流的流。它利用簡單的可擴展的數(shù)據(jù)模型,將企業(yè)中多臺計算機上的數(shù)據(jù)轉(zhuǎn)移到 Hadoop。
Hadoop版本演進
當(dāng)前 Hadoop 有兩大版本:Hadoop 1.0 和 Hadoop 2.0,如圖 2 所示。Hadoop 1.0 被稱為第一代 Hadoop,由 HDFS 和 MapReduce 組成。
HDFS 由一個 NameNode 和多個 DataNode 組成,MapReduce 由一個 JobTracker 和多個 TaskTracker 組成。
Hadoop 1.0 對應(yīng)的 Hadoop 版本為0.20.x、0.21.x、 0.22.x 和 Hadoop 1.x。其中,0.20.x 是比較穩(wěn)定的版本,它最后演化為 1.x,變成穩(wěn)定版本。0.21.x 和 0.22.x 則增加了 NameNode HA 等新特性。

圖 2??Hadoop 版本演進圖
Hadoop 2.0 被稱為第二代 Hadoop,是為克服 Hadoop 1.0 中 HDFS 和 MapReduce 存在的各種問題而提出的,對應(yīng)的 Hadoop 版本為 0.23.x 和 2.x。
針對 Hadoop 1.0 中 NameNode HA 不支持自動切換且切換時間過長的風(fēng)險,Hadoop2.0 提出了基于共享存儲的 HA 方式,該方式支持失敗自動切換切回。
針對 Hadoop 1.0 中的單 NameNode 制約 HDFS 擴展性的問題,Hadoop 2.0 提出了 HDFS Federation 機制,它允許多個 NameNode 各自分管不同的命名空間,進而實現(xiàn)數(shù)據(jù)訪問隔離和集群橫向擴展。
針對 Hadoop 1.0 中的 MapReduce 在擴展性和多框架支持方面的不足,Hadoop 2.0 提出了全新的資源管理框架 YARN,它將 JobTracker 中的資源管理和作業(yè)控制功能分開,分別由組件 ResourceManager 和 ApplicationMaster 實現(xiàn)。
其中,ResourceManager 負責(zé)所有應(yīng)用程序的資源分配,而 ApplicationMaster 僅負責(zé)管理一個應(yīng)用程序。相比于 Hadoop 1.0,Hadoop 2.0 框架具有更好的擴展性、可用性、可靠性、向后兼容性和更高的資源利用率,Hadoop 2.0 還能支持除 MapReduce 計算框架以外的更多的計算框架,Hadoop2.0 是目前業(yè)界主流使用的 Hadoop 版本。
Hadoop 發(fā)行版本
雖然 Hadoop 是開源的 Apache 項目,但是在 Hadoop 行業(yè),仍然出現(xiàn)了大量的新興公司,它們以幫助人們更方便地使用 Hadoop 為目標(biāo)。這些企業(yè)大多將 Hadoop 發(fā)行版進行打包、改進,以確保所有的軟件一起工作。
Hadoop 的發(fā)行版除了社區(qū)的 Apache Hadoop 外,Cloudera、Hortonworks、MapR、EMC、IBM、INTEL、華為等都提供了自己的商業(yè)版本。商業(yè)版本主要是提供專業(yè)的技術(shù)支持,這對一些大型企業(yè)尤其重要。每個發(fā)行版都有自己的一些特點,本節(jié)就 3 個主要的發(fā)行版本做簡單介紹。
2008 年成立的 Cloudera 是最早將 Hadoop 商用的公司,它為合作伙伴提供 Hadoop 的商用解決方案,主要包括支持、咨詢服務(wù)和培訓(xùn)。Cloudera 的產(chǎn)品主要為 CDH、Cloudera Manager 和 Cloudera Support。CDH 是 Cloudem 的 Hadoop 發(fā)行版本,完全開源,比 Hadoop 在兼容性、安全性、穩(wěn)定性上有所增強。
Cloudera Manager 是集群的軟件分發(fā)及管理監(jiān)控平臺,可以在幾個小時內(nèi)部署好一個 Hadoop 集群,并對集群的結(jié)點及服務(wù)進行實時監(jiān)控。Cloudera Support 即是對 Hadoop 的技術(shù)支持。
2011 年成立的 Hortonworks 是 Yahoo 與硅谷風(fēng)投公司 Benchmark Capital 合資組建的公司。公司成立之初吸納了大約 25 名至 30 名專門研究 Hadoop 的 Yahoo 工程師,上述工程師均在 2005 年開始協(xié)助 Yahoo 開發(fā) Hadoop,這些工程師貢獻了 Hadoop 80% 的代碼。
Hortonworks的主打產(chǎn)品是Hortonworks DataPlatform(HDP),也同樣是 100% 開源的產(chǎn)品。HDP 除了常見的項目外,還包含了一款開源的安裝和管理系統(tǒng)(Amban)。
Cloudera 和 Hortonworks 均是通過不斷提交代碼來完善 Hadoop 的,而 2009 年成立的 MapR 公司在 Hadoop 領(lǐng)域顯得有些特立獨行,它提供了一款獨特的發(fā)行版本。
MapR 認為 Hadoop 的代碼只是參考,可以基于 Hadoop 提供的 API 來實現(xiàn)自己的需求。這種方法使得 MapR 做出了很大的創(chuàng)新,特別是在 HDFS 和 HBase 方面,MapR 讓這兩個基本的 Hadoop 的存儲機制更加可靠、更加高性能。
MapR 還推出了高速網(wǎng)絡(luò)文件系統(tǒng)(NFS)來訪問 HDFS,從而大大簡化了一些企業(yè)級應(yīng)用的集成。
MapR 用新架構(gòu)重寫 HDFS,同時在 API 級別,和目前的 Hadoop 發(fā)行版本保持兼容。MapR 構(gòu)建了一個 HDFS 的私有替代品,比開源版本快 3 倍,自帶快照功能,而且支持無 NameNode 單點故障。
MapR 版本不再需要單獨的 NameNode 機器,元數(shù)據(jù)分散在集群中,類似數(shù)據(jù)默認存儲 3 份,不再需要用 NAS 來協(xié)助 NameNode 做元數(shù)據(jù)備份,提高了機器使用率。
MapR 還有一個重要的特點是可以使用 NFS 直接訪問 HDFS,提供了與原有應(yīng)用的兼容性。MapR 的鏡像功能很適合做數(shù)據(jù)備份,而且支持跨數(shù)據(jù)中心的鏡像。