隨著(zhù)大數據在各個(gè)業(yè)務(wù)領(lǐng)域的發(fā)展和應用,相關(guān)的技術(shù)和工具也層出不窮,其中Hadoop框架受到更多的關(guān)注和應用。Facebook分析主管Ken Rudin最近在紐約舉行的一個(gè)Strata+Hadoop世界大會(huì )發(fā)表主題演講時(shí)表示,不要小看關(guān)系型數據庫技術(shù)的價(jià)值。他認為,Hadoop編程框架可能是“大數據”運動(dòng)的代名詞,但它并不是企業(yè)從大規模存儲的非結構化信息中得到價(jià)值的唯一工具。
有很多很普及的大數據的觀(guān)念需要被質(zhì)疑,首先一點(diǎn)就是人們普遍認為你可以簡(jiǎn)單地利用Hadoop,并且Hadoop易于使用。問(wèn)題是,Hadoop是一項技術(shù),而大數據和技術(shù)無(wú)關(guān)。大數據是和業(yè)務(wù)需求有關(guān)的。事實(shí)上,大數據應該包括Hadoop和關(guān)系型數據庫以及任何其它適合于我們手頭任務(wù)的技術(shù)。
Rudin說(shuō),Facebook的業(yè)務(wù)模式依賴(lài)于其對于超過(guò)10億社交媒體用戶(hù)的用戶(hù)資料和活動(dòng)數據的處理,從而提供有針對性的廣告。然而,對于我們需要做的事情而言,Hadoop并不總是最好的工具。
例如,在Hadoop中對一個(gè)數據集做廣泛并且探索性的分析是很有意義的,但關(guān)系型存儲對于那些尚未發(fā)現的東西進(jìn)行運行分析則更好。Hadoop對于在一個(gè)數據集中尋找最低水平的細節也很好用,但關(guān)系型數據庫對于數據的存儲轉換和匯總則更有意義。因此底線(xiàn)是,對于你的任何需求,要使用正確的技術(shù)。
他表示,還有另一個(gè)假設,認為大數據單純的行為分析提供了寶貴的價(jià)值:“問(wèn)題是這分析給那些無(wú)人問(wèn)津的問(wèn)題得出了更加聰明的答案。要弄清楚什么是正確的問(wèn)題依然是一門(mén)藝術(shù)”。Facebook一直專(zhuān)注于雇傭合適的員工來(lái)運行他們的分析操作,那些人不僅要在統計學(xué)專(zhuān)業(yè)獲得博士學(xué)位,并且還要精通業(yè)務(wù)。
當你面試員工時(shí),不要只關(guān)注于“我們怎么計算這個(gè)指標”,相反,你應該給他們一個(gè)商業(yè)案例來(lái)研究,并且問(wèn)他們在這個(gè)案例中哪個(gè)是最重要的指標。企業(yè)也應該嘗試著(zhù)去培養,人人參與分析。
據Rudin透露,Facebook運營(yíng)一個(gè)內部的“數據培訓營(yíng)”,一個(gè)教導員工如何分析的時(shí)長(cháng)兩周的項目。產(chǎn)品經(jīng)理、設計師、工程師甚至財務(wù)部門(mén)工作人員都要參加。每個(gè)人都參與其中的意義就在于,每個(gè)人可以用一個(gè)共同的數據語(yǔ)言,來(lái)互相討論數據的問(wèn)題和麻煩。
Facebook還改變了統計人員和業(yè)務(wù)團隊的組織方法。如果統計人員保持獨立,他們往往會(huì )坐在那里等待來(lái)自業(yè)務(wù)領(lǐng)域的請求找上門(mén)來(lái),再回應他們,而不是主動(dòng)去做。但是如果統計人員被放置到業(yè)務(wù)部門(mén),你會(huì )發(fā)現多個(gè)團體將會(huì )試圖冗余地解決問(wèn)題。
Facebook已經(jīng)采用了“嵌入式”模式,其中分析師被放在業(yè)務(wù)團隊中,但他們要向一些更高級別的分析師報告,這有助于避免重復的勞動(dòng)。
對于Hadoop如何組合和處理大數據的技巧和方法,數據專(zhuān)家Anoop曾經(jīng)在另一篇文章中提到過(guò),一般情況下,為了得到最終的結果,數據需要加入多個(gè)數據集一起被處理和聯(lián)合。Hadoop中有很多方法可以加入多個(gè)數據集。MapReduce提供了Map端和Reduce端的數據連接。這些連接是非平凡的連接,并且可能會(huì )是非常昂貴的操作。Pig和Hive也具有同等的能力來(lái)申請連接到多個(gè)數據集。Pig提供了復制連接,合并連接和傾斜連接(skewed join),并且Hive提供了map端的連接和完整外部連接來(lái)分析數據。一個(gè)重要的事實(shí)是,通過(guò)使用各種工具,比如MapReduce、Pig和Hive等,數據可以基于它們的內置功能和實(shí)際需求來(lái)使用它們。至于在Hadoop分析大量數據,Anoop指出,通常,在大數據/Hadoop的世界,一些問(wèn)題可能并不復雜,并且解決方案也是直截了當的,但面臨的挑戰是數據量。在這種情況下需要不同的解決辦法來(lái)解決問(wèn)題。一些分析任務(wù)是從日志文件中統計明確的ID的數目、在特定的日期范圍內改造存儲的數據、以及網(wǎng)友排名等。所有這些任務(wù)都可以通過(guò)Hadoop中的多種工具和技術(shù)如MapReduce、Hive、Pig、Giraph和Mahout等來(lái)解決。這些工具在自定義例程的幫助下可以靈活地擴展它們的能力。
事實(shí)上,與Rudin持相同觀(guān)點(diǎn)的還有數據專(zhuān)家Joe Brightly,他也總結了Hadoop不適合數據分析的幾個(gè)理由,其中包括:
“Hadoop是一個(gè)框架,不是一個(gè)解決方案”——他認為在解決大數據分析的問(wèn)題上人們誤認為Hadoop可以立即有效工作,而實(shí)際上“對于簡(jiǎn)單的查詢(xún),它是可以的。但對于難一些的分析問(wèn)題,Hadoop會(huì )迅速敗下陣來(lái),因為需要你直接開(kāi)發(fā)Map/Reduce代碼。出于這個(gè)原因,Hadoop更像是J2EE編程環(huán)境而不是商業(yè)分析解決方案?!?所謂框架意味著(zhù)你一定要在之上做個(gè)性化和業(yè)務(wù)相關(guān)的開(kāi)發(fā)和實(shí)現,而這些都需要成本。
Hadoop的子項目Hive和Pig 都不錯,但不能逾越其架構的限制?!薄狫oe提出“Hive 和Pig 都是幫助非專(zhuān)業(yè)工程師快速有效使用Hadoop的完善工具,用于把分析查詢(xún)轉換為常用的SQL或Java Map/Reduce 任務(wù),這些任務(wù)可以部署在Hadoop環(huán)境中?!逼渲蠬ive是基于Hadoop的一個(gè)數據倉庫工具,它可以幫助實(shí)現數據匯總、即時(shí)查詢(xún)以及分析存儲在Hadoop兼容的文件系統的大型數據集等。而Pig是并行計算的高級數據流語(yǔ)言和執行框架。但作者認為“Hadoop的Map/Reduce框架的一些限制,會(huì )導致效率低下,尤其是在節點(diǎn)間通信的情況(這種場(chǎng)合需要排序和連接)?!?/p>
Joe總結道:“Hadoop是一個(gè)用來(lái)做一些非常復雜的數據分析的杰出工具。但是具有諷刺意味的是,它也是需要大量的編程工作才能得到這些問(wèn)題的答案。” 這一點(diǎn)不止在數據分析應用方面,它其實(shí)反映了目前使用開(kāi)源框架時(shí)候不得不面對的選型平衡問(wèn)題。當你在選型開(kāi)源框架或代碼的時(shí)候,既要考慮清楚它能夠幫到你多少,節省多少時(shí)間和成本,提高多少效率。也要知道由此而產(chǎn)生多少新增的成本,比如工程師的學(xué)習成本、開(kāi)發(fā)和維護成本,以及未來(lái)的擴展性,包括如果使用的框架升級了,你和你的團隊是否要做相應的升級;甚至還要有安全性方面的考慮,畢竟開(kāi)源框架的漏洞也是眾所周知的。
聯(lián)系客服