大資料分析技術最初起源于互聯網行業。 網頁存檔、使用者點擊、商品資訊、使用者關係等資料形成了持續增長的海量資料集。 這些大資料中蘊藏著大量可以用於 增強使用者體驗、提高服務品質和開發新型應用的知識,而如何高效和準確的發現這些知識就基本決定了各大互聯網公司在激烈競爭環境中的位置。 首先,以 Google為首的技術型互聯網公司提出了MapReduce的技術框架,利用廉價的PC伺服器集群,大規模併發處理批量事務。
利用檔案系統存放非結構化資料,加上完善的備份和容災策略,這套經濟實惠的大資料解決方案與之前昂貴的企業小型機集群+商務資料庫方案相比,不僅沒 有丟失性能,而且還贏在了可擴充性上。 之前,我們在設計一個資料中心解決方案的前期,就要考慮到方案實施後的可擴充性。 通常的方法是預估今後一段時期內的 業務量和資料量,加入多餘的計算單元(CPU)和存儲,以備不時只需。
這樣的方式直接導致了前期一次性投資的巨大,並且即使這樣也依然無法保證計算需求和存儲超出設計量時的系統性能。 而一旦需要擴容,問題就會接踵而 來。 首先是商業並行資料庫通常需要各節點物理同構,也就是具有近似的計算和存儲能力。 而隨著硬體的更新,我們通常加入的新硬體都會強于已有的硬體。 這樣, 舊硬體就成為了系統的瓶頸。 為了保證系統性能,我們不得不把舊硬體逐步替換掉,經濟成本損失巨大。 其次,即使是當前最強的商業並行資料庫,其所能管理的數 據節點也只是在幾十或上百這個數量級,這主要是由於架構上的設計問題,所以其可擴充性必然有限。
而MapReduce+GFS框架,不受上述問題的困擾。 需要擴容了,只需增加個機櫃,加入適當的計算單元和存儲,集群系統會自動分配和調度這些資 源,絲毫不影響現有系統的運行。 如今,我們用得更多的是Google MapReduce的開源實現,即Hadoop。 除了計算模型的發展,與此同時,人們也在關注著資料存儲模型。 傳統的關聯式資料庫由於其規範的設計、友好 的查詢語言、高效的資料處理線上事務的能力,長時間地佔據了市場的主導地位。
然而,其嚴格的設計定式、為保證強一致性而放棄性能、可擴充性差等問題在大資料分析中被逐漸暴露。 隨之而來,NoSQL資料存儲模型開始風行。 NoSQL,也有人理解為Not Only SQL,並不是一種特定的資料存儲模型,它是一類非關聯式資料庫的統稱。 其特點是:沒有固定的資料表模式、可以分散式和水準擴展。 NoSQL並不是單純的 反對關聯式資料庫,而是針對其缺點的一種補充和擴展。 典型的NoSQL資料存儲模型有文檔存儲、鍵-值存儲、圖存儲、物件資料庫、列存儲等。 而比較流行 的,不得不提到Google提出的Bigtable。
Bigtable是一種用於管理海量結構化資料的分散式存儲系統,其資料通常可以跨成千個節點進行分散式存儲,總數據量可達PB級(10的15次方 位元組,106GB)。 HBase是其開源實現。 如今,在開源社區,圍繞Google MapReduce框架,成長出了一批優秀的開源專案。 這些專案在技術和實現上相互支援和依託,逐漸形成了一個特有的生態系統。 這裡借用Cloudera 所描繪的架構圖來展現Hadoop生態系統。 這個系統為我們實現優質廉價的大資料分析提供了堅實的技術基礎。
(責任編輯:蒙遺善)