天天看點

資料湖大資料處理之Lambda架構|學習筆記資料湖大資料處理之Lambda架構

開發者學堂課程【Cassandra資料庫入門與實戰:資料湖大資料處理之Lambda架構】學習筆記,與課程緊密聯系,讓使用者快速學習知識。

課程位址:

https://developer.aliyun.com/learning/course/784

資料湖大資料處理之Lambda架構

内容簡介:

一、大資料 資料湖和Lambda架構簡介

二、Apache cassandra, Spark和pulsar的lambda實作

三、示例程式介紹

四、執行個體

以下是大資料的5v定義

  James Dixon是第一個提出資料湖概念的人。他們對資料湖和自然的由水構成的湖類比。

當讨論資料服務的時候,有兩個層面的意思。第一個是靜态的含義,僅僅是指一個企業的所有資料的集合,反應了大資料的每個方面,例如資料來源的多樣性,資料格式的多樣性,巨量的資料以及快速的資料生成等,以上是典型的大資料的特性。

最重要的一點,資料湖也是一個較為動态從端到端的處理架構。

例如從原始資料開始,到技能資料的處理,将其存儲到企業的中心資料湖裡做進一步的分析處理,産生的商業決策資訊可以供下遊系統利用。

例如資料可視化,商業智能,資料科學,人工智能,深度學習。從整個資料的生成,到最後資料被系統利用也是企業資料湖組成的關鍵部分。

  快資料更多的在于整個資料的分析處理提取,最後生成資料決策資訊的整個過程。傳統的資料倉在當下的商業環境下已經完全不能适用。

當下商業環境不僅強調資料要快,而且要大。當把傳統的處理資料方式和當下的處理資料方式整合在一起來處理大資料的環境有不同的資料架構,lambda架構是較為通用的架構。

Lambda架構主要分為三個層面,批處理層,速處理層,服務層。

批處理層和傳統的批處理架構基本相似,速處理層相當于當下實用的流處理,對實時資料的分析,處理,挖掘,但教育批處理層速處理層不能較大範圍的處理曆史資料,是以速處理層更多的是分析最近的資料。

服務層包括許多資料視圖,這些資料視圖可以從批處理層來,也可以從實時處理層來。

資料視圖生成的目的是為了加快速度,這些資料視圖相當于已經被處理完成,不必再做多餘的計算,隻需要簡單的查詢來擷取所需要的資訊。

整個lambda結構可以在企業資料湖環境裡解決高容錯低延遲問題,幫助資料進行線性擴充,當有新的技術和服務出現時可以被輕易容納。

Apache Cassandra

  作為資料存儲層,主要應對批處理層和服務處理層。

分布式,非主從結構,寬列,開源NoSQL資料庫,因為其沒有主從結構,是以擴充性極強。

而且每個資料會有多個備份,意味着如果一個主資料斷層,還有其他備份資料來滿足要求。如果系統維護好,可以做到零當機。Cassandra對于多資料中心的無縫資料複制,這是很多資料庫沒有的功能。Cassandra是能和雲進行配合的資料庫,可以輕松支援混合及多雲的部署。

Apache spark

  定義spark為一種用于大規模資料處理的統一分析引擎。和hadoop性能相似,也是用于大規模資料處理的分析。但是haddoop本質上是一個批處理模式,無法對實時的資料進行處理,需要利用其他技術來輔助其分析。它并不是一個真正意義上的資料庫,是以每次進行讀寫時,會有較多磁盤讀寫操作,由此可見其性能不夠理想。但可以将spark了解為一個記憶體化的hadoop,顯而易見的優勢就是其比hadoop快速。

同時spark可以處理不同類型的資料,也有自己的流處理子產品,但不是一個實際的流資料處理。Spark還支援機器學習,圖形資料庫,SQL語言。由此可見,spark是一個性能非常強大的分析引擎。

Apache Kafka or Pulsar

  從消息處理和流處理的角度來分析kafka和pulsar 相似,它都是一個大規模,分布式消息流資料處理平台。但是pulsar的優勢在于其計算層和資料儲存層是分開的,帶來的優點是可以更好的系統擴充和負載均衡。可以分開的擴容計算層和存儲層,計算層是無狀态的,是以當擴充計算層時,對系統影響很小,而且會極其快速。同時也會更好的實作負載均衡。

Pulsar技術支援無縫跨資料中心資料複制,這也是kafka沒有擁有的功能。Pulsar還擁有更靈活的消息處理模式,例如釋出訂閱,消息隊列,混合模式。

以下将介紹如何使用三個技術來實作lambda架構。

  在批處理層用cassandra原始資料的主資料庫,在速處理層用pulsar來支援接收源資料流,在批處理層,有定時的spark job,Spark job從原始資料庫裡讀取資料進行分析處理,把生成的資料放入到服務層的資料庫裡,服務層資料庫就代表批處理資料視圖。在速處理層,實時的資料流進入之後。

可以定義pulsar函數,Pulsar是對實時資料進行處理的手段,可以對資料進行過濾,內建。通過pulsar可以把新的資料放到另一個pulsar的主題裡。通過pulsar和cassandra的連接配接器寫進服從的相關的視圖裡。作為終端使用者可以查詢資料。

  以下為lambda架構需要用到的技術棧和實作平台

資料湖大資料處理之Lambda架構|學習筆記資料湖大資料處理之Lambda架構

實作平台用到的是dse,因為可以用一個dse叢集來實作Cassandra和spark的所有功能。

  示例程式的應用場景是極簡化的石油鑽頭探測器時序資料模拟。以下為時序程式中所包含的資料内容包括鑽頭id,傳感器id,傳感器類型及傳感器的讀取時間,讀取的值等。

資料湖大資料處理之Lambda架構|學習筆記資料湖大資料處理之Lambda架構

  應用場景就是每個鑽探地點有多個鑽探頭,每個鑽探頭有兩種傳感器,一種是溫度,另一種是速度,每個傳感器每隔一段時間(一秒或一分鐘)采集一次資料。需要回答的商業問題,例需要監控每個鑽頭的健康狀況,防止其過熱或速度過快。從批處理視圖的角度來看,需要記錄每個鑽頭每日的平均溫度和轉速,每天一次批處理。想從訴處理視圖的角度來說,記錄最近一天之内出現鑽頭過熱或速度過快的情況,實時進行處理。

  示範程式裡所需部件有負載生成器,負載加載器,每日spark彙總程式,pulsar消息釋出器,parser函數,pulse 攝氏度連接配接器。

負載生成器是按照所需的原始資料格式,生成一系列的模拟資料,生成的資料放在一個csv格式的檔案中。可以控制鑽頭數量及傳感器數量或采集資料的間隔時間。從批處理層面來講,把生成的資料加載到原始資料庫裡生成一張cassandra表。

由每日的spark彙總程式對主資料庫中的原始資料每天進行彙總,将彙總好的資料寫入批處理視圖資料庫中,位于服務層。Pulsar消息釋出器負責将深沉的原始資料以消息的方式實時發送到pulsar主題中。當發送到pulsar主題後,就會有pulsar函數對原始資料資訊流進行實時資料流處理,将處理過的資料寫入新的pulsar主題中。新生成的pulsar主題對應的是服務層中速處理視圖。新的pulsar主題到資料庫是由pulsar cassandra連接配接器将處理過的實時資料自動寫入速處理視圖資料庫中的

以下為cassandra資料表模型

資料湖大資料處理之Lambda架構|學習筆記資料湖大資料處理之Lambda架構

  主要有三個cassandra鍵空間,分别對應于原始資料主資料庫表,批資料視圖資料庫表。速處理層視圖資料庫表。

Pulsa主題如下: 

資料湖大資料處理之Lambda架構|學習筆記資料湖大資料處理之Lambda架構

  主要有兩個,第一個主題主要對應原始鑽頭傳感器資料以資訊的形式釋出到主題中;另一個主題對應流處理過的感應器預警資料以資訊的形式釋出到這個主題中。

例如過濾掉舊資料,過濾掉一些正常運轉的鑽頭是否過速或過熱并不是該主題所關注的内容,隻關注預警鑽頭的資訊。

整個資料處理流程概況:

第一步,預處理。預處理包括建立cassandra鍵空間和表(cassandra cql表);生成模拟的工作負載檔案(負載生成器)。

第二步,資料加載。在批處理層中,将源資料加載到原始資料主資料庫中(負載加載器);在速處理層中,将源資料以資訊的方式實時發送到pulsar主題中(Pulsa主題釋出器)。

第三步,資料處理,視圖資料生成。在批處理層中,将每日源資料批處理寫入批處理視圖(每日spark彙總程式);在速處理層中将當日資料實時處理,寫入速處理視圖(pulsar函數,pulsar cassandra連接配接器)。

第四步,資料分析。終端使用者可以使用spark sql來通路不同資料。從不同的資料視圖中來通路所需要的資訊。

  将所有cassandra被删除,確定沒有所需要的鍵空間。第一步,建立cassandra所需要的鍵空間和表,能發現的是,每個鍵空間的資料表裡是沒有資料的,都是zero date。

生成模拟資料利用java程式制作,編譯運作此程式,可以發現産生資料數量。資料都是關于鑽頭的資訊及模拟資料生成頻率。負載加載器是把源資料加載到了批處理層的資料庫裡。此時傳回可以得到關于傳感器的值及鑽頭資訊,而另外兩個資料庫仍然沒有任何資料。

第二步,運作spark job,相當于對主資料庫的資料進行了一次彙總,按照每天每個鑽頭平均速度和溫度顯示。

運作之後,可以看到資料被顯示出來。每個資料對應的是每個鑽頭在某一天的平均轉速和平均溫度,此時批處理層的模拟資料已經運作完畢。速處理層運用pulsar,部署一個pulsar函數到function裡,同時sync負責把從函數裡生成的資料寫入到服務層資料庫中。之後繼續運作一個message釋出器,message釋出器,會把原始資料釋出到第一個pulsar資料主題中,第一個資料會被function進行資料處理,處理好的資料會被放到第二個pulsar資料主題中。第二個資料中有主題會Sync寫入到下遊資料庫中。這些資料都屬于内部,無法被顯示出來,是以此時無法顯示資料。

釋出原始資料時,經過整個處理過程可以看到速處理層的原始資料裡面會有資料。下一步回到速處理視圖裡會發現已經開始顯示資料,且顯示出來的隻是最近時間段中數值極大的資料,最開始的曆史資料已經被function自動過濾。由此看來,從整個端到端的資料流程已經處理完畢。

  根據官方文檔,如何使用spark來連接配接源資料庫cassandra執行個體。

首先需要具備的前提條件是已經開通對象存儲oss;擁有個人資料庫cassandra執行個體;擷取cassandra執行個體的私網連接配接點。Cql接口。資料庫使用者名,資料庫密碼,這些資訊會被用到連接配接cassandra執行個體;需要建立資料表并植入資料,用來驗證spark可以正确的連接配接到資料表裡讀取資料;需要為dl a spark通路cassandra執行個體所需要的安全鎖id和交換機id。安全鎖id和交換機id主要應用于dla spark這些通路執行個體中,需要挂在虛拟網卡上才可以通路cassandra執行個體。建立虛拟網卡必須使用安全鎖id和交換機id,由此,使用者必須提供安全鎖id和交換機id。然後檢視ip所在的網段(可通過專有網絡控制台檢視),接着修改白名單。這樣Cassandra執行個體才能被正常通路,不被防火牆阻擋。查找完安全鎖id後就可以開始處理。開始書寫代碼時需要插入查找到的連接配接cassandra執行個體的資訊。代碼主要功能就是寫表和讀表。将把代碼打包上傳到Oss路徑下後進入dra spark的控制台,必須確定代碼含有以上所述資料。所有的id都是用于配置建立虛拟網卡通路cassandra執行個體所需要的。點選運作後,即可實作spark與cassandra連接配接。通過日志即可了解spark已經連接配接成功Cassandra實力。

以下為基本步驟:

  第一步開通oss存儲;第二部擁有cassandra執行個體;第三步,從cassandra控制台擷取連接配接cassandra執行個體所需要的資訊,例如使用者名,密碼及其連接配接的資訊;第四步,準備一張測試表,用于連接配接cassandra的測試。第五步,網絡打通,關鍵要具備安全鎖id和交換機id用于建立spark的虛拟網卡。擁有虛拟網卡且保證安全所沒有被限制後即可用于通路