《大數據導論》讀書筆記——Chapter 6

第六章介紹了大數據處理的相關概念。書中提到理解大數據處理的關鍵是要認識到大數據處理與傳統的關係型資料庫的集中處理方式不同,是一種分散式並行的處理方式。

1. Parallel Data processing

並行數據處理是指將一個任務分為多個子任務同時執行以縮短處理時間。並行數據處理通常採用一個機器中的多個處理器完成,而不是在多個機器中完成。

2. Distributed Data processing

分散式數據處理與並行數據處理相同,都是基於「divide-and-conquer」(分而治之,各個擊破)的原則,不同的是,分散式數據處理通常採用多個機器互聯組成的一個集群來實現,如下圖:

3. Hadoop

書中定義Hadoop是用於大規模數據存儲與處理的開源框架,是一種大數據解決方案的類工業平台,可用於ETL引擎,或處理大量結構化、半結構化、非結構化數據的分析引擎。在數據分析方面,Hadoop採用MapReduce處理框架。下圖展示了Hadoop的一些特點:

4. Processing Workloads

在大數據領域,處理工作量被定義為在一定時間內處理的不同類型數據的量。處理工作量通常被分為兩種類型:批處理型和事務型。結合書中的描述,總結對比如下:

5. Cluster

與集群為數據存儲提供的可擴展性類似,集群同樣可以為數據處理提供可擴展性,也就是說,數據處理可以在存儲數據的集群中進行。較大的數據集可被劃分為多個小的數據集,以並行分布的方式進行處理,這種方式同時支持批處理型與事務型數據處理模式。

在數據處理方面,同樣也具有固有冗餘及容錯特點。

6. Processing in Batch Mode

在批處理模式中,數據在被處理之前先被保存到磁碟中,其處理響應時間從幾分鐘到幾小時不等,這種處理模式主要針對大數據的Volume和Variety兩個特點。

1)Batch Processing with MapReduce

MapReduce被廣泛應用於批處理框架中,同樣基於「divide-and-conquer」原則,採用並行分散式方式,將一個較大的problem劃分為多個較小的problems,快速地分別解決。輸入到MapReduce的數據不必遵循某一特定模型。MapReduce最初於2000年由Google在其發布的論文中提出。

在傳統的數據處理框架中,數據先被從存儲節點傳輸到處理節點,再在處理節點中進行處理,當數據量增大時,這個傳輸過程會佔用較大的網路帶寬並造成較大的處理時延。耗費在數據傳輸過程中的開支甚至會超過數據處理過程本身需要的開支。

採用MapReduce,可將數據處理演算法用於數據存儲節點中,即在分散式的數據存儲節點中進行數據處理,不需要將數據從存儲介質傳輸到數據處理部分。這大大節約了網路帶寬並減少了數據處理時間。

2)Map and Reduce Tasks

每個MapReduce job被分為map task和reduce task,每個task有多個stage組成,如圖:

A. Map(映射)

將數據文件分片,每一片以key value pair的方式輸入到map中,通常,key表示記錄的原始位置,value為實際的記錄。每一個分片由一個mapper函數處理,通常一個分片包含多個key value pair,而mapper函數作用於分片中的每個key value pair。

輸出的key和value可與輸入的key和value相同,也可以是輸入key和value的一部分,或是用戶定義的某個可串列化的對象。對於一個輸入的key value pair來說,可能不會對其產生輸出的key value pair(filtering),也可能對其產生多個輸出的key value pair(demultiplexing)。

B. Combining(合併)

這個stage是optional(可選的),通常,map task和reduce task是在不同的節點中完成的,這就需要將數據由mapper傳輸到reducer,當數據量較大時,這需要佔用較大的網路帶寬和較長的傳輸時間。基於此,combiner用於對mapper的輸出進行summarize,以減少佔用的網路帶寬和傳輸時間。

Combiner的本質就是在與mapper同一個節點中進行數據處理的reducer,因此可以用reducer function或用戶定義的其他function來作為combiner function。

C. Partition(分區)

在有多個reducer時,partition用於將mapper或combiner輸出的數據分配給多個reducer。Partition的數目與reducer的數目相同。

每個partition包含多個key value pair,有著相同key的記錄被分配到同一個partition中。必要時,需採用定製的partitioning logic,確保各個reducer所處理的workload被平均分配。

D. Shuffle and Sort(洗牌與排序)

這是reduce task的第一個stage,每個partitioner的輸出可能包括同一個key的多條記錄,洗牌與排序用於對key value pair進行分組和排序確保所有的key被分門別類,同時同一個key的記錄被存放在一起。這個分組和排序的方式可以被用戶根據其需求的不同來定製。

E. Reduce(歸約)

這是reduce task的最後一個stage,reducer可對它的輸入進行summarize,也可不做任何改變。與mapper類似,對於一個輸入的key value pair來說,可能不會對其產生輸出的key value pair(filtering),也可能對其產生多個輸出的key value pair(demultiplexing)。

3)Understanding MapReduce Algorithms

上文中提過,MapReduce基於「divide-and-conquer」原則,通常有兩種實現方式:

A. Task Parallelism(任務並行方式)

將一個task分為多個sub-task,每個sub-task在一個獨立的處理節點或集群中完成,通常每個sub-task採用不同的演算法,每個sub-task的數據匯總形成整個task的處理結果。

B. Data Parallelism(數據並行方式)

將一個dataset分為多個sub-dataset,再將這些sub-dataset分配到多個節點中用同樣的演算法進行處理,每個sub-dataset被處理後的輸出匯總形成整個dataset的處理結果。

7. Processing in Realtime Mode

前文中提到:在批處理模式中,數據在被處理之前先被保存到磁碟中,其處理響應時間從幾分鐘到幾小時不等,這種處理模式主要針對大數據的Volume和Variety兩個特點。

而在實時處理模式中,數據先在內存中被處理再存儲到磁碟中。實時處理的響應時間從1亞秒到1分鐘不等,這種處理模式主要針對大數據的Velocity特點。

在大數據處理中,數據以流的形式連續到達或以事件的形式間隔到達,故實時處理也被稱作流處理或事件處理。每個流/事件中的數據量通常較小。

另一個與實時處理相關術語是:交互模式,是指事務型BI或相關數據分析通常以交互的方式進行。

大數據處理相關的一個基本原則是Speed,Consistency and Volume(SCV)原則,描述了實時數據處理中的基本約束。

1)Speed Consistency Volume(SCV)

與分散式數據存儲中的CAP定理類似,SCV原則用於約束分散式數據處理,斷定一個分散式數據處理系統最多只能滿足SCV三個要求中的兩個。(下圖是不是似曾相識?請見之前推文中的CAP定理《大數據導論》讀書筆記——Chapter 5)

A.Speed

Speed指數據處理的速度。

B. Consistency

這裡的一致性Consistency是指結果的準確和精確。

C. Volume

Volume是指所處理的數據量。

如果同時滿足S和C,則不可能滿足V,因為大數據量會降低S;

如果同時滿足C和V,則不可能滿足S,因為S的提高會降低V;

如果同時滿足V和S,則不可能滿足C,因為對大數據量的高速處理會涉及對數據進行sampling,這會降低C。

在大數據處理場景中,V是不允許降低的,所以通常是在S+V和C+V中選擇。

2)ESP & CEP

ESP是Event Stream Processing,即事件流處理,CEP是Complex Event Processing,即複雜事件處理,ESP和CEP是實時大數據處理的兩種重要的概念。ESP相對簡單,通常是簡單的查詢或簡單演算法的應用,以較快的速度執行;而CEP相對複雜,支持豐富的分析方法,是ESP的高級方式,處理速度也相對較慢。ESP的輸出也可以用作CEP的輸入。

3)Realtime Big Data Processing and MapReduce

MapReduce通常不適用於實時大數據處理,文中提到兩個原因:一是MapReduce只用於處理完整的dataset,也就是要求所有的輸入數據在執行數據處理時是完整的,而在實時數據處理中,數據是連續的或間隔到達的,現有的數據通常是不完整的。另一個原因是MapReduce中的reduce task需要在map task完成後才能執行,mapper輸出的數據需要傳輸到reducer中,這造成了響應時間的增加,不適用於實時數據處理場景。

相關文章:

《大數據導論》讀書筆記——Chapter 1

《大數據導論》讀書筆記——Chapter 2

Big Data Adoption and Planning Consideration

《大數據導論》讀書筆記——Chapter 4

《大數據導論》讀書筆記——Chapter 5

慢火烹茶看圖說話——鐵路&民航

END

weixin.qq.com/r/uUSrs2L (二維碼自動識別)

長按二維碼關注

推薦閱讀:

數字世界是如何被一群科學家和工程師創造出來的?——從《創新者》看創新
大數據產業即將破萬億之際,浪潮天元數據在全力做一件事
阿里巴巴大數據之路-數據計算層
AI+金融:學者、產業、趨勢全景報告
阿里巴巴大數據之路-數據挖掘中台

TAG:大數據 | 大數據分析 | 大數據處理 |