Big Data 時代,我們需要有超越 Hadoop 和 MapReduce 的殺手級技術

過去 25 年來,位居主流地位的關聯式資料庫(Relational Databases),在雲端計算與 Big Data 的發展中突顯了其不足之處,所以在最近幾年受到了「NoSQL」發展的挑釁與威脅。

像 Facebook、Google、Twitter 等大型網路企業,為了解決大量的資料存取問題,紛紛捨棄了關聯式資料庫技術,改以其它的相關技術,如「NoSQL」或是「Not Only SQL」等技術,以提升處理資料的效能與擴充的彈性。

而在此變遷中,Hadoop 逐漸成為一個關鍵的重要角色。Hadoop 是 Apache 軟體基金會所發展的雲端計算技術,使用 Java 撰寫並免費開放原始碼,優點在於有良好的擴充性,程式部署快速等,同時能有效地分散系統的負荷。

Google 也為此提出了 MapReduce 軟體編程架構,這是一種能以高可靠性與高容錯的方式,運作在由大規模電腦所組成的叢集上的技術,並可透過平行處理方式來處理 PB(Peta-Bytes)等級的資料量。

而在此競爭中,我們還不清楚到底是「SQL」、「No SQL」或是「Not Only SQL」能夠勝出,但是,有一點是非常明確的 -- 如果你正面臨 Big Data 的挑戰,那麼 Hadoop 將是你用來開發系統的選擇。

  • MapReduce 和 Hadoop 也不是萬能,「NoHadoop」時代的來臨

但目前有個很重要的問題是,有些人注意到了 MapReduce 與 Hadoop 在功能上的不足與限制性,於是縱使他們需要能夠提供高效能與擴展性佳的應用工具,他們仍摒棄了 MapReduce 與 Hadoop,有些人甚至回頭使用了關聯式資料庫。

雖然 Hadoop 擅長於處理批次的資料量,但在多維度的資料處理分析上的表現並不佳。例如,大多數的企業總是會面對更複雜的資料連結(Complex Joins)、ACID 機制的要求(Atomicity-Consistency-Isolation-Durability,這是關聯式資料庫為了確保資料的完整性,所採用的機制,以使資料在存取或異動的過程中不會受到干擾)、即時分析(Real-Time Requirements)、量子電腦演算法(SuperComputing Algorithms)、圖型計算(Graph Computing)或是資料的持續更新,而 Hadoop 在處理這些資料的表現上還稱不上令人滿意的標準。

基於種種原因,「Post-Hadoop 架構」被提出了,而此新架構在處理資料的能力上有了更佳的效能。

本篇文章想與各位讀者分享的也是一個新的「NoHadoop」時代的來臨。因為有愈來愈多的企業意識到,Big Data 需要的不只是 Hadoop。

  • 那麼,我們應該怎樣看待 「NoHadoop或是「Post-Hadoop」?

單就效能面來說,新一代的架構需要在 MapReduce/Hadoop 的基礎上有 10 到 10000 倍效能的提升。

接著,我們一起來認識一下目前市場上受人關注的幾個應用方法與工具。

  • SQL

SQL 應用在:業務資料查詢(Complex Business Queries)、線上交易處理(OnLine Transaction Processing)。

SQL 已經發展 25 年了,而目前有很多的創新都圍繞著下一代的資料庫技術(SQL Next-Gen)延伸,像是 VoltDB、Clustrix 這些公司,已經有了一些成果。

如果你需要做複雜的 Joins 語法分析,或是需要 ACID 機制以維持資料的完整性時,SQL 依然會是最好的選擇。

應用在:演算法交易(Algorithmic Trading)、欺詐偵測(Fraud Detection)、行動廣告(Mobile Advertising)、定位服務(Location Services)、行銷智能(Marketing Intelligence)。

在 Big Data 的即時分析上,Cloudscale 打破了一般批次處理的限制。例如,當你打算分析一台伺服器上每秒百萬次的資料事件,而系統所允許的傳送結果延遲時間為 5 秒,那麼你就需要一個即時處理資料的架構。而 Cloudscale 就可以提供這種即時資料分析的能力,它比 Hadoop 的批次處理快了近 1 萬倍。

應用在:建模與模擬(Modelling and Simulation)、流體力學(Fluid Dynamics)。

在許多的超級電腦應用中,往往需要在 Big Data 上建立複雜的演算法,而為了提升效能,都是依賴處理器直接存取資料。像 MPI 和 BSP 這些平行編程工具,就非常適合這類需要高效能計算的應用。

應用在:網路演算法(Web Algorithms)、社交結構演算法(Social Graph Algorithms)、位置結構(Location Graphs)、機器學習和發現(Learning and Discovery)、網路最佳化(Network Optimisation)、網際網路(Internet)。

你需要分析一個在複雜環境中的社交關係網絡嗎?如果是的話,你所面對的不止是資料的問題而已,而是一個結構的問題。

在數以億萬計的網路節點和路徑的環境中,常常需要利用動態結構和網路分析方法的應用,而我們也在愈來愈多的科技發展中感受到這些結構分析方法的重要性,其中,Google 的 Pregel 架構,就是使用 BSP(Bulk Synchronous Parallel)模型來進行大範圍的高效能結構計算。

應用在:資料探勘(Data Exploration)、客戶支援(Customer Support)、資料中心監測(Data Center Monitoring)。

你需要查詢網路上大規模的資料嗎?如果答案是肯定的,你就需要 Google 的 Dremel 架構。它的設計原理就在於支援使用者在查詢儲存了億萬筆記錄的資料表時,能在數秒的時間內傳回結果。

Dremel 的查詢指令的執行,並不需要轉換成 MapReduce 的任務(Job)。Google 在 2006 年就把 Dremel 產品化了,到目前為止已經擁有數千名使用者。

應用在:即時查詢(Real Time Search)。

如果你需要對大量的資料集進行不斷地更新,那麼 Percolator 會是一個不錯的應用選擇。它是 Google 應用在網路的索引架構,甚至比 Hadoop 更好用,而且 Google 的即時查詢功能「Google Instant」不能少了它。

因為索引會隨著時間而增加,若應用 Percolator 的 Google Caffeine 系統檢索資料的速度,將比之前採用 Hadoop 的處理快上百倍。

而目前的狀況是,Hadoop 因為採取免費試用的方式做推廣,這將使得它在許多的實務應用中仍會持續扮演重要的角色。然而,在越來越多的 Big Data 相關應用上,都得面對效能上的嚴格要求,所以,我們必須、也一定可以找到更新也更威的系統架構。

(資料來源:Gigaom;圖片來源:filmresearch, CC Licensed)