基於Hadoop的資料分析平台搭建

2021-09-07 18:48:04 字數 2632 閱讀 9732

企業發展到一定規模都會搭建單獨的bi平台來做資料分析,即olap(聯機分析處理),一般都是基於資料庫技術來構建,基本都是單機產品。除了業務資料的相關分析外,網際網路企業還會對使用者行為進行分析,進一步挖掘潛在價值,這時資料就會膨脹得很厲害,一天的資料量可能會成千萬或上億,對基於資料庫的傳統資料分析平台的資料儲存和分析計算帶來了很大挑戰。

為了應對隨著資料量的增長、資料處理效能的可擴充套件性,許多企業紛紛轉向hadoop平台來搭建資料分析平台。hadoop平台具有分布式儲存及平行計算的特性,因此可輕鬆擴充套件儲存結點和計算結點,解決資料增長帶來的效能瓶頸。

隨著越來越多的企業開始使用hadoop平台,也為hadoop平台引入了許多的技術,如hive、spark sql、kafka等,豐富的元件使得用hadoop構建資料分析平台代替傳統資料分析平台成為可能。

一、資料分析平台架構原理

來自不同資料來源的「生」資料(接入層),和經過中間處理之後得到的整合層、表現層的資料模型,都會儲存在資料湖裡備用。

資料湖的實現通常建立在hadoop生態上,可能直接儲存在hdfs上,也可能儲存在hbase或hive上,也有用關係型資料庫作為資料湖儲存的可能性存在。

下圖說明了資料分析平台的資料處理流程:

資料分析基本都是單獨的系統,會將其他資料來源的資料(即外部資料)同步到資料平台的儲存體系來(即資料湖),一般資料先進入到接入層,這一層只簡單的將外部資料同步到資料分析平台,沒有做其他處理,這樣同步出錯後重試即可,有定時同步和流式同步兩種:

資料分析平台執行對應操作修改資料。

接入層資料需要經過etl處理步驟才會進入資料倉儲,資料分析人員都是基於資料倉儲的資料來做分析計算,資料倉儲可以看作資料分析的唯一**,etl會將接入層的資料做資料清洗、轉換,再載入到資料倉儲,過濾或處理不合法、不完整的資料,並使用統一的維度來表示資料狀態。有的系統會在這一層就將資料倉儲構建成資料立方體、將維度資訊構建成雪花或星型模式;也有的系統這一層只是統一了所有資料資訊,沒有做資料立方體,留在資料集市做。

資料集市是基於資料倉儲資料對業務關心的資訊做計算提取後得到的進一步資訊,是業務人員直接面對的資訊,是資料倉儲的進一步計算和深入分析的結果,一般都會構建資料立方體。系統開發人員一般會開發頁面來向使用者展示資料集市的資料。

二、基於hadoop構建資料分析平台

基於hadoop構建的資料分析平台建構理論與資料處理流程與前面講的相同。傳統分析平台使用資料庫套件構建,這裡我們使用hadoop平台的元件。

上面這張圖是我們使用到的hadoop平台的元件,資料從下到上流動,資料處理流程和上面說的一致。

任務排程負責將資料處理的流程串聯起來,這裡我選擇使用的是oozie,也有很多其它選擇。

1、資料儲存  

基於hadoop的資料湖主要用到了hdfs、hive和hbase,hdfs是hadoop平台的檔案儲存系統,我們直接操縱檔案是比較複雜的,所以可以使用分布式資料庫hive或hbase用來做資料湖,儲存接入層、資料倉儲、資料集市的資料。

hive和hbase各有優勢:hbase是乙個nosql資料庫,隨機查詢效能和可擴充套件性都比較好;而hive是乙個基於hdfs的資料庫,資料檔案都以hdfs檔案(夾)形式存放,儲存了表的儲存位置(即在hdfs中的位置)、儲存格式等元資料,hive支援sql查詢,可將查詢解析成map/reduce執行,這對傳統的資料分析平台開發人員更友好。

hive資料格式可選擇文字格式或二進位制格式,文字格式有csv、json或自定義分隔,二進位制格式有orc或parquet,他們都基於行列式儲存,在查詢時效能更好。同時可選擇分割槽(partition),這樣在查詢時可通過條件過濾進一步減少資料量。接入層一般選擇csv或json等文字格式,也不做分割槽,以盡量簡化資料同步。資料倉儲則選擇orc或parquet,以提公升資料離線計算效能。

資料集市這塊可以選擇將資料灌回傳統資料庫(rdbms),也可以停留在資料分析平台,使用nosql提供資料查詢或用apache kylin來構建資料立方體,提供sql查詢介面。

2、資料同步  

我們通過資料同步功能使得資料到達接入層,使用到了sqoop和kafka。資料同步可以分為全量同步和增量同步,對於小表可以採用全量同步,對於大表全量同步是比較耗時的,一般都採用增量同步,將變動同步到資料平台執行,以達到兩邊資料一致的目的。

全量同步使用sqoop來完成,增量同步如果考慮定時執行,也可以用sqoop來完成。或者,也可以通過kafka等mq流式同步資料,前提是外部資料來源會將變動傳送到mq。

3、etl及離線計算  

我們使用yarn來統一管理和排程計算資源。相較map/reduce,spark sql及spark rdd對開發人員更友好,基於記憶體計算效率也更高,所以我們使用spark on yarn作為分析平台的計算選型。

etl可以通過spark sql或hive sql來完成,hive在2.0以後支援儲存過程,使用起來更方便。當然,出於效能考慮saprk sql還是不錯的選擇。

大資料平台搭建 基於Hadoop的資料分析平台

網際網路的發展,帶來了各種資料的爆發式增長,所有接入網際網路的相關操作行為,都化為虛擬的資料被記錄了下來。大資料時代的帶來,乙個明顯的變化就是全樣本資料分析,面對tb pb級及以上的資料規模,hadoop成為主流選擇。企業要進行大規模的資料分析,基於開源的hadoop及其生態圈來搭建起大資料系統平台...

大資料分析平台Hadoop與Spark之爭

zd至頂網軟體頻道訊息 原創文章 文 鄧曉蕾 有人把大資料稱為資訊資產 有人稱為金礦 甚至社會財富。而大資料,即,無法在可承受的時間範圍內用常規軟體工具進行捕捉 管理和處理的資料集合。gartne認為 大資料 是需要新處理模式才能具有更強的決策力 洞察發現力和流程優化能力的海量 高增長率和多樣化的資...

基於大資料技術的綜合資料分析平台

對於企業來說,利用大資料技術建立綜合資料分析平台有利於企業內的管理人員更好地掌握企業的實際情況,有效控制企業的經營成本,提高企業的經濟效益,同時全面提高企業的管理水平,對企業的發展有非常積極的促進作用。所以,現階段必須要合理利用大資料技術,結合企業的經營模式和發展情況,建立綜合資料分析平台,進而為企...