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