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

圖 1 Hadoop的生態(tài)系統(tǒng)
Hadoop 生態(tài)圈包括以下主要組件。
1)HDFS
一個(gè)提供高可用的獲取應(yīng)用數(shù)據(jù)的分布式文件系統(tǒng)。
2)MapReduce
一個(gè)并行處理大數(shù)據(jù)集的編程模型。
3)HBase
一個(gè)可擴(kuò)展的分布式數(shù)據(jù)庫,支持大表的結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)。是一個(gè)建立在 HDFS 之上的,面向列的NoSQL數(shù)據(jù)庫,用于快速讀/寫大量數(shù)據(jù)。
4)Hive
一個(gè)建立在 Hadoop 上的數(shù)據(jù)倉庫基礎(chǔ)構(gòu)架。它提供了一系列的工具;可以用來進(jìn)行數(shù)據(jù)提取轉(zhuǎn)化加載(ETL),這是一種可以存儲(chǔ)、查詢和分析存儲(chǔ)在 Hadoop 中的大規(guī)模數(shù)據(jù)的機(jī)制。
Hive 定義了簡單的類 SQL 查詢語言,稱為 HQL,它允許不熟悉 MapReduce 的開發(fā)人員也能編寫數(shù)據(jù)查詢語句,然后這些語句被翻譯為 Hadoop 上面的 MapReduce 任務(wù)。
5)Mahout
可擴(kuò)展的機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘庫。它提供的 MapReduce 包含很多實(shí)現(xiàn)方法,包括聚類算法、回歸測試、統(tǒng)計(jì)建模。
6)Pig
一個(gè)支持并行計(jì)算的高級的數(shù)據(jù)流語言和執(zhí)行框架。它是 MapReduce 編程的復(fù)雜性的抽象。Pig 平臺包括運(yùn)行環(huán)境和用于分析 Hadoop 數(shù)據(jù)集的腳本語言(PigLatin)。其編譯器將 PigLatin 翻譯成 MapReduce 程序序列。
7)Zookeeper
—個(gè)應(yīng)用于分布式應(yīng)用的高性能的協(xié)調(diào)服務(wù)。它是一個(gè)為分布式應(yīng)用提供一致性服務(wù)的軟件,提供的功能包括配置維護(hù)、域名服務(wù)、分布式同步、組服務(wù)等。
8)Amban
一個(gè)基于 Web 的工具,用來供應(yīng)、管理和監(jiān)測 Hadoop 集群,包括支持 HDFS、MapReduceAHive、HCatalog、HBase、ZooKeeperAOozie、Pig 和 Sqoop 。
Ambari 也提供了一個(gè)可視的儀表盤來查看集群的健康狀態(tài),并且能夠使用戶可視化地查看 MapReduce、Pig 和 Hive 應(yīng)用來診斷其性能特征。
Hadoop 的生態(tài)圈還包括以下幾個(gè)框架,用來與其他企業(yè)融合。
1)Sqoop
一個(gè)連接工具,用于在關(guān)系數(shù)據(jù)庫、數(shù)據(jù)倉庫和 Hadoop 之間轉(zhuǎn)移數(shù)據(jù)。Sqoop 利用數(shù)據(jù)庫技術(shù)描述架構(gòu),進(jìn)行數(shù)據(jù)的導(dǎo)入/導(dǎo)出;利用 MapReduce 實(shí)現(xiàn)并行化運(yùn)行和容錯(cuò)技術(shù)。
2)Flume
提供了分布式、可靠、高效的服務(wù),用于收集、匯總大數(shù)據(jù),并將單臺計(jì)算機(jī)的大量數(shù)據(jù)轉(zhuǎn)移到 HDFS。它基于一個(gè)簡單而靈活的架構(gòu),并提供了數(shù)據(jù)流的流。它利用簡單的可擴(kuò)展的數(shù)據(jù)模型,將企業(yè)中多臺計(jì)算機(jī)上的數(shù)據(jù)轉(zhuǎn)移到 Hadoop。
Hadoop版本演進(jìn)
當(dāng)前 Hadoop 有兩大版本:Hadoop 1.0 和 Hadoop 2.0,如圖 2 所示。Hadoop 1.0 被稱為第一代 Hadoop,由 HDFS 和 MapReduce 組成。
HDFS 由一個(gè) NameNode 和多個(gè) DataNode 組成,MapReduce 由一個(gè) JobTracker 和多個(gè) 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 版本演進(jìn)圖
Hadoop 2.0 被稱為第二代 Hadoop,是為克服 Hadoop 1.0 中 HDFS 和 MapReduce 存在的各種問題而提出的,對應(yīng)的 Hadoop 版本為 0.23.x 和 2.x。
針對 Hadoop 1.0 中 NameNode HA 不支持自動(dòng)切換且切換時(shí)間過長的風(fēng)險(xiǎn),Hadoop2.0 提出了基于共享存儲(chǔ)的 HA 方式,該方式支持失敗自動(dòng)切換切回。
針對 Hadoop 1.0 中的單 NameNode 制約 HDFS 擴(kuò)展性的問題,Hadoop 2.0 提出了 HDFS Federation 機(jī)制,它允許多個(gè) NameNode 各自分管不同的命名空間,進(jìn)而實(shí)現(xiàn)數(shù)據(jù)訪問隔離和集群橫向擴(kuò)展。
針對 Hadoop 1.0 中的 MapReduce 在擴(kuò)展性和多框架支持方面的不足,Hadoop 2.0 提出了全新的資源管理框架 YARN,它將 JobTracker 中的資源管理和作業(yè)控制功能分開,分別由組件 ResourceManager 和 ApplicationMaster 實(shí)現(xiàn)。
其中,ResourceManager 負(fù)責(zé)所有應(yīng)用程序的資源分配,而 ApplicationMaster 僅負(fù)責(zé)管理一個(gè)應(yīng)用程序。相比于 Hadoop 1.0,Hadoop 2.0 框架具有更好的擴(kuò)展性、可用性、可靠性、向后兼容性和更高的資源利用率,Hadoop 2.0 還能支持除 MapReduce 計(jì)算框架以外的更多的計(jì)算框架,Hadoop2.0 是目前業(yè)界主流使用的 Hadoop 版本。
Hadoop 發(fā)行版本
雖然 Hadoop 是開源的 Apache 項(xiàng)目,但是在 Hadoop 行業(yè),仍然出現(xiàn)了大量的新興公司,它們以幫助人們更方便地使用 Hadoop 為目標(biāo)。這些企業(yè)大多將 Hadoop 發(fā)行版進(jìn)行打包、改進(jìn),以確保所有的軟件一起工作。
Hadoop 的發(fā)行版除了社區(qū)的 Apache Hadoop 外,Cloudera、Hortonworks、MapR、EMC、IBM、INTEL、華為等都提供了自己的商業(yè)版本。商業(yè)版本主要是提供專業(yè)的技術(shù)支持,這對一些大型企業(yè)尤其重要。每個(gè)發(fā)行版都有自己的一些特點(diǎn),本節(jié)就 3 個(gè)主要的發(fā)行版本做簡單介紹。
2008 年成立的 Cloudera 是最早將 Hadoop 商用的公司,它為合作伙伴提供 Hadoop 的商用解決方案,主要包括支持、咨詢服務(wù)和培訓(xùn)。Cloudera 的產(chǎn)品主要為 CDH、Cloudera Manager 和 Cloudera Support。CDH 是 Cloudem 的 Hadoop 發(fā)行版本,完全開源,比 Hadoop 在兼容性、安全性、穩(wěn)定性上有所增強(qiáng)。
Cloudera Manager 是集群的軟件分發(fā)及管理監(jiān)控平臺,可以在幾個(gè)小時(shí)內(nèi)部署好一個(gè) Hadoop 集群,并對集群的結(jié)點(diǎn)及服務(wù)進(jìn)行實(shí)時(shí)監(jiān)控。Cloudera Support 即是對 Hadoop 的技術(shù)支持。
2011 年成立的 Hortonworks 是 Yahoo 與硅谷風(fēng)投公司 Benchmark Capital 合資組建的公司。公司成立之初吸納了大約 25 名至 30 名專門研究 Hadoop 的 Yahoo 工程師,上述工程師均在 2005 年開始協(xié)助 Yahoo 開發(fā) Hadoop,這些工程師貢獻(xiàn)了 Hadoop 80% 的代碼。
Hortonworks的主打產(chǎn)品是Hortonworks DataPlatform(HDP),也同樣是 100% 開源的產(chǎn)品。HDP 除了常見的項(xiàng)目外,還包含了一款開源的安裝和管理系統(tǒng)(Amban)。
Cloudera 和 Hortonworks 均是通過不斷提交代碼來完善 Hadoop 的,而 2009 年成立的 MapR 公司在 Hadoop 領(lǐng)域顯得有些特立獨(dú)行,它提供了一款獨(dú)特的發(fā)行版本。
MapR 認(rèn)為 Hadoop 的代碼只是參考,可以基于 Hadoop 提供的 API 來實(shí)現(xiàn)自己的需求。這種方法使得 MapR 做出了很大的創(chuàng)新,特別是在 HDFS 和 HBase 方面,MapR 讓這兩個(gè)基本的 Hadoop 的存儲(chǔ)機(jī)制更加可靠、更加高性能。
MapR 還推出了高速網(wǎng)絡(luò)文件系統(tǒng)(NFS)來訪問 HDFS,從而大大簡化了一些企業(yè)級應(yīng)用的集成。
MapR 用新架構(gòu)重寫 HDFS,同時(shí)在 API 級別,和目前的 Hadoop 發(fā)行版本保持兼容。MapR 構(gòu)建了一個(gè) HDFS 的私有替代品,比開源版本快 3 倍,自帶快照功能,而且支持無 NameNode 單點(diǎn)故障。
MapR 版本不再需要單獨(dú)的 NameNode 機(jī)器,元數(shù)據(jù)分散在集群中,類似數(shù)據(jù)默認(rèn)存儲(chǔ) 3 份,不再需要用 NAS 來協(xié)助 NameNode 做元數(shù)據(jù)備份,提高了機(jī)器使用率。
MapR 還有一個(gè)重要的特點(diǎn)是可以使用 NFS 直接訪問 HDFS,提供了與原有應(yīng)用的兼容性。MapR 的鏡像功能很適合做數(shù)據(jù)備份,而且支持跨數(shù)據(jù)中心的鏡像。