Hadoop概念学习系列之Hadoop 生态系统
當(dāng)下 Hadoop 已經(jīng)成長為一個龐大的生態(tài)體系,只要和海量數(shù)據(jù)相關(guān)的領(lǐng)域,都有 Hadoop 的身影。下圖是一個 Hadoop 生態(tài)系統(tǒng)的圖譜,詳細列舉了在 Hadoop 這個生態(tài)系統(tǒng)中出現(xiàn)的各種數(shù)據(jù)工具。
這一切,都起源自 Web 數(shù)據(jù)爆炸時代的來臨。Hadoop 生態(tài)系統(tǒng)的功能以及對應(yīng)的開源工具說明如下。
?
?
?
?
MapReduce
fork是計算機程序設(shè)計中的分叉函數(shù)。
Google的網(wǎng)絡(luò)搜索引擎在得益于算法發(fā)揮作用的同時,MapReduce在后臺發(fā)揮了極大的作用。MapReduce框架成為當(dāng)今大數(shù)據(jù)處理背后的最具影響力的“發(fā)動機”。
? ? ? ?MapReduce的重要創(chuàng)新是當(dāng)處理一個大數(shù)據(jù)集查詢時會將其任務(wù)分解并在運行的多個節(jié)點中處理。當(dāng)數(shù)據(jù)量很大時就無法在一臺服務(wù)器上解決問題,此時分布式計算優(yōu)勢就體現(xiàn)出來。將這種技術(shù)與Linux服務(wù)器結(jié)合可獲得性價比極高的替代大規(guī)模計算陣列的方法。Yahoo在2006年看到了Hadoop未來的潛力,并邀請Hadoop創(chuàng)始人Doug Cutting著手發(fā)展Hadoop技術(shù),在2008年Hadoop已經(jīng)形成一定的規(guī)模。Hadoop項目再從初期發(fā)展的成熟的過程中同時吸納了一些其他的組件,以便進一步提高自身的易用性和功能。
?
?
?
?
HDFS
? 對于分布式計算,每個服務(wù)器必須具備對數(shù)據(jù)的訪問能力,這就是HDFS(Hadoop Distributed File System)所起到的作用。 HDFS與MapReduce的結(jié)合是強大的。在處理大數(shù)據(jù)的過程中,當(dāng)Hadoop集群中的服務(wù)器出現(xiàn)錯誤時,整個計算過程并不會終止。同時HFDS可保障在整個集群中發(fā)生故障錯誤時的數(shù)據(jù)冗余。當(dāng)計算完成時將結(jié)果寫入HFDS的一個節(jié)點之中。HDFS對存儲的數(shù)據(jù)格式并無苛刻的要求,數(shù)據(jù)可以是非結(jié)構(gòu)化或其它類別。相反關(guān)系數(shù)據(jù)庫在存儲數(shù)據(jù)之前需要將數(shù)據(jù)結(jié)構(gòu)化并定義架構(gòu)。 開發(fā)人員編寫代碼責(zé)任是使數(shù)據(jù)有意義。Hadoop MapReduce級的編程利用Java APIs,并可手動加載數(shù)據(jù)文件到HDFS之中。
?
?
?
?
Pig和Hive
對于開發(fā)人員,直接使用Java APIs可能是乏味或容易出錯的,同時也限制了Java程序員在Hadoop上編程的運用靈活性。于是Hadoop提供了兩個解決方案:Pig和Hive,使得Hadoop編程變得更加容易。
????????Pig:是一種編程語言,它簡化了Hadoop常見的工作任務(wù)。Pig可加載數(shù)據(jù)、表達轉(zhuǎn)換數(shù)據(jù)以及存儲最終結(jié)果。Pig內(nèi)置的操作使得半結(jié)構(gòu)化數(shù)據(jù)變得有意義(如日志文件)。同時Pig可擴展使用Java中添加的自定義數(shù)據(jù)類型并支持數(shù)據(jù)轉(zhuǎn)換。
????????Hive:在Hadoop中扮演數(shù)據(jù)倉庫的角色。Hive添加數(shù)據(jù)的結(jié)構(gòu)在HDFS(hive superimposes structure on data in HDFS),并允許使用類似于SQL語法進行數(shù)據(jù)查詢。與Pig一樣,Hive的核心功能是可擴展的。
????????Pig和Hive總是令人困惑的。Hive更適合于數(shù)據(jù)倉庫的任務(wù),Hive主要用于靜態(tài)的結(jié)構(gòu)以及需要經(jīng)常分析的工作。Hive與SQL相似促使其成為Hadoop與其他BI工具結(jié)合的理想交集。Pig賦予開發(fā)人員在大數(shù)據(jù)集領(lǐng)域更多的靈活性,并允許開發(fā)簡潔的腳本用于轉(zhuǎn)換數(shù)據(jù)流以便嵌入到較大的應(yīng)用程序。Pig相比Hive相對輕量,它主要的優(yōu)勢是相比于直接使用Hadoop Java APIs可大幅削減代碼量。正因為如此,Pig仍然吸引了大量的軟件開發(fā)人員。
?
?
?
?
?
HBase、Sqoop以及Flume
Hadoop核心還是一套批處理系統(tǒng),數(shù)據(jù)加載進HDFS、處理然后檢索。對于計算這或多或少有些倒退,但通常互動和隨機存取數(shù)據(jù)是有必要的。HBase作為面向列的數(shù)據(jù)庫運行在HDFS之上。HBase以Google BigTable為藍本。項目的目標就是快速在主機內(nèi)數(shù)十億行數(shù)據(jù)中定位所需的數(shù)據(jù)并訪問它。HBase利用MapReduce來處理內(nèi)部的海量數(shù)據(jù)。同時Hive和Pig都可以與HBase組合使用,Hive和Pig還為HBase提供了高層語言支持,使得在HBase上進行數(shù)據(jù)統(tǒng)計處理變得非常簡單。
? ? ? ?但為了授權(quán)隨機存儲數(shù)據(jù),HBase也做出了一些限制:例如Hive與HBase的性能比原生在HDFS之上的Hive要慢4-5倍。同時HBase大約可存儲PB級的數(shù)據(jù),與之相比HDFS的容量限制達到30PB。HBase不適合用于ad-hoc分析,HBase更適合整合大數(shù)據(jù)作為大型應(yīng)用的一部分,包括日志、計算以及時間序列數(shù)據(jù)。
? ? ? ?Sqoop和Flume可改進數(shù)據(jù)的互操作性和其余部分。Sqoop功能主要是從關(guān)系數(shù)據(jù)庫導(dǎo)入數(shù)據(jù)到Hadoop,并可直接導(dǎo)入到HFDS或Hive。而Flume設(shè)計旨在直接將流數(shù)據(jù)或日志數(shù)據(jù)導(dǎo)入HDFS。
?
?
?
?
ZooKeeper和Oozie
隨著越來越多的項目加入Hadoop大家庭并成為集群系統(tǒng)運作的一部分,大數(shù)據(jù)處理系統(tǒng)需要負責(zé)協(xié)調(diào)工作的的成員。隨著計算節(jié)點的增多,集群成員需要彼此同步并了解去哪里訪問服務(wù)和如何配置,ZooKeeper正是為此而生的。
? ? ? ?而在Hadoop執(zhí)行的任務(wù)有時候需要將多個Map/Reduce作業(yè)連接到一起,它們之間或許彼此依賴。Oozie組件提供管理工作流程和依賴的功能,并無需開發(fā)人員編寫定制的解決方案。
? ? ? ?Ambari是最新加入Hadoop的項目,Ambari項目旨在將監(jiān)控和管理等核心功能加入Hadoop項目。Ambari可幫助系統(tǒng)管理員部署和配置Hadoop,升級集群以及監(jiān)控服務(wù)。還可通過API集成與其他的系統(tǒng)管理工具。
?
?
?
?
?
Mahout
各類組織需求的不同導(dǎo)致相關(guān)的數(shù)據(jù)形形色色,對這些數(shù)據(jù)的分析也需要多樣化的方法。Mahout提供一些可擴展的機器學(xué)習(xí)領(lǐng)域經(jīng)典算法的實現(xiàn),旨在幫助開發(fā)人員更加方便快捷地創(chuàng)建智能應(yīng)用程序。Mahout包含許多實現(xiàn),包括集群、分類、推薦過濾、頻繁子項挖掘。
?
?
?
? ? ? ?通常情況下,Hadoop應(yīng)用于分布式環(huán)境。就像之前Linux的狀況一樣,廠商集成和測試Apache Hadoop生態(tài)系統(tǒng)的組件,并添加自己的工具和管理功能。
HDFS一一 Hadoop分布式文件系統(tǒng),GFS的Java開源實現(xiàn),運行于大型商用機器集群,可實現(xiàn)分布式存儲。
MapReduce一一 一種并行計算框架,Google MapReduce模型的Java開源實現(xiàn),基于其寫出來的應(yīng)用程序能夠運行在由上千個商用機器組成的大型集群上,并以一種可靠容錯的方式并行處理T級別及以上的數(shù)據(jù)集。
Zookeepe一一 一分布式協(xié)調(diào)系統(tǒng),Google Chubby的Java開源實現(xiàn),是高可用的和可靠的分布式協(xié)同(coordination)系統(tǒng),提供分布式鎖之類的基本服務(wù),用于構(gòu)建分布式應(yīng)用。
Hbase一一 基于Hadoop的分布式數(shù)據(jù)庫,Google BigTable的開源實現(xiàn),是一個有序、稀疏、多維度的映射表,有良好的伸縮性和高可用性,用來將數(shù)據(jù)存儲到各個計算節(jié)點上。
Hive一一 是為提供簡單的數(shù)據(jù)操作而設(shè)計的分布式數(shù)據(jù)倉庫,它提供了簡單的類似SQL語法的HiveQL語言進行數(shù)據(jù)查詢。
Cloudbase一一 基于Hadoop的數(shù)據(jù)倉庫,支持標準的SQL語法進行數(shù)據(jù)查詢。
Pig一一 ??大數(shù)據(jù)流處理系統(tǒng)。建立于Hadoop之上為并行計算環(huán)境提供了一套數(shù)據(jù)工作流語言和執(zhí)行框架。
Mahout一一 ???基于HadoopMapReduce的大規(guī)模數(shù)據(jù)挖掘與機器學(xué)習(xí)算法庫。
Oozie一一? MapReduce工作流管理系統(tǒng)。
Sqoop—一 ???數(shù)據(jù)轉(zhuǎn)移系統(tǒng),是一個用來將Hadoop和關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù)相互轉(zhuǎn)移的工具,可以將一個關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù)導(dǎo)入Hadoop的HDFS中、也可以將HDFS的數(shù)據(jù)導(dǎo)入關(guān)系型數(shù)據(jù)庫中。
Flume一一 一個可用的、可靠的、分布式的海量日志采集、聚合和傳輸系統(tǒng)。
Scribe一一 Facebook開源的日志收集聚合框架系統(tǒng)。
轉(zhuǎn)載于:https://www.cnblogs.com/wangsongbai/p/9115425.html
總結(jié)
以上是生活随笔為你收集整理的Hadoop概念学习系列之Hadoop 生态系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Confluence 6 设置 Orac
- 下一篇: python初学代码留个纪念