Hadoop不會替代企業(yè)現(xiàn)有的數(shù)據(jù)基礎(chǔ)設(shè)施,而是會對現(xiàn)有數(shù)據(jù)基礎(chǔ)設(shè)施進(jìn)行有益的補(bǔ)充。與熟悉Hadoop原理同等重要的是,我們應(yīng)該熟悉它到底能夠在企業(yè)中發(fā)揮哪些作用,以及部署它的最佳方式。
能夠在業(yè)務(wù)中利用大數(shù)據(jù)是非常具有誘惑力的。目前,同類產(chǎn)品中還沒有任何一款產(chǎn)品的魅力超過了Apache Hadoop。這一可擴(kuò)展的數(shù)據(jù)存儲平臺是許多大數(shù)據(jù)解決方案的核心。通過了解Hadoop能夠做哪些事情,不能夠做哪些事情,你將更了解如何更好地在數(shù)據(jù)中心或云上部署它們。下面,我們就將為大家介紹一些Hadoop部署中的最佳實踐。
Hadoop無法做的事
對于Hadoop是什么我們就不花時間進(jìn)行詳細(xì)介紹了,因為大量的資料和媒體對它們的介紹已經(jīng)足夠詳盡。我們需要說的是,清楚Hadoop的兩個重要組件非常重要:Hadoop分布式文件系統(tǒng)和MapReduce架構(gòu)。前者專門用于存儲,后者可讓你分析存儲在Hadoop中的任何數(shù)據(jù)。值得關(guān)注的是,這些數(shù)據(jù)不一定非得是結(jié)構(gòu)化的數(shù)據(jù)。它們可以讓Hadoop分析和處理來自社交媒體、文檔和圖表等來源的數(shù)據(jù),以及任何無法輕易歸入行與列范疇的數(shù)據(jù)。
這并不是說你不能將Hadoop用于存儲和分析結(jié)構(gòu)化數(shù)據(jù)。實際上,有許多解決方案正是利用了Hadoop每TB存儲成本相對低廉的優(yōu)勢,用它們替代傳統(tǒng)的關(guān)系型數(shù)據(jù)庫來存儲結(jié)構(gòu)化的數(shù)據(jù)。但是如果你的存儲需求并不是那么高,那么能在Hadoop和傳統(tǒng)關(guān)系型數(shù)據(jù)庫之間遷移數(shù)據(jù)將更加具有優(yōu)勢。
你無法使用Hadoop處理的是交易型數(shù)據(jù)。交易型數(shù)據(jù)的特點決定其非常復(fù)雜,一個電子商務(wù)網(wǎng)站的交易可以分解為許多步驟,每一步都必須要被快速處理。這種應(yīng)用場景并不適合于Hadoop。此外,Hadoop也不適合對延遲時間要求非常高的結(jié)構(gòu)化數(shù)據(jù)集。例如,當(dāng)網(wǎng)站選擇在典型的LAMP(Linux+Apache+MySQL+Perl/PHP/Python)堆棧中使用一個MySQL數(shù)據(jù)庫,因為Hadoop無法滿足其速度需求。
Hadoop能做的事
由于具有批處理能力,Hadoop應(yīng)該被部署在索引的建立、模式識別、建立推薦引擎和情感分析等環(huán)境中。在這些環(huán)境中,數(shù)據(jù)被大量生成并存儲在Hadoop中,可以通過MapReduce功能被查詢。但是這并不是說,Hadoop應(yīng)該替代數(shù)據(jù)中心中現(xiàn)有的組件。相反,Hadoop應(yīng)該被整合到企業(yè)現(xiàn)有的IT基礎(chǔ)設(shè)施中,以充分利用流入企業(yè)的海量數(shù)據(jù)。
讓我們來看看處理商業(yè)交易的典型非Hadoop企業(yè)網(wǎng)站目前的做法。Cloudera教育服務(wù)總監(jiān)Sarah Sproehnle表示,在“夜航模式”下,來自客戶流行網(wǎng)站的日志要經(jīng)歷ETL(提取、轉(zhuǎn)換和加載)流程,將數(shù)據(jù)存儲在數(shù)據(jù)倉庫之前需要花費三個小時的時間。這時存儲程序?qū)⒈粏?,但是仍需再過兩個小時,清洗后的數(shù)據(jù)才能被存入到數(shù)據(jù)倉庫之中。最終數(shù)據(jù)集的大小只有最初大小的五分之一。這意味著,如果對整個原始數(shù)據(jù)集做任何調(diào)整,都會導(dǎo)致數(shù)據(jù)的丟失。
然而,當(dāng)把Hadoop整合到企業(yè)的IT架構(gòu)中后,你在數(shù)據(jù)管理方面所投入的時間和精力將會更具效率。取代執(zhí)行ETL操作的是,來自Web服務(wù)器的日志數(shù)據(jù)把整體數(shù)據(jù)直接發(fā)送到Hadoop的HDFS(Hadoop Distributed File System,Hadoop分布式文件系統(tǒng))中。日志數(shù)據(jù)需要經(jīng)過相同的清洗程序,但是目前僅使用MapReduce。一旦被清洗,數(shù)據(jù)就會被發(fā)送至數(shù)據(jù)倉庫中。這一操作速度更快,要歸功于ETL環(huán)節(jié)的取消,以及MapReduce處理的速度。所有數(shù)據(jù)仍將存儲在Hadoop中,并時刻為今后網(wǎng)站運營者的任何額外查詢做好準(zhǔn)備。
問題的關(guān)鍵是我們需要正確地認(rèn)識Hadoop。它不應(yīng)該被視為現(xiàn)有基礎(chǔ)設(shè)施的替代者,相反應(yīng)該被視為提升數(shù)據(jù)管理與存儲能力的新工具。通過使用Apache Flume或是Apache Sqoop等工具,你能夠?qū)F(xiàn)有的系統(tǒng)與Hadoop連接在一起,無論數(shù)據(jù)大小都能夠被處理。Apache Flume能夠?qū)?shù)據(jù)從傳統(tǒng)關(guān)系型數(shù)據(jù)庫提取到Hadoop中,或是將數(shù)據(jù)從Hadoop中提取到關(guān)系型數(shù)據(jù)庫中;Apache Sqoop則能夠?qū)崟r將系統(tǒng)日志提取至Hadoop中。你所需要做的是增加Hadoop的節(jié)點,以進(jìn)行存儲與處理。