深入了解大資料計算模式

2021-10-03 05:45:47 字數 1756 閱讀 5692

批處理計算主要解決針對大規模資料的批量處理,也是我們日常資料分析工作中非常常見的一類資料處理需求。

mapreduce是最具有代表性和影響力的大資料批處理技術,可以並行執行大規模資料處理任務,用於大規模資料集(大於1 tb)的並行運算。

mapreduce極大地方便了分布式程式設計工作,它將複雜的、執行於大規模集群上的平行計算過程高度地抽象到了

兩個函式——map和reduce上,程式設計人員在不會分布式並行程式設計的情況下,也可以很容易地將自己的程式執行在分布式系統上,

完成海量資料集的計算。

spark是乙個針對超大資料集合的低延遲的集群分布式計算系統,比mapreduce快許多。

spark啟用了記憶體分布資料集,除了能夠提供互動式查詢外,還可以優化迭代工作負載。

在mapreduce中,資料流從乙個穩定的**進行一系列加工處理後,流出到乙個穩定的檔案系統(如hdfs)。

而對於spark而言,則使用記憶體替代hdfs或本地磁碟來儲存中間結果,因此spark要比mapreduce的速度快許多。

流資料也是大資料分析中的重要資料型別。

流資料(或資料流)是指在時間分布和數量上無限的一系列動態資料集合體,資料的價值隨著時間的流逝而降低,因此必須採用實時計算的方式給出秒級響應。

流計算可以實時處理來自不同資料來源的、連續到達的流資料,經過實時分析處理,給出有價值的分析結果。

目前業內已湧現出許多的流計算框架與平台,

第一類是商業級的流計算平台,包括ibm infosphere streams和ibm streambase等;

第二類是開源流計算框架,包括 twitter storm、yahoo! s4(****** scalable streaming system)、spark streaming 等;

第三類是公司為支援自身業務開發的流計算框架,如 facebook 使用 puma 和hbase 相結合來處理實時資料,

在大資料時代,許多大資料都是以大規模圖或網路的形式呈現,如社交網路、傳染病傳播途徑、交通事故對路網的影響等,

此外,許多非圖結構的大資料也常常會被轉換為圖模型後再進行處理分析。

mapreduce作為單輸入、兩階段、粗粒度資料並行的分布式計算框架,在表達多迭代、稀疏結構和細粒度資料時,往往顯得力不從心,不適合用來解決大規模圖計算問題。

因此,針對大型圖的計算,需要採用圖計算模式,目前已經出現了不少相關圖計算產品。

pregel 是一種基於bsp(bulk synchronous parallel)模型實現的並行圖處理系統。

為了解決大型圖的分布式計算問題,pregel 搭建了一套可擴充套件的、有容錯機制的平台,該平台提供了一套非常靈活的 api,

可以描述各種各樣的圖計算。pregel主要用於圖遍歷、最短路徑、pagerank計算等。

其他代表性的圖計算產品還包括 facebook 針對 pregel 的開源實現 giraph、spark 下的graphx、圖資料處理系統powergraph

等。針對超大規模資料的儲存管理和查詢分析,需要提供實時或準實時的響應,才能很好地滿足企業經營管理需求。

谷歌公司開發的dremel是一種可擴充套件的、互動式的實時查詢系統,用於唯讀巢狀資料的分析。

通過結合多級樹狀執行過程和列式資料結構,它能做到幾秒內完成對萬億張表的聚合查詢。

系統可以擴充套件到成千上萬的cpu上,滿足谷歌上萬使用者操作pb級的資料,並且可以在2~3s內完成pb級別資料的查詢。

此外,cloudera公司參考dremel系統開發了實時查詢引擎impala,它提供sql語義,能快速查詢儲存在hadoop的hdfs和hbase

中的pb級大資料。

深入了解A

一 前言 在這裡我將對a 演算法的實際應用進行一定的 並且舉乙個有關a 演算法在最短路徑搜尋的例子。值得注意的是這裡並不對a 的基本的概念作介紹,如果你還對a 演算法不清楚的話,請看姊妹篇 初識a 演算法 這裡所舉的例子是參考amit主頁中的乙個源程式,使用這個源程式時,應該遵守一定的公約。二 a ...

深入了解A

一 前言 在這裡我將對a 演算法的實際應用進行一定的 並且舉乙個有關a 演算法在最短路徑搜尋的例子。值得注意的是這裡並不對a 的基本的概念作介紹,如果你還對a 演算法不清楚的話,請看姊妹篇 初識a 演算法 這裡所舉的例子是參考amit主頁中的乙個源程式,使用這個源程式時,應該遵守一定的公約。二 a ...

深入了解Dojo Data

譯自http www.sitepen.com blog 2010 10 13 dive into dojo data 使用dojo data有助於快速建立web應用的介面,且易於嵌入各種資料來源。它在使用者介面與底層資料之間提供了一層抽象層,使得使用者介面開發人員能夠專注於ui的開發,而無需擔心資料...