與Google資深工程師一起學習大規模數據處理 --專欄《大規模數據處理實戰》學習總結

“無意中發現了一個巨牛的人工智能教程,忍不住分享一下給大家。教程不僅是零基礎,通俗易懂,而且非常風趣幽默,像看小說一樣!覺得太牛了,所以分享給大家。點這裏可以跳轉到教程。”

大家都知道,當前是大數據的時代,我們每天在網絡上生成了海量的數據,連阿里巴巴都自稱自己是一家大數據公司。那麼,有了這麼多數據之後,我們應該用什麼樣的方法來分析它們呢?如何從海量的數據中獲取到對於我們來說有用的信息呢?帶着這諸多的疑問,我學習了極客時間App上的《大規模數據處理實戰》專欄。本專欄作者蔡元楠老師是Google資深工程師,領導並開發了超大規模數據驅動的全新應用。

通過對專欄的學習,我對大規模數據處理技術有了比較全面的瞭解。在這篇文章中,我分享一下自己的學習總結,供大家在處理大規模數據時參考。

 

專欄主要內容

在開篇詞中,作者開門見山地說出了本專欄的特色:介紹硅谷最前沿技術和真實的案例。除了強調特色之外,作者還介紹了當前各大公司在數據處理方面普遍存在的問題,主要有三個:低估了數據處理的重要性低估了數據處理工程師在組織架構上的重要性低估了數據處理規模變大帶來的複雜度。這些都是促成作者寫作該專欄的原因。

本專欄的主要內容分爲六個部分,分別是:直通硅谷大規模數據處理技術實戰學習大規模數據處理基本功抽絲剝繭剖析Apache Spark設計精髓Apache Beam爲何能一統江湖決戰Apache Beam真實硅谷案例大規模數據處理的挑戰與未來

我用下面這張思維導圖來概括本專欄的主要內容。

MapReduce的淘汰

作者將超大規模數據處理的技術發展階段分爲三個:石器時代(MapReduce 誕生之前的時期)、青銅時代(MapReduce的誕生作爲標誌)、蒸汽機時代(FlumeJava的誕生作爲標誌)。2003年,MapReduce的誕生標誌了超大規模數據處理的第一次革命,MapReduce作爲大規模數據處理的鼻祖,爲廣大的IT從業者所熟知。但時過境遷,它已經不再處於浪潮之巔,而是被硅谷一線公司淘汰掉了。

爲什麼曾經風光無限的MapReduce會被淘汰了?主要有兩個原因:第一,高昂的維護成本讓很多的公司無法承受;第二,它的時間性能達不到用戶的期待。如此,就需要新的技術來取代MapReduce了。

 

Spark的優勢

在技術上,MapReduce有哪些缺陷呢?主要有四個,包括:

第一,MapReduce模型的抽象層次低,大量的底層邏輯都需要開發者手工完成;

第二,只提供了Map和Reduce兩個操作;

第三,每一步計算都要進行硬盤的讀取和寫入,大大增加了系統的延遲;

第四,只支持批數據處理,欠缺對流數據處理的支持。

爲了解決MapReduce的不足,Spark應運而生。經過工程師們的精心打造,Spark具備瞭如下三個優勢:

第一,Spark最基本的數據抽象叫作彈性分佈式數據集(Resilient Distributed Dataset,RDD),系統提供了很多對RDD的操作(如Map、Filter、flatMap、groupByKey和Union等),極大地提升了對各種複雜場景的支持;

第二,Spark會把中間數據緩存在內存中,從而減少了很多由於硬盤讀寫而導致的延遲,大大加快了處理速度;

第三,Spark有五個主要的擴展庫,可以支持極其豐富的功能。

 

RDD

RDD是一種新的數據抽象模型,也是Spark的核心概念。RDD實際上是一個基於分佈式內存的數據抽象,我們可以從如下三個方面來理解RDD:

第一,分區。同一個RDD包含的數據被存儲在系統的不同節點中,可以認爲RDD是一個大的數組,數組中的每個元素代表一個分區(Partition)。

第二,不可變性。每一個RDD都是隻讀的,它所包含的分區信息不可以被改變。

第三,並行操作。由於單個RDD的分區特性,使得它天然支持並行操作。

 

Apache Beam一統江湖

時至今日,MapReduce已經完成了它的歷史使命,基本退出了歷史舞臺,而拿過其接力棒的是Apache Beam

Beam作爲Google的前沿技術之一,其含義就是統一了批處理和流處理的一個框架。Beam提供了一套統一的API來處理批處理和流處理這兩種模式,讓我們只需要將注意力專注於數據處理的算法上,而不用再花時間去對兩種數據處理模式上的差異進行維護。

具體到技術實現上,Beam包含了這些:PCollection(對數據進行抽象封裝)、Transform(Beam數據轉換操作的抽象方法)、Pipeline(多步驟的數據流水線抽象方法)、Pipeline I/O(Beam數據中轉的設計模式)。

 

總結

本專欄的內容基於硅谷前沿技術,即使是沒有大規模數據處理背景的人來閱讀,也能夠從中領略到數據處理的美妙之處。作者還在專欄中提到,其實我們一直都生活在一個被大規模數據所包圍着的環境中,學習好大規模數據處理真的是一門必修課。我非常贊同作者的觀點,就拿當前的熱門的人工智能技術和5G技術來說,前者需要大量的數據來訓練模型,而後者實際上就是爲了傳輸海量數據而生的。

在這個大數據的時代,只有掌握了數據處理的核心技術,纔不會迷失在數據的海洋中,才能夠從數據中獲取到真金白銀。

如果大家對專欄的內容感興趣,可以訂閱學習,也可以閱讀我繪製的思維導圖。下載鏈接如下,希望對大家學習大規模數據處理技術有所幫助。

鏈接:https://pan.baidu.com/s/1SKo9WzaSJsJDpqzFr2-IAQ  

密碼:a1pv

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章