Hadoop介紹 (直奔主題) 開源的數(shù)據(jù)分析平臺,解決了大數(shù)據(jù)(大到一臺計算機無法進行存儲,一臺計算機無法在要求的時間內(nèi)進行處理)的可靠存儲和處理。適合處理非結(jié)構(gòu)化數(shù)據(jù),包括HDFS,MapReduce基本組件與擴展組件Pig、Hive、Hbase、Sqoop、Flume、ZooKeeper和Spark等。 Hadoop基本組件 HDFS組件:提供了一種跨服務(wù)器的彈性數(shù)據(jù)存儲系統(tǒng),在由普通PC組成的集群上提供高可靠的文件存儲,通過將塊保存多個副本的辦法解決服務(wù)器或硬盤壞掉的問題。 存儲結(jié)構(gòu)如下圖: MapReduce組件:通過簡單的Mapper和Reducer的抽象提供一個編程模型,可以在一個由幾十臺上百臺的PC組成的不可靠集群上并發(fā)地,分布式地處理大量的數(shù)據(jù)集,而把并發(fā)、分布式(如機器間通信)和故障恢復(fù)等計算細節(jié)隱藏起來。而Mapper和Reducer的抽象,又是各種各樣的復(fù)雜數(shù)據(jù)處理都可以分解為的基本元素。這樣,復(fù)雜的數(shù)據(jù)處理可以分解為由多個Job(包含一個Mapper和一個Reducer)組成的有向無環(huán)圖(DAG),然后每個Mapper和Reducer放到Hadoop集群上執(zhí)行,就可以得出結(jié)果。 MapReduce工作原理圖如下: Hadoop 擴展組件 這些技術(shù)主要包括了Sqoop、Flume、Hive、Pig、ZooKeeper、Spark等。 Pig組件:Apache Pig也是Hadoop框架中的一部分,Pig提供類SQL語言(Pig Latin)通過MapReduce來處理大規(guī)模半結(jié)構(gòu)化數(shù)據(jù)。而Pig Latin是更高級的過程語言,通過將MapReduce中的設(shè)計模式抽象為操作,如Filter,GroupBy,Join,OrderBy。 Hive組件:是一個基于 hadoop 的開源數(shù)據(jù)倉庫工具,用于存儲和處理海量結(jié)構(gòu)化數(shù)據(jù)。它把海量數(shù)據(jù)存儲于 hadoop 文件系統(tǒng),而不是數(shù)據(jù)庫,但提供了一套類數(shù)據(jù)庫的數(shù)據(jù)存儲和處理機制,并采用 HQL (類 SQL )語言對這些數(shù)據(jù)進行自動化管理和處理。我們可以把 Hive 中海量結(jié)構(gòu)化數(shù)據(jù)看成一個個的表,而實際上這些數(shù)據(jù)是分布式存儲在 HDFS 中的。 Hive 經(jīng)過對語句進行解析和轉(zhuǎn)換,最終生成一系列基于 hadoop 的 map/reduce 任務(wù),通過執(zhí)行這些任務(wù)完成數(shù)據(jù)處理。 Hbase組件: HBase是一個構(gòu)建在HDFS上的分布式列存儲系統(tǒng) HBase是基于Google BigTable模型開發(fā)的,典型的key/value系統(tǒng); HBase是Apache Hadoop生態(tài)系統(tǒng)中的重要一員,主要用于海量結(jié)構(gòu)化數(shù)據(jù)存儲; 從邏輯上講,HBase將數(shù)據(jù)按照表、行和列進行存儲。 與hadoop一樣,Hbase目標(biāo)主要依靠橫向擴展,通過不斷增加廉價的商用服務(wù)器,來增加計算和存儲能力。 與HDFS關(guān)系圖如下: Sqoop組件:Sqoop 工具是hadoop環(huán)境下連接關(guān)系數(shù)據(jù)庫(如 :MySQL ,Oracle) ,和hadoop存儲系統(tǒng)的橋梁,支持多種關(guān)系數(shù)據(jù)源和hive,hdfs,hbase的相互導(dǎo)入。一般情況下,關(guān)系數(shù)據(jù)表存在于線上環(huán)境的備份環(huán)境,需要每天進行數(shù)據(jù)導(dǎo)入,根據(jù)每天的數(shù)據(jù)量而言,sqoop可以全表導(dǎo)入,對于每天產(chǎn)生的數(shù)據(jù)量不是很大的情形可以全表導(dǎo)入,但是sqoop也提供了增量數(shù)據(jù)導(dǎo)入的機制。 Flume組件:Flume是Cloudera提供的日志收集系統(tǒng),F(xiàn)lume支持在日志系統(tǒng)中定制各類數(shù)據(jù)發(fā)送方,用于從網(wǎng)站服務(wù)器上收集數(shù)據(jù)。同時Flume提供對數(shù)據(jù)進行簡單處理,并寫到HDFS,HBase等集中存儲器中。Flume是一個分布式、可靠、和高可用的海量日志采集、聚合和傳輸?shù)南到y(tǒng)。 應(yīng)用場景比如我們在做一個電子商務(wù)網(wǎng)站,然后我們想從消費用戶中訪問點特定的節(jié)點區(qū)域來分析消費者的行為或者購買意圖. 這樣我們就可以更加快速的將他想要的推送到界面上,實現(xiàn)這一點,我們需要將獲取到的她訪問的頁面以及點擊的產(chǎn)品數(shù)據(jù)等日志數(shù)據(jù)信息收集并移交給Hadoop平臺上去分析.而Flume正是幫我們做到這一點。現(xiàn)在流行的內(nèi)容推送,比如廣告定點投放以及新聞私人定制也是基于次,不過不一定是使用FLume,畢竟優(yōu)秀的產(chǎn)品很多,比如facebook的Scribe,還有Apache新出的另一個明星項目chukwa,還有淘寶Time Tunnel。 結(jié)構(gòu)如下圖所示: ZooKeeper組件:一種集中服務(wù),其用于維護配置信息,命名,提供分布式同步,以及提供分組服務(wù)。 ZooKeeper是一個典型的分布式數(shù)據(jù)一致性的解決方案,分布式程序可以基于它實現(xiàn)諸如數(shù)據(jù)發(fā)布/訂閱、負載均衡、命名服務(wù)、分布式協(xié)調(diào)通知、集群管理、master選舉、分布式鎖、分布式隊列等功能。ZooKeeper可以保證如下分布式一致性特性。 順序一致性:從同一個客戶端發(fā)起的事務(wù)請求,最終將嚴格按照其發(fā)起順序被應(yīng)用到ZooKeeper中。 原子性:更新操作要么成功要么失敗,沒有中間狀態(tài) 單一視圖:不管客戶端連接哪一個服務(wù)器,客戶端看到服務(wù)端的數(shù)據(jù)模型都是一致的(the same view of service)。 可靠性:一旦一個更新成功,那么那就會被持久化,直到客戶端用新的更新覆蓋這個更新。 實時性:Zookeeper僅保證在一定時間內(nèi),客戶端最終一定能夠從服務(wù)端讀到最新的數(shù)據(jù)狀態(tài)。 Spark組件:Spark是一個Apache項目,它被標(biāo)榜為“快如閃電的集群計算”。它擁有一個繁榮的開源社區(qū),并且是目前最活躍的Apache項目之一。 Spark提供了一個更快、更通用的數(shù)據(jù)處理平臺。和Hadoop的MapReduce相比,Spark可以讓你的程序在內(nèi)存中運行時速度提升100倍,或者在磁盤上運行時速度提升10倍。去年,在100 TB Daytona GraySort比賽中,Spark戰(zhàn)勝了Hadoop,它只使用了十分之一的機器,但運行速度提升了3倍。Spark也已經(jīng)成為 針對 PB 級別數(shù)據(jù)排序的最快的開源引擎。注:MapReduce適合歷史數(shù)據(jù)分析計算,Spark適合實時數(shù)據(jù)分析計算。 Cloudera:100%開源的商業(yè)化Apache Hadoop發(fā)行版本(CDH, Cloudera’s Distribution including Apache Hadoop)和相關(guān)的組件,其中包括了各類安全高效的企業(yè)級數(shù)據(jù)管理工具,如Hive, HBase,Oozie, Zookeeper等。 Hortonworks:Hortonworks是一家基于Hadoop提供大數(shù)據(jù)服務(wù)的公司,致力于開發(fā)Hadoop框架內(nèi)軟件,提升大數(shù)據(jù)的處理能力。開發(fā)了很多增強特性并提交至核心主干,這使得Hadoop能夠在包括Windows Server和Azure在內(nèi)平臺上本地運行。 MapR:獲取更好的性能和易用性而支持本地Unix文件系統(tǒng)而不是HDFS。提供諸如快照、鏡像或有狀態(tài)的故障恢復(fù)等高可用性特性。領(lǐng)導(dǎo)著Apache Drill項目,是Google的Dremel的開源實現(xiàn),目的是在Hadoop數(shù)據(jù)上執(zhí)行類似SQL的查詢以提供實時處理。 最后結(jié)合上面介紹來一張各組件整體結(jié)構(gòu)圖如下: 注:計劃之后針對每個組件進行詳情介紹與如何安裝使用并形成獨立篇章,最后給合java語言進行開發(fā)步驟詳解。 |
|