官术网_书友最值得收藏!

1.6 大數據計算模式

MapReduce 是被大家所熟悉的大數據處理技術,當人們提到大數據時就會很自然地想到MapReduce,可見其影響力之廣。實際上,大數據處理的問題復雜多樣,單一的計算模式是無法滿足不同類型的計算需求的,MapReduce 其實只是大數據計算模式中的一種,它代表了針對大規模數據的批量處理技術,除此以外,還有查詢分析計算、圖計算、流計算等多種大數據計算模式(見表1-6)。本書后面內容將會介紹批處理計算(第7章)、流計算(第10章)和圖計算(第11章)。

表1-6 大數據計算模式及其代表產品

1.6.1 批處理計算

批處理計算主要解決針對大規模數據的批量處理,也是我們日常數據分析工作中非常常見的一類數據處理需求。MapReduce是最具有代表性和影響力的大數據批處理技術,可以并行執行大規模數據處理任務,用于大規模數據集(大于1 TB)的并行運算。MapReduce極大地方便了分布式編程工作,它將復雜的、運行于大規模集群上的并行計算過程高度地抽象到了兩個函數——Map和Reduce上,編程人員在不會分布式并行編程的情況下,也可以很容易地將自己的程序運行在分布式系統上,完成海量數據集的計算。

Spark是一個針對超大數據集合的低延遲的集群分布式計算系統,比MapReduce快許多。Spark啟用了內存分布數據集,除了能夠提供交互式查詢外,還可以優化迭代工作負載。在MapReduce中,數據流從一個穩定的來源進行一系列加工處理后,流出到一個穩定的文件系統(如HDFS)。而對于Spark而言,則使用內存替代HDFS或本地磁盤來存儲中間結果,因此Spark要比MapReduce的速度快許多。

1.6.2 流計算

流數據也是大數據分析中的重要數據類型。流數據(或數據流)是指在時間分布和數量上無限的一系列動態數據集合體,數據的價值隨著時間的流逝而降低,因此必須采用實時計算的方式給出秒級響應。流計算可以實時處理來自不同數據源的、連續到達的流數據,經過實時分析處理,給出有價值的分析結果。目前業內已涌現出許多的流計算框架與平臺,第一類是商業級的流計算平臺,包括IBM InfoSphere Streams和IBM StreamBase等;第二類是開源流計算框架,包括 Twitter Storm、Yahoo! S4(Simple Scalable Streaming System)、Spark Streaming 等;第三類是公司為支持自身業務開發的流計算框架,如 Facebook 使用 Puma 和HBase 相結合來處理實時數據,百度開發了通用實時流數據計算系統 DStream,淘寶開發了通用流數據實時計算系統——銀河流數據處理平臺。

1.6.3 圖計算

在大數據時代,許多大數據都是以大規模圖或網絡的形式呈現,如社交網絡、傳染病傳播途徑、交通事故對路網的影響等,此外,許多非圖結構的大數據也常常會被轉換為圖模型后再進行處理分析。MapReduce作為單輸入、兩階段、粗粒度數據并行的分布式計算框架,在表達多迭代、稀疏結構和細粒度數據時,往往顯得力不從心,不適合用來解決大規模圖計算問題。因此,針對大型圖的計算,需要采用圖計算模式,目前已經出現了不少相關圖計算產品。Pregel 是一種基于BSP(Bulk Synchronous Parallel)模型實現的并行圖處理系統。為了解決大型圖的分布式計算問題,Pregel 搭建了一套可擴展的、有容錯機制的平臺,該平臺提供了一套非常靈活的 API,可以描述各種各樣的圖計算。Pregel主要用于圖遍歷、最短路徑、PageRank計算等。其他代表性的圖計算產品還包括 Facebook 針對 Pregel 的開源實現 Giraph、Spark 下的 GraphX、圖數據處理系統PowerGraph等。

1.6.4 查詢分析計算

針對超大規模數據的存儲管理和查詢分析,需要提供實時或準實時的響應,才能很好地滿足企業經營管理需求。谷歌公司開發的Dremel是一種可擴展的、交互式的實時查詢系統,用于只讀嵌套數據的分析。通過結合多級樹狀執行過程和列式數據結構,它能做到幾秒內完成對萬億張表的聚合查詢。系統可以擴展到成千上萬的CPU上,滿足谷歌上萬用戶操作PB級的數據,并且可以在2~3s內完成PB級別數據的查詢。此外,Cloudera公司參考Dremel系統開發了實時查詢引擎Impala,它提供SQL語義,能快速查詢存儲在Hadoop的HDFS和HBase中的PB級大數據。

主站蜘蛛池模板: 清徐县| 南投市| 栾川县| 江孜县| 白河县| 洛浦县| 漳州市| 霍林郭勒市| 重庆市| 文登市| 台山市| 兴文县| 兴山县| 巫溪县| 庆安县| 东光县| 沙田区| 土默特左旗| 运城市| 平山县| 岑溪市| 泾川县| 来凤县| 钟山县| 白水县| 房产| 平顺县| 乐东| 文安县| 台东市| 澎湖县| 马龙县| 错那县| 治县。| 泰州市| 凉城县| 若羌县| 肇东市| 博客| 十堰市| 兴安盟|