淺談一個新人的大數(shù)據(jù)之路

第一章,大數(shù)據(jù)之路淺談

數(shù)倉&數(shù)據(jù)集市&數(shù)據(jù)湖

**數(shù)據(jù)倉庫**:英文名稱為Data Warehouse,可簡寫為DW或DWH。數(shù)據(jù)倉庫,是為企業(yè)所有級別的決策制定過程,提供所有類型數(shù)據(jù)支持的戰(zhàn)略集合。它是單個數(shù)據(jù)存儲,出于分析性報告和決策支持目的而創(chuàng)建。 為需要業(yè)務智能的企業(yè),提供指導業(yè)務流程改進、監(jiān)視時間、成本、質(zhì)量以及控制。

**數(shù)據(jù)倉庫**:一個面向主題的(Subject Oriented),集成的(Integrated),非易失的(Non-Volatilea),隨時間變化的(Time Variant),用來支持管理人員決策的數(shù)據(jù)集合

**數(shù)據(jù)湖&hub**:概念最初是由大數(shù)據(jù)廠商提出的,表面上看,數(shù)據(jù)都是承載在基于可向外擴展的HDFS廉價存儲硬件之上的。但數(shù)據(jù)量越大,越需要各種不同種類的存儲。最終,所有的企業(yè)數(shù)據(jù)都可以被認為是大數(shù)據(jù),但并不是所有的企業(yè)數(shù)據(jù)都是適合存放在廉價的HDFS集群之上的。

**數(shù)據(jù)集市(Data Mart)** :也叫數(shù)據(jù)市場,數(shù)據(jù)集市就是滿足特定的部門或者用戶的需求,按照多維的方式進行存儲,包括定義維度、需要計算的指標、維度的層次等,生成面向決策分析需求的數(shù)據(jù)立方體。

在業(yè)務快速發(fā)展的時候,一般一個業(yè)務模式或者場景對應一個數(shù)據(jù)集市,以支撐業(yè)務快速發(fā)展

例如:爬蟲集市、反爬蟲集市、搜索推薦集市、內(nèi)容營銷集市、風控集市、財務集市、營銷集市等等

數(shù)據(jù)模型

**本文所提到模型即是指由Hive將存儲在HDFS或者其他數(shù)據(jù)源上結(jié)構(gòu)化文件映射成為的“表”**

模型ETL頻率:

離線模型:T+1、T+2、周、月、季

準實時模型(rtf 模型):1min、5min、10min、30min、1hour

實時topic:實時消費、流式處理、實時接入、實時消費

模型存儲技術:

非分區(qū)模型:不存儲歷史數(shù)據(jù),只存儲數(shù)據(jù)最新狀態(tài)

全量模型:全量存儲數(shù)據(jù),超出一定時間未更新狀態(tài)數(shù)據(jù)存入History分區(qū),否則存入ACTIVE分區(qū),只記錄數(shù)據(jù)最新狀態(tài)

增量模型:增量存儲數(shù)據(jù),每日新增數(shù)據(jù)紀錄成快照并存入最新分區(qū)

拉鏈模型:拉鏈模型是一種數(shù)據(jù)處理和存儲的技術方式;通過比較,記錄數(shù)據(jù)的生命周期;能快速還原任意天的歷史快照,極大的節(jié)省了存儲。 顧名思義,所謂拉鏈,就是記錄歷史。記錄一個事物從開始,一直到當前狀態(tài)的所有變化的信息

模型數(shù)據(jù)分層:

分區(qū)模型:就是一種物理上的“索引”,將總數(shù)據(jù)按規(guī)則分裝到各個小區(qū)中并打上標簽,查詢指定標簽的數(shù)據(jù)時只用遍歷該小區(qū)的數(shù)據(jù)即可

桶模型: 對于每一個模型(table)或者分區(qū), Hive可以進一步組織成桶,也就是說桶是更為細粒度的數(shù)據(jù)范圍劃分。Hive也是針對某一列進行桶的組,筆者在日常開發(fā)中沒有使用過“分桶”技術

注意:

1. 而分區(qū)又會被分為靜態(tài)分區(qū)&動態(tài)分區(qū),在insert數(shù)據(jù)時會有區(qū)別,靜態(tài)分區(qū)insert數(shù)據(jù)時需要制定分區(qū),動態(tài)分區(qū)不需要制定?

如果分區(qū)是可以確定的話,千萬不要用動態(tài)分區(qū),動態(tài)分區(qū)相較與靜態(tài)分區(qū),效率會低一些。因為動態(tài)分區(qū)的值是在reduce運行階段確定的,也就是會把所有的記錄distribute by,而Distribute by 按指定字段,將數(shù)據(jù)劃分到不同的Reduce中,所以當數(shù)據(jù)大的時候,Reduce的數(shù)量直接影響著效率的高低。

2. insert數(shù)據(jù)時,可以將動態(tài)分區(qū)&靜態(tài)分區(qū)結(jié)合使用,結(jié)合方式為:主靜從動

3. 一般模型分區(qū)數(shù)量不應該超過2層,否則會因分區(qū)數(shù)過多而導致生成大量小文件(文件小于128M),影響集群效率

3.1 從Hive的角度看,小文件會開很多map,一個map開一個JVM去執(zhí)行,所以這些任務的初始化,啟動,執(zhí)行會浪費大量的資源,嚴重影響性能。

3.2 NameNode會在內(nèi)存中維護著文件系統(tǒng)樹及整棵樹內(nèi)所有的文件和目錄,也記錄著每個文件中各個塊所在的數(shù)據(jù)節(jié)點信息。在HDFS中,每個小文件對象約占150byte,如果小文件過多會占用大量內(nèi)存。這樣NameNode內(nèi)存容量嚴重制約了集群的擴展

模型架構(gòu)分層:

ADM:源數(shù)據(jù)層,與生產(chǎn)系統(tǒng)數(shù)據(jù)及結(jié)構(gòu)完全保持一致

BDM:拉鏈層,以ADM層為基礎,將數(shù)據(jù)轉(zhuǎn)換為拉鏈模型進行極限存儲

CDM:明細層,以BDM層或ADM層為基礎,拉取數(shù)據(jù)加工成星型模型或雪花模型

DDM:公共層,以CDM為基礎,所有的數(shù)據(jù)業(yè)務及技術口徑、TEL方式、數(shù)據(jù)場景聚合在此層實現(xiàn)統(tǒng)一

EDM:應用層,以DDM為基礎,面向不同的系統(tǒng)實現(xiàn)定制化開發(fā)

TMP:臨時數(shù)據(jù)層,基礎臨時模型或者中間模型

OPD:測試層,存儲測試待上線模型

NMV:維度層,為降低數(shù)據(jù)冗余,存儲一些枚舉值映射關系

模型主題域:

不同層的模型會按照特定的業(yè)務主體或者場景劃分出“”主題“”,以便用戶快速在茫茫模型海中找到目標模型,舉例說明

Z01:用戶

X02:搜索

C03:廣告

V04:流量

B05:交易

N06:訂單

M07:商品

L08:房產(chǎn)

K09:二手車

......

模型創(chuàng)建類型:

內(nèi)部模型(管理模型):未被external修飾的是內(nèi)部表,數(shù)據(jù)由hive自身管理。drop表時,hdfs上持久化存儲數(shù)據(jù)會被刪除

外部模型:數(shù)據(jù)由HDFS管理,drop表時,表的元數(shù)據(jù)信息會被刪除,持久化存儲數(shù)據(jù)還會在HDFS中未被刪除

模型存儲類型:

TEXTFILE:存儲方式為行存儲,默認存儲方式

SEQUENCEFILE:二進制文件,以<key,value>的形式序列化到文件中,行存儲,可分割可壓縮?

RCFILE:數(shù)據(jù)按行分塊 每塊按照列存儲,壓縮快,快速列存取

ORCFILE:數(shù)據(jù)按行分塊 每塊按照列存儲,壓縮快,快速列存取

PARQUET:列式存儲,可用于多種數(shù)據(jù)處理系統(tǒng)

模型壓縮算法:

GZIP

BZIP2

LZO

SNAPPY

筆者日常開發(fā)采用ORC格式對數(shù)據(jù)進行存儲,SNAPPY算法對數(shù)據(jù)進行壓縮,后期會分章節(jié)填上本篇挖的所有坑-。-

最后的最后,講講集群中幾個概念:隊列,節(jié)點,計算引擎

隊列:

保證不同等級數(shù)據(jù)計算任務及算法任務互相獨立享受資源,互不干擾互不影響,獨立劃分一片資源,列舉幾個集群中“”隊列“”實際應用場景

core :核心重點任務使用

formal:生產(chǎn)隊列,供生產(chǎn)任務使用

Spark:僅供Spark作業(yè)使用

Machine_learning:僅供算法作業(yè)使用

bu:僅供報表作業(yè)使用

presto:僅供Presto即席查詢使用

Hive:僅供Hive查詢使用

dev:僅供非核心作業(yè)使用

這塊再挖一個大坑,后幾期筆者會重點講一下在實際生產(chǎn)環(huán)境下同一集市不同隊列間資源分配策略

節(jié)點:

負責調(diào)度任務的客戶端,筆者Spark開發(fā)時采用Yarn提交作業(yè),Yarn會選擇集群任意一臺機器作為客戶端以供Driver進行作業(yè)調(diào)度

計算引擎:

Hive

Spark

Pig

Spark Streaming

Storm

MapReduce

這塊再挖一個大坑,筆者日?;径疾捎肧park引擎開發(fā),后續(xù)文章會重點講解每個計算引擎不同,優(yōu)勢與劣勢

回過頭看看自己職業(yè)經(jīng)歷,當初覺得自己太菜,17年剛來北京決定從事數(shù)據(jù)分析師這個崗位,面試了頭條、鏈家、58到家,每一家對數(shù)據(jù)分析側(cè)重點不一樣:

頭條重算法,上來手寫一些算法基本實現(xiàn)

鏈家重實現(xiàn),筆試里有較多題目設計業(yè)務場景具體分析,具體實現(xiàn)

58到家談業(yè)務,可能是由于面試業(yè)務部門導致

后來沒有去師傅推薦的58到家商業(yè)BI部門當一個數(shù)據(jù)分析師,輾轉(zhuǎn)反側(cè)來到沃斯,從事業(yè)務側(cè)數(shù)據(jù)分析師,最后異動至數(shù)據(jù)開發(fā),神奇的經(jīng)歷,因為自己的堅持,最終做到自己想干的事!

*人生苦短,我用Python,CCCCCold的大數(shù)據(jù)之禪*

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容