Hadoop详解(一):Hadoop简介
1. Hadoop 起源
1.1 Hadoop的身世
首先我們介紹一下Nutch的發(fā)展情況,Nutch是一個(gè)以Lucene為基礎(chǔ)實(shí)現(xiàn)的搜索引擎系統(tǒng),Lucene為Nutch提供了文本檢索和索引的API,Nutch不僅僅有檢索的功能,還有網(wǎng)頁(yè)數(shù)據(jù)采集的功能。
1.2 Hadopop簡(jiǎn)介
Hadoop本質(zhì)上起源于Google的集群系統(tǒng),Google的數(shù)據(jù)中心使用廉價(jià)的Linux PC機(jī)組成集群,用其運(yùn)行各種應(yīng)用。即使是分布式開發(fā)的新手也可以迅速使用Google的基礎(chǔ)設(shè)施Google采集系統(tǒng)的核心的組件有兩個(gè):
Map是把輸入Input分解成中間的Key/Value對(duì),Reduce把Key/Value合成最終輸出Output。這兩個(gè)函數(shù)由程序員提供給系統(tǒng),下層設(shè)施把Map和Reduce操作分布在集群上運(yùn)行,并把結(jié)果存儲(chǔ)在GFS上。
典型的Hadoop由一個(gè)Master邏輯節(jié)點(diǎn)和多個(gè)Slave邏輯節(jié)點(diǎn)構(gòu)成,Master邏輯節(jié)點(diǎn)由NameNode和ResourceManager組成,NameNode是HDFS的Master,主要負(fù)責(zé)Hadoop分布式文件系統(tǒng)元數(shù)據(jù)的管理工作;ResourceManager是MapReduce的Master,其主要職責(zé)就是啟動(dòng)、跟蹤、調(diào)度各個(gè)NodeManager的任務(wù)執(zhí)行,每一個(gè)Slave邏輯節(jié)點(diǎn)通常同時(shí)具有DataNode以及NodeManager的功能。
下面我們介紹一下Hadoop整個(gè)生態(tài)系統(tǒng):
- HDFS——Hadoop分布式文件系統(tǒng),GFS的Java開源實(shí)現(xiàn),運(yùn)行于大型商用機(jī)器集
群,可實(shí)現(xiàn)分布式存儲(chǔ)。 - MapReduce——一種并行計(jì)算框架,Google MapReduce模型的Java開源實(shí)現(xiàn),基于其寫出來(lái)的應(yīng)用程序能夠運(yùn)行在由上千個(gè)商用機(jī)器組成的大型集群上,并以一種可靠容錯(cuò)的方式并行處理T級(jí)別及以上的數(shù)據(jù)集。
- Zookeeper——分布式協(xié)調(diào)系統(tǒng),Google Chubby的Java開源實(shí)現(xiàn),是高可用的和可靠的分布式協(xié)同(coordination)系統(tǒng),提供分布式鎖之類的基本服務(wù),用于構(gòu)建分布式應(yīng)用。
- Hbase——基于Hadoop的分布式數(shù)據(jù)庫(kù),Google BigTable的開源實(shí)現(xiàn) 是一個(gè)有
序、稀疏、多維度的映射表,有良好的伸縮性和高可用性,用來(lái)將數(shù)據(jù)存儲(chǔ)到各個(gè)計(jì)算節(jié)點(diǎn)上。 - Hive——是為提供簡(jiǎn)單的數(shù)據(jù)操作而設(shè)計(jì)的分布式數(shù)據(jù)倉(cāng)庫(kù),它提供了簡(jiǎn)單的類似
SQL語(yǔ)法的HiveQL語(yǔ)言進(jìn)行數(shù)據(jù)查詢。 - Cloudbase——基于Hadoop的數(shù)據(jù)倉(cāng)庫(kù),支持標(biāo)準(zhǔn)的SQL語(yǔ)法進(jìn)行數(shù)據(jù)查詢。
- Pig——大數(shù)據(jù)流處理系統(tǒng),建立于Hadoop之上為并行計(jì)算環(huán)境提供了一套數(shù)據(jù)工
作流語(yǔ)言和執(zhí)行框架。 - Mahout——基于HadoopMapReduce的大規(guī)模數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)算法庫(kù)
- Oozie——MapReduce工作流管理系統(tǒng)。
- Sqoop——數(shù)據(jù)轉(zhuǎn)移系統(tǒng),是一個(gè)用來(lái)將Hadoop和關(guān)系型數(shù)據(jù)庫(kù)中的數(shù)據(jù)相互轉(zhuǎn)
移的工具,可以將一個(gè)關(guān)系型數(shù)據(jù)庫(kù)中的數(shù)據(jù)導(dǎo)入Hadoop的HDFS中,也可以將HDFS
的數(shù)據(jù)導(dǎo)入關(guān)系型數(shù)據(jù)庫(kù)中。 - Flume——一個(gè)可用的、可靠的、分布式的海量日志采集、聚合和傳輸系統(tǒng)
- Scribe——Facebook開源的日志收集聚合框架系統(tǒng)。
2. 大數(shù)據(jù)、Hadoop和云計(jì)算
2.1 大數(shù)據(jù)
大數(shù)據(jù)一般是指的是這樣的數(shù)據(jù):數(shù)據(jù)量大,需要運(yùn)用新處理模式才能更具有更強(qiáng)大的決策力、洞察力和流程優(yōu)化能力的海量、高增長(zhǎng)率和多樣化的信息資產(chǎn)。
大數(shù)據(jù)的特征有四個(gè)層面:第一,數(shù)據(jù)量巨大,從TB級(jí)別,躍升到PB級(jí)別;第二,數(shù)據(jù)類型繁多,包括網(wǎng)絡(luò)日志、視頻、圖片、地理位置信息等;第三,價(jià)值密度低,商業(yè)價(jià)值高,以視頻為例,在連續(xù)不間斷的監(jiān)控過(guò)程中,可能有用的數(shù)據(jù)僅僅只有一兩秒;第四,處理速度快。最后這一點(diǎn)也和傳統(tǒng)的數(shù)據(jù)挖掘技術(shù)有著本質(zhì)的不同。業(yè)界將其歸納為4V——Volume、Variety、Value和Velocity
上面我們介紹了大數(shù)據(jù)的基本概念以及顯著的特征,下面我們將從不同的維度來(lái)闡述大數(shù)據(jù)的很細(xì)問(wèn)題:
2.2 大數(shù)據(jù)、Hadoop和云計(jì)算的關(guān)系
分布式存儲(chǔ)架構(gòu)不僅需要scale up的可擴(kuò)展性,也需要scale out式的可擴(kuò)展性,因此大數(shù)據(jù)處理離不開云計(jì)算技術(shù),云計(jì)算也為大數(shù)據(jù)提供彈性可擴(kuò)展的基礎(chǔ)設(shè)施支撐環(huán)境以及數(shù)據(jù)服務(wù)的高效模式,大數(shù)據(jù)則為云計(jì)算提供了新的商業(yè)價(jià)值,大數(shù)據(jù)技術(shù)和云計(jì)算技術(shù)必將有更完美的結(jié)合。
3. 設(shè)計(jì)思想和架構(gòu)
從計(jì)算的角度,再超級(jí)的計(jì)算機(jī)也很難一下處理海量的數(shù)據(jù),因而需要分而為之,Hadoop就能將大數(shù)據(jù)進(jìn)行分而處理,然后進(jìn)行歸約。
3.1 數(shù)據(jù)存儲(chǔ)和切分
HDFS式Hadoop分布式計(jì)算的存儲(chǔ)基石,簡(jiǎn)單總結(jié)下來(lái)有如下基本特征:
- 對(duì)于整個(gè)集群有單一的命名空間。
- 數(shù)據(jù)一致性。適合一次寫入多次讀取的模型,客戶端在文件沒(méi)有被成功創(chuàng)建之前無(wú)
法看到文件存在。 - 文件會(huì)被分割成多個(gè)文件塊,每個(gè)文件塊被分配存儲(chǔ)到數(shù)據(jù)節(jié)點(diǎn)上,而且根據(jù)配置
會(huì)有復(fù)制文件塊來(lái)保證數(shù)據(jù)的安全性。
在Hadoop中數(shù)據(jù)存儲(chǔ)涉及HDFS的三個(gè)重要角色,分別為:名稱節(jié)點(diǎn)
(NameNode)、數(shù)據(jù)節(jié)點(diǎn)(DataNode)、客戶端。
NameNode可以看做是分布式文件系統(tǒng)中的管理者,主要負(fù)責(zé)管理文件系統(tǒng)的命名空間、集群配置信息、存儲(chǔ)塊的復(fù)制。NameNode會(huì)存儲(chǔ)文件系統(tǒng)的Metadata在內(nèi)存中,這些信息主要包括文件信息,即每一個(gè)文件對(duì)應(yīng)的文件塊的信息,以及每一個(gè)塊在DataNode的信息。
DataNode是文件存儲(chǔ)的基本單元。它將Block存儲(chǔ)在本地文件系統(tǒng)中,保存了Block的Metadata,同時(shí)周期性地發(fā)送所有存在的Block的報(bào)告給NameNodeClient就是需要獲取分布式文件系統(tǒng)文件的應(yīng)用程序。
數(shù)據(jù)存儲(chǔ)中的讀取和寫入過(guò)程,如下:
文件寫入HDFS的基本流程如下:
文件讀取HDFS的基本流程如下:
在HDFS中復(fù)制文件塊的基本流程如下:
3.2 MapReduce模型
Hadoop向用戶提供了一個(gè)規(guī)范的MapReduce編程接口,用戶只需要編寫Map和Reduce函數(shù),這兩個(gè)函數(shù)都是運(yùn)行在鍵-值基礎(chǔ)上,整數(shù)的切分,節(jié)點(diǎn)之間的通信調(diào)度等全部由Hadoop框架本身來(lái)負(fù)責(zé)。
在Map之前會(huì)對(duì)輸入的數(shù)據(jù)有split的過(guò)程,默認(rèn)split就是寫入數(shù)據(jù)時(shí)的邏輯塊,每一個(gè)塊對(duì)應(yīng)一個(gè)split,一個(gè)split就對(duì)應(yīng)一個(gè)Map進(jìn)程,正是split保證了任務(wù)的并行效率。在Map之后還會(huì)有shuffle和sort的過(guò)程,shuffle簡(jiǎn)單描述就是一個(gè)Map的輸出應(yīng)該映射到哪個(gè)Reduce作為輸入,sort就是指在Map運(yùn)行完輸出后會(huì)根據(jù)輸出的鍵進(jìn)行排序。這兩個(gè)處理步驟對(duì)于提高Reduce的效率及減小數(shù)據(jù)傳輸?shù)膲毫τ泻艽蟮膸椭?/p>
MapReduce基本思想
從本質(zhì)上講MapReduce借鑒了函數(shù)式程序設(shè)計(jì)語(yǔ)言的設(shè)計(jì)思想,其軟件實(shí)現(xiàn)是指定一個(gè)Map函數(shù),把鍵值對(duì)(key/value)映射成新的鍵值對(duì)(key/value)形成一系列中間結(jié)果形式的鍵值對(duì)(key/value),然后把它們傳給Reduce(歸約函數(shù),把具有相同中間形式key的value合并在一起。Map和Reduce函數(shù)具有一定的關(guān)聯(lián)性。其算法描述為:
Map(k,v)-> list(k1,v1) Reduce(k1,list(v1))->list(v1)在Map過(guò)程中將數(shù)據(jù)并行,即把數(shù)據(jù)用映射函數(shù)規(guī)則分開,而Reduce則把分開的數(shù)據(jù)用歸約函數(shù)規(guī)則合在一起,即Map是個(gè)分的過(guò)程,Reduce則對(duì)應(yīng)著合。
3.3 MPI和MapReduce
利用MapReduce,程序員能夠輕松地編寫緊耦合的程序,在運(yùn)行時(shí)能高效地調(diào)度和執(zhí)行任務(wù),在實(shí)現(xiàn)時(shí),在Map函數(shù)中指定對(duì)各分塊數(shù)據(jù)的處理過(guò)程,在Reduce函數(shù)中指定如何對(duì)分塊數(shù)據(jù)處理的中間結(jié)果進(jìn)行歸約。用戶只需要指定Map和Reduce函數(shù)來(lái)編寫分布式的并行程序不需要關(guān)心如何將輸入的數(shù)據(jù)分塊、分配和調(diào)度,同時(shí)系統(tǒng)還將處理集群內(nèi)節(jié)點(diǎn)失敗及節(jié)點(diǎn)間通信的管理等。
4.Hadoop發(fā)行版
4.1 Apache Hadoop
Apache Hadoop是Hadoop最權(quán)威的官方版本,就像Linux的內(nèi)核與Linux的發(fā)行版的地位一樣,Apache Hadoop版本是所有商業(yè)發(fā)行版之源,主要組件為HDFS和MapReduce。
4.2 Cloudera Hadoop
Cloudera成立于2008年,是最早將Hadoop用于商業(yè)化的公司,為其合作伙伴提供Hadoop的商用解決方案,主要包括支持、咨詢服務(wù)、培訓(xùn)。
Cloudera的Hadoop發(fā)行版在商用中算是最成功的,Cloudera的CDH版本集成了Hadoop、Pig、Flume、HBase、Hcatalog、Hive、Hue、Mahout、Oozie、Sqoop、Whirr以及Zookeeper版本,并且也是開源的,最新版本為CDH4.2.0
4.3 Hortonworks Hadoop 發(fā)行版
4.4 MapR Hadoop 發(fā)行版
4.5 IBM Hadoop 發(fā)行版
4.6 Intel Hadoop 發(fā)行版
4.7 華為Hadoop發(fā)行版
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的Hadoop详解(一):Hadoop简介的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Zookeeper分布式一致性原理(十一
- 下一篇: Hadoop详解(三):HDFS完全分布