孫小娟
(重慶電子工程職業(yè)學(xué)院 重慶 401331)
Hadoop項(xiàng)目誕生于Doug Cutting 和Mike Cafarella創(chuàng)建的開源搜索引擎項(xiàng)目Nutch,基于Java語言編寫,具有良好的跨平臺特性,可以部署在廉價的計(jì)算機(jī)集群中。Hadoop包含三大核心技術(shù),即HDFS、Map Reduce和YARN,它們的發(fā)展離不開Google的三駕馬車,即Google的《The Google File System》《Map Reduce》《Bigtable: A Distributed Storage System for Structured Data》三篇論文。Apache Hadoop誕生后,衍生了很多商用的Hadoop版本,如CDH、HDP、MapR等。
HDFS(Hadoop Distributed File System)分布式文件系統(tǒng),是Google GFS論文的開源,Hadoop核心項(xiàng)目的子項(xiàng)目。支持海量數(shù)據(jù)的存儲,具有高容錯性、高可靠性、高可擴(kuò)展性、高吞吐率等特征,適合“一次寫入,多次讀取”,處理PB級以上海量數(shù)據(jù)的存儲。HDFS主要由NameNode、DataNode和SecondaryNameNode組成,NameNode是HDFS的管理者;DataNode儲存數(shù)據(jù)塊,Hadoop1.0中文件塊默認(rèn)大小為64MB,Hadoop2.0中文件塊的默認(rèn)大小為128MB;SecondaryNameNode是NameNode的冷備。
Map Reduce是一種分布式并行編程模型,用于大數(shù)據(jù)集的計(jì)算,具有易編程、高可擴(kuò)展性、高容錯性的特點(diǎn)。Map Reduce采用“分而治之”的思想,將對大規(guī)模數(shù)據(jù)集的操作,劃分給一個主節(jié)點(diǎn)管理下的各個子節(jié)點(diǎn)共同完成,再整合各個子節(jié)點(diǎn)的中間結(jié)果,從而得到最終的計(jì)算結(jié)果,即“分散任務(wù),匯總結(jié)果”[1]。Map Reduce,顧名思義,由Map(映射)階段和Reduce(歸約)階段組成,用戶只需編程map()和reduce()兩個函數(shù),即可完成分布式的計(jì)算??蛻舳溯斎胍粋€大文件后,通過split過程,將其劃分成多個分片,每個分片由單獨(dú)的機(jī)器處理(map方法),最后將各個機(jī)器的計(jì)算結(jié)果匯總從而得到最終結(jié)果(reduce方法)。
YARN(Yet Another Resource Negotiator)是一種通用資源調(diào)度架構(gòu),不僅支持Map Reduce,也可以支持其他分布式計(jì)算模式,如Spark、Tez等分布式計(jì)算架構(gòu)。YARN被引入Hadoop2.0,克服了Hadoop1.0中Map Reduce的不足,提高了集群的利用率,方便資源的統(tǒng)一管理和調(diào)度,具有良好的擴(kuò)展性和高可用性。
Hadoop的生態(tài)系統(tǒng)還包含其他組件。Hbase,hadoop的非關(guān)系型數(shù)據(jù)庫,是一個分布式的、面向列的開源數(shù)據(jù)庫,位于HDFS基礎(chǔ)之上,是Google Bigtable的開源實(shí)現(xiàn),介于關(guān)系型和非關(guān)系型數(shù)據(jù)庫之間,主要用來存儲結(jié)構(gòu)化和半結(jié)構(gòu)化的松散數(shù)據(jù),具有高容錯性和高可靠性。Hive是基于Hadoop的一個數(shù)據(jù)倉庫工具,由Facebook實(shí)現(xiàn)并開源,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供類sql查詢功能,可以將sql語句轉(zhuǎn)換為MapReduce任務(wù)進(jìn)行運(yùn)行。Zookeeper,由雅虎創(chuàng)建,是Google Chubby的開源實(shí)現(xiàn),是一個開源的高可用的分布式數(shù)據(jù)管理和協(xié)調(diào)框架,基于對Paxos算法的實(shí)現(xiàn),能夠很好地保證分布式環(huán)境中數(shù)據(jù)的一致性。同時,ZooKeeper是一個集中式服務(wù),用于維護(hù)配置信息,提供分布式同步和提供組服務(wù)。Mahout,Apache旗下的一個開源項(xiàng)目,提供了一些經(jīng)典的機(jī)器學(xué)習(xí)的算法,可幫助開發(fā)人員更加方便快捷地創(chuàng)建智能應(yīng)用程序。Mahout主要有三大類機(jī)器學(xué)習(xí)算法,包括聚類、分類和推薦。
Apache Hadoop是Apache提供的官方版本,目前有三個版本,Hadoop1.0、Hadoop2.0及Hadoop3.0。Hadoop1.0包含三個大版本,分別為0.20.x,0.21.x和0.22.x。Hadoop2.0包含兩個版本,分別為0.23.x和2.x,它們完全不同于Hadoop1.0,Hadoop2.0是在Hadoop1.0上的重構(gòu),相比Hadoop1.0增加了資源管理系統(tǒng)YARN[2]。Hadoop3.0版本于2017年發(fā)布,對Hadoop的功能和性能做了很大的提升。Apache Hadoop完全開源,社區(qū)活躍,具有詳實(shí)的文檔資料,但其版本管理混亂,集群運(yùn)維復(fù)雜,工作量龐大,需要借助第三方軟件,運(yùn)維系統(tǒng)環(huán)境復(fù)雜,需要考慮版本組件的兼容問題,兼容性差,安全性差[3]。
CDH,Cloudera’s Distribution Including Apache Hadoop,是 Cloudera公司的Hadoop發(fā)行版本。Cloudera公司成立于2008年,是最早將Hadoop商用的公司。CDH基于穩(wěn)定版本的Apache Hadoop開發(fā),完全開源,支持Kerberos安全認(rèn)證,版本的更新速度快,且其版本劃分清晰,CDH3基于Hadoop1.x,CDH4和CDH5基于Hadoop2.x。支持多種安裝方式,如Cloudera Manager、yum、rpm等。CDH開發(fā)并貢獻(xiàn)了可實(shí)時處理大數(shù)據(jù)的Impala項(xiàng)目。CDH比 Apache Hadoop 在兼容性、安全性和穩(wěn)定性上有所增強(qiáng),部署和運(yùn)維方便,已成為企業(yè)生產(chǎn)環(huán)境下裝機(jī)量最大的Hadoop發(fā)行版本,有免費(fèi)版和企業(yè)版,具有強(qiáng)大的社區(qū)支持。CDH是一個擁有集群自動化安裝、中心化管理、集群監(jiān)控、報(bào)警功能的一個大數(shù)據(jù)處理工具。
HDP,Hortonworks Data Platform,Hortonworks公司基于apache Hadoop生態(tài)系統(tǒng)構(gòu)建的大數(shù)據(jù)分析平臺,開源。Hortonworks公司于2011年7月由雅虎與硅谷風(fēng)投公司Benchmark Capital合資組建,Hortonworks在推行發(fā)行版本的同時還為Apache Hadoop社區(qū)作出了很大貢獻(xiàn),是開源Hadoop社區(qū)的重要貢獻(xiàn)者。Hortonworks入門提供了一個非常好的、易于使用的沙盒,提出了YARN、Tez等擴(kuò)展框架,開發(fā)了很多增強(qiáng)特性并提交至核心主干,其Stinger開創(chuàng)性地極大地優(yōu)化了Hive項(xiàng)目。HDP除了常見的項(xiàng)目,還包含Ambari,它是一款基于web的工具,支持Hadoop集群的創(chuàng)建、管理和監(jiān)控。
成立于2009年的MapR公司,曾被稱為大數(shù)據(jù)行業(yè)的獨(dú)角獸,它提供了一款獨(dú)特的Hadoop發(fā)行版本,有商業(yè)版和免費(fèi)版,免費(fèi)版在功能上有所縮減。MapR認(rèn)為Hadoop的性能缺陷來自于其架構(gòu)設(shè)計(jì)本身,故用新架構(gòu)重寫HDFS,開發(fā)了自己的文件系統(tǒng)MAPR-FS,注重實(shí)時流處理應(yīng)用,與現(xiàn)有HDFS的API兼容,自帶快照功能,專注于數(shù)據(jù)安全優(yōu)化的Hadoop大數(shù)據(jù)分析平臺。
當(dāng)然,還有其他的Hadoop發(fā)行版本,如,EMC的Pivotal HD、IBM的InfoSphere BigInsights大數(shù)據(jù)平臺、華為的FusionInsight Hadoop、Intel的發(fā)行版、DKhadoop等,華為和Intel的Hadoop發(fā)行版本都是收費(fèi)的。CDH、HDP和MapR是全球三大Hadoop開源大數(shù)據(jù)供應(yīng)商,其中Cloudera和Hortonworks于2018年合并,MapR于2019年被惠普企業(yè)HPE收購。
總之,每個發(fā)行版本都有其自身的特點(diǎn)。MapR沒有使用Apache Hadoop HDFS,本文主要比較社區(qū)版Hadoop和CDH、HDP的區(qū)別。企業(yè)版和Apache Hadoop社區(qū)版相比,企業(yè)版存在廠商鎖定的問題,部分服務(wù)收費(fèi)。但CDH和HDP也有免費(fèi)版、開源,與Apache Hadoop版本相比,它們更易于維護(hù)、管理,且穩(wěn)定性高。企業(yè)版中,CDH的文檔資料更詳細(xì),大數(shù)據(jù)部署案例更多;HDP與apache版本同步,且其內(nèi)部員工大部分是Apache代碼貢獻(xiàn)者。在Hadoop集群的管理中,Apache Hadoop采用手工部署管理方式,工作量大。CDH采用Cloudera Manager工具部署,HDP采用Ambari工具部署,均大大提高了Hadoop集群的部署效率,Cloudera Manger和Ambari是當(dāng)前兩大最主流的Hadoop集群管理工具。開發(fā)人員在選擇Hadoop版本時,主要要考慮該版本是否開源、是否有穩(wěn)定版,是否有強(qiáng)大的社區(qū)支持等因素,其中強(qiáng)大的社區(qū)支持可以為用戶提供一個答疑解惑的平臺,方便討論交流。