Hadoop歷史、HDFS特點(diǎn)及對(duì)大數(shù)據(jù)時(shí)代的意義

責(zé)任編輯:editor005

作者:李智 編譯

2017-03-06 14:28:45

摘自:ctocio

如今Apache Hadoop已成為大數(shù)據(jù)行業(yè)發(fā)展背后的驅(qū)動(dòng)力。但為了授權(quán)隨機(jī)存儲(chǔ)數(shù)據(jù),HBase也做出了一些限制:例如Hive與HBase的性能比原生在HDFS之上的Hive要慢4-5倍。

如今Apache Hadoop已成為大數(shù)據(jù)行業(yè)發(fā)展背后的驅(qū)動(dòng)力。Hive和Pig等技術(shù)也經(jīng)常被提到,但是他們都有什么功能,為什么會(huì)需要奇怪的名字(如Oozie,ZooKeeper、Flume)。

如今Apache Hadoop已成為大數(shù)據(jù)行業(yè)發(fā)展背后的驅(qū)動(dòng)力。Hive和Pig等技術(shù)也經(jīng)常被提到,但是他們都有什么功能,為什么會(huì)需要奇怪的名字(如Oozie,ZooKeeper、Flume)。

Hadoop帶來(lái)了廉價(jià)的處理大數(shù)據(jù)(大數(shù)據(jù)的數(shù)據(jù)容量通常是10-100GB或更多,同時(shí)數(shù)據(jù)種類多種多樣,包括結(jié)構(gòu)化、非結(jié)構(gòu)化等)的能力。但這與之前有什么不同?

現(xiàn)今企業(yè)數(shù)據(jù)倉(cāng)庫(kù)和關(guān)系型數(shù)據(jù)庫(kù)擅長(zhǎng)處理結(jié)構(gòu)化數(shù)據(jù),并且可以存儲(chǔ)大量的數(shù)據(jù)。但成本上有些昂貴。這種對(duì)數(shù)據(jù)的要求限制了可處理的數(shù)據(jù)種類,同時(shí)這種慣性所帶的缺點(diǎn)還影響到數(shù)據(jù)倉(cāng)庫(kù)在面對(duì)海量異構(gòu)數(shù)據(jù)時(shí)對(duì)于敏捷的探索。這通常意味著有價(jià)值的數(shù)據(jù)源在組織內(nèi)從未被挖掘。這就是Hadoop與傳統(tǒng)數(shù)據(jù)處理方式最大的不同。

本文就重點(diǎn)探討了Hadoop系統(tǒng)的組成部分,并解釋各個(gè)組成部分的功能。

MapReduce——Hadoop的核心

Mapreduce

Google的網(wǎng)絡(luò)搜索引擎在得益于算法發(fā)揮作用的同時(shí),MapReduce在后臺(tái)發(fā)揮了極大的作用。MapReduce框架成為當(dāng)今大數(shù)據(jù)處理背后的最具影響力的“發(fā)動(dòng)機(jī)”。除了Hadoop,你還會(huì)在MapReduce上發(fā)現(xiàn)MPP(Sybase IQ推出了列示數(shù)據(jù)庫(kù))和NoSQL(如Vertica和MongoDB)。

MapReduce的重要?jiǎng)?chuàng)新是當(dāng)處理一個(gè)大數(shù)據(jù)集查詢時(shí)會(huì)將其任務(wù)分解并在運(yùn)行的多個(gè)節(jié)點(diǎn)中處理。當(dāng)數(shù)據(jù)量很大時(shí)就無(wú)法在一臺(tái)服務(wù)器上解決問(wèn)題,此時(shí)分布式計(jì)算優(yōu)勢(shì)就體現(xiàn)出來(lái)。將這種技術(shù)與Linux服務(wù)器結(jié)合可獲得性價(jià)比極高的替代大規(guī)模計(jì)算陣列的方法。Yahoo在2006年看到了Hadoop未來(lái)的潛力,并邀請(qǐng)Hadoop創(chuàng)始人Doug Cutting著手發(fā)展Hadoop技術(shù),在2008年Hadoop已經(jīng)形成一定的規(guī)模。Hadoop項(xiàng)目再?gòu)某跗诎l(fā)展的成熟的過(guò)程中同時(shí)吸納了一些其他的組件,以便進(jìn)一步提高自身的易用性和功能。

HDFS和MapReduce

HDFS and Mapreduce

以上我們討論了MapReduce將任務(wù)分發(fā)到多個(gè)服務(wù)器上處理大數(shù)據(jù)的能力。而對(duì)于分布式計(jì)算,每個(gè)服務(wù)器必須具備對(duì)數(shù)據(jù)的訪問(wèn)能力,這就是HDFS(Hadoop Distributed File System)所起到的作用。

HDFS與MapReduce的結(jié)合是強(qiáng)大的。在處理大數(shù)據(jù)的過(guò)程中,當(dāng)Hadoop集群中的服務(wù)器出現(xiàn)錯(cuò)誤時(shí),整個(gè)計(jì)算過(guò)程并不會(huì)終止。同時(shí)HFDS可保障在整個(gè)集群中發(fā)生故障錯(cuò)誤時(shí)的數(shù)據(jù)冗余。當(dāng)計(jì)算完成時(shí)將結(jié)果寫入HFDS的一個(gè)節(jié)點(diǎn)之中。HDFS對(duì)存儲(chǔ)的數(shù)據(jù)格式并無(wú)苛刻的要求,數(shù)據(jù)可以是非結(jié)構(gòu)化或其它類別。相反關(guān)系數(shù)據(jù)庫(kù)在存儲(chǔ)數(shù)據(jù)之前需要將數(shù)據(jù)結(jié)構(gòu)化并定義架構(gòu)。

開(kāi)發(fā)人員編寫代碼責(zé)任是使數(shù)據(jù)有意義。Hadoop MapReduce級(jí)的編程利用Java APIs,并可手動(dòng)加載數(shù)據(jù)文件到HDFS之中。

Pig和Hive

Hive

對(duì)于開(kāi)發(fā)人員,直接使用Java APIs可能是乏味或容易出錯(cuò)的,同時(shí)也限制了Java程序員在Hadoop上編程的運(yùn)用靈活性。于是Hadoop提供了兩個(gè)解決方案,使得Hadoop編程變得更加容易。

Pig是一種編程語(yǔ)言,它簡(jiǎn)化了Hadoop常見(jiàn)的工作任務(wù)。Pig可加載數(shù)據(jù)、表達(dá)轉(zhuǎn)換數(shù)據(jù)以及存儲(chǔ)最終結(jié)果。Pig內(nèi)置的操作使得半結(jié)構(gòu)化數(shù)據(jù)變得有意義(如日志文件)。同時(shí)Pig可擴(kuò)展使用Java中添加的自定義數(shù)據(jù)類型并支持?jǐn)?shù)據(jù)轉(zhuǎn)換。

Hive在Hadoop中扮演數(shù)據(jù)倉(cāng)庫(kù)的角色。Hive添加數(shù)據(jù)的結(jié)構(gòu)在HDFS(hive superimposes structure on data in HDFS),并允許使用類似于SQL語(yǔ)法進(jìn)行數(shù)據(jù)查詢。與Pig一樣,Hive的核心功能是可擴(kuò)展的。

Pig和Hive總是令人困惑的。Hive更適合于數(shù)據(jù)倉(cāng)庫(kù)的任務(wù),Hive主要用于靜態(tài)的結(jié)構(gòu)以及需要經(jīng)常分析的工作。Hive與SQL相似促使其成為Hadoop與其他BI工具結(jié)合的理想交集。Pig賦予開(kāi)發(fā)人員在大數(shù)據(jù)集領(lǐng)域更多的靈活性,并允許開(kāi)發(fā)簡(jiǎn)潔的腳本用于轉(zhuǎn)換數(shù)據(jù)流以便嵌入到較大的應(yīng)用程序。Pig相比Hive相對(duì)輕量,它主要的優(yōu)勢(shì)是相比于直接使用Hadoop Java APIs可大幅削減代碼量。正因?yàn)槿绱?,Pig仍然是吸引大量的軟件開(kāi)發(fā)人員。

改善數(shù)據(jù)訪問(wèn):HBase、Sqoop以及Flume

改善數(shù)據(jù)訪問(wèn):HBase、Sqoop以及Flume

Hadoop核心還是一套批處理系統(tǒng),數(shù)據(jù)加載進(jìn)HDFS、處理然后檢索。對(duì)于計(jì)算這或多或少有些倒退,但通?;?dòng)和隨機(jī)存取數(shù)據(jù)是有必要的。HBase作為面向列的數(shù)據(jù)庫(kù)運(yùn)行在HDFS之上。HBase以Google BigTable為藍(lán)本。項(xiàng)目的目標(biāo)就是快速在主機(jī)內(nèi)數(shù)十億行數(shù)據(jù)中定位所需的數(shù)據(jù)并訪問(wèn)它。HBase利用MapReduce來(lái)處理內(nèi)部的海量數(shù)據(jù)。同時(shí)Hive和Pig都可以與HBase組合使用,Hive和Pig還為HBase提供了高層語(yǔ)言支持,使得在HBase上進(jìn)行數(shù)據(jù)統(tǒng)計(jì)處理變的非常簡(jiǎn)單。

但為了授權(quán)隨機(jī)存儲(chǔ)數(shù)據(jù),HBase也做出了一些限制:例如Hive與HBase的性能比原生在HDFS之上的Hive要慢4-5倍。同時(shí)HBase大約可存儲(chǔ)PB級(jí)的數(shù)據(jù),與之相比HDFS的容量限制達(dá)到30PB。HBase不適合用于ad-hoc分析,HBase更適合整合大數(shù)據(jù)作為大型應(yīng)用的一部分,包括日志、計(jì)算以及時(shí)間序列數(shù)據(jù)。

獲取數(shù)據(jù)與輸出數(shù)據(jù)

Sqoop和Flume可改進(jìn)數(shù)據(jù)的互操作性和其余部分。Sqoop功能主要是從關(guān)系數(shù)據(jù)庫(kù)導(dǎo)入數(shù)據(jù)到Hadoop,并可直接導(dǎo)入到HFDS或Hive。而Flume設(shè)計(jì)旨在直接將流數(shù)據(jù)或日志數(shù)據(jù)導(dǎo)入HDFS。

Hive具備的友好SQL查詢是與繁多數(shù)據(jù)庫(kù)的理想結(jié)合點(diǎn),數(shù)據(jù)庫(kù)工具通過(guò)JDBC或ODBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序連接。

負(fù)責(zé)協(xié)調(diào)工作流程的ZooKeeper和Oozie

負(fù)責(zé)協(xié)調(diào)工作流程的ZooKeeper和Oozie

隨著越來(lái)越多的項(xiàng)目加入Hadoop大家庭并成為集群系統(tǒng)運(yùn)作的一部分,大數(shù)據(jù)處理系統(tǒng)需要負(fù)責(zé)協(xié)調(diào)工作的的成員。隨著計(jì)算節(jié)點(diǎn)的增多,集群成員需要彼此同步并了解去哪里訪問(wèn)服務(wù)和如何配置,ZooKeeper正是為此而生的。

而在Hadoop執(zhí)行的任務(wù)有時(shí)候需要將多個(gè)Map/Reduce作業(yè)連接到一起,它們之間或許批次依賴。Oozie組件提供管理工作流程和依賴的功能,并無(wú)需開(kāi)發(fā)人員編寫定制的解決方案。

Ambari是最新加入Hadoop的項(xiàng)目,Ambari項(xiàng)目旨在將監(jiān)控和管理等核心功能加入Hadoop項(xiàng)目。Ambari可幫助系統(tǒng)管理員部署和配置Hadoop,升級(jí)集群以及監(jiān)控服務(wù)。還可通過(guò)API集成與其他的系統(tǒng)管理工具。

Apache Whirr是一套運(yùn)行于云服務(wù)的類庫(kù)(包括Hadoop),可提供高度的互補(bǔ)性。Whirr現(xiàn)今相對(duì)中立,當(dāng)前支持Amazon EC2和Rackspace服務(wù)。

機(jī)器學(xué)習(xí):Mahout

機(jī)器學(xué)習(xí):Mahout

各類組織需求的不同導(dǎo)致相關(guān)的數(shù)據(jù)形形色色,對(duì)這些數(shù)據(jù)的分析也需要多樣化的方法。Mahout提供一些可擴(kuò)展的機(jī)器學(xué)習(xí)領(lǐng)域經(jīng)典算法的實(shí)現(xiàn),旨在幫助開(kāi)發(fā)人員更加方便快捷地創(chuàng)建智能應(yīng)用程序。Mahout包含許多實(shí)現(xiàn),包括集群、分類、推薦過(guò)濾、頻繁子項(xiàng)挖掘。

使用Hadoop

通常情況下,Hadoop應(yīng)用于分布式環(huán)境。就像之前Linux的狀況一樣,廠商集成和測(cè)試Apache Hadoop生態(tài)系統(tǒng)的組件,并添加自己的工具和管理功能。

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號(hào)-6京公網(wǎng)安備 11010502049343號(hào)