制冷 網(wǎng)站建設(shè) 中企動(dòng)力微指數(shù)官網(wǎng)
1. 教育項(xiàng)目的架構(gòu)說明
項(xiàng)目的架構(gòu):?
? ? 基于cloudera manager大數(shù)據(jù)統(tǒng)一管理平臺(tái), 在此平臺(tái)之上構(gòu)建大數(shù)據(jù)相關(guān)的軟件(zookeeper,HDFS,YARN,HIVE,OOZIE,SQOOP,HUE...), 除此以外, 還使用FINEBI實(shí)現(xiàn)數(shù)據(jù)報(bào)表展示
各個(gè)軟件相關(guān)作用:
? ? zookeeper: 集群管理工具, 主要服務(wù)于hadoop高可用以及其他基于zookeeper管理的大數(shù)據(jù)軟件
? ? HDFS: ?主要負(fù)責(zé)最終數(shù)據(jù)的存儲(chǔ)
? ? YARN: 主要提供資源的分配
? ? HIVE: 用于編寫SQL, 進(jìn)行數(shù)據(jù)分析
? ? oozie: ?主要是用來做自動(dòng)化定時(shí)調(diào)度
? ? sqoop: 主要是用于數(shù)據(jù)的導(dǎo)入導(dǎo)出
? ? HUE: 提升操作hadoop用戶體驗(yàn), 可以基于HUE操作HDFS, HIVE ....
? ? FINEBI: 由帆軟公司提供的一款進(jìn)行數(shù)據(jù)報(bào)表展示工具
項(xiàng)目架構(gòu)中: 數(shù)據(jù)流轉(zhuǎn)的流程
? ? 首先業(yè)務(wù)是存儲(chǔ)在MySQL數(shù)據(jù)庫中, 通過sqoop對(duì)MySQL的數(shù)據(jù)進(jìn)行數(shù)據(jù)的導(dǎo)入操作, 將數(shù)據(jù)導(dǎo)入到HIVE的ODS層中, 對(duì)數(shù)據(jù)進(jìn)行清洗轉(zhuǎn)換成處理工作, 處理之后對(duì)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析, 將統(tǒng)計(jì)分析的結(jié)果基于sqoop在導(dǎo)出到MySQL中, 最后使用finebi實(shí)現(xiàn)圖表展示操作, 由于分析工作是需要周期性干活, 采用ooize進(jìn)行自動(dòng)化的調(diào)度工作, 整個(gè)項(xiàng)目是基于cloudera manager進(jìn)行統(tǒng)一監(jiān)控管理
?2.?cloudera manager基本介紹
大數(shù)據(jù)的發(fā)行版本, 主要有三個(gè)發(fā)行版本: Apache 官方社區(qū)版本, cloudera 推出CDH商業(yè)版本, Hortworks推出的HDP商業(yè)免費(fèi)版本, 目前HDP版本已經(jīng)被cloudera 收購了
Apache版本Hadoop生態(tài)圈組件的優(yōu)點(diǎn)和弊端:
優(yōu)點(diǎn):
-
完全開源,更新速度很快
-
大數(shù)據(jù)組件在部署過程中可以深刻了解其底層原理
-
可以了解各個(gè)組件的依賴關(guān)系
缺點(diǎn)
-
部署過程極其復(fù)雜,超過20個(gè)節(jié)點(diǎn)的時(shí)候,手動(dòng)部署已經(jīng)超級(jí)累
-
各個(gè)組件部署完成后,各個(gè)為政,沒有統(tǒng)一化管理界面
-
組件和組件之間的依賴關(guān)系很復(fù)雜,一環(huán)扣一環(huán),部署過程心累
-
各個(gè)組件之間沒有統(tǒng)一的metric可視化界面,比如說hdfs總共占用的磁盤空間、IO、運(yùn)行狀況等
-
優(yōu)化等需要用戶自己根據(jù)業(yè)務(wù)場(chǎng)景進(jìn)行調(diào)整(需要手工的對(duì)每個(gè)節(jié)點(diǎn)添加更改配置,效率極低,我們希望的是一個(gè)配置能夠自動(dòng)的分發(fā)到所有的節(jié)點(diǎn)上)
為了解決上述apache產(chǎn)生問題, 出現(xiàn)了一些商業(yè)化大數(shù)據(jù)組件, 其中以 cloudera 公司推出 CDH版本為主要代表
CDH是Apache Hadoop和相關(guān)項(xiàng)目中最完整、最穩(wěn)定的、經(jīng)過測(cè)試和最流行的發(fā)行版。 CDH出現(xiàn)幫助解決了各個(gè)軟件之間的兼容問題, 同時(shí)內(nèi)置大量的常規(guī)企業(yè)優(yōu)化方案, 為了提供用戶體驗(yàn), 專門推出一款用于監(jiān)控管理自家產(chǎn)品的大數(shù)據(jù)軟件: cloudera manager
Cloudera Manager是用于管理CDH群集的B/S應(yīng)用程序
使用Cloudera Manager,可以輕松部署和集中操作完整的CDH堆棧和其他托管服務(wù)(Hadoop、Hive、Spark、Kudu)。其特點(diǎn):應(yīng)用程序的安裝過程自動(dòng)化,將部署時(shí)間從幾周縮短到幾分鐘; 并提供運(yùn)行主機(jī)和服務(wù)的集群范圍的實(shí)時(shí)監(jiān)控視圖; 提供單個(gè)中央控制臺(tái),以在整個(gè)群集中實(shí)施配置更改; 并集成了全套的報(bào)告和診斷工具,可幫助優(yōu)化性能和利用率。
? ? 教育項(xiàng)目中虛擬機(jī), 堅(jiān)決不允許掛起, 以及強(qiáng)制關(guān)閉操作, 如果做了, 非常大的概率導(dǎo)致服務(wù)器出現(xiàn)內(nèi)存以及磁盤問題, 需要重新解壓
? ? 關(guān)機(jī)必須在CRT上直接關(guān)機(jī)命令: shutdown -h now ? (每一個(gè)節(jié)點(diǎn)都要執(zhí)行)
? ? 重啟服務(wù)器: 執(zhí)行 reboot (每一個(gè)節(jié)點(diǎn)都要執(zhí)行)
? ? 需要注意: 如果將虛擬機(jī)放置在機(jī)械磁盤的, 如果長時(shí)間不使用這幾個(gè)虛擬機(jī), 建議將其關(guān)閉, 固態(tài)盤一般沒啥問題, 但是依然建議關(guān)閉
?
4. 數(shù)據(jù)倉庫的基本概念
回顧1: 什么是數(shù)據(jù)倉庫
存儲(chǔ)數(shù)據(jù)的倉庫, 主要是用于存儲(chǔ)過去既定發(fā)生的歷史數(shù)據(jù), 對(duì)這些數(shù)據(jù)進(jìn)行數(shù)據(jù)分析的操作, 從而對(duì)未來提供決策支持
回顧2: 數(shù)據(jù)倉庫最大的特點(diǎn):
既不生產(chǎn)數(shù)據(jù), 也不消耗數(shù)據(jù), 數(shù)據(jù)來源于各個(gè)數(shù)據(jù)源
回顧3: 數(shù)據(jù)倉庫的四大特征:
1) 面向于主題的: 面向于分析, 分析的內(nèi)容是什么 什么就是我們的主題
2) 集成性: 數(shù)據(jù)是來源于各個(gè)數(shù)據(jù)源, 將各個(gè)數(shù)據(jù)源數(shù)據(jù)匯總在一起
3) 非易失性(穩(wěn)定性): 存儲(chǔ)在數(shù)據(jù)倉庫中數(shù)據(jù)都是過去既定發(fā)生數(shù)據(jù), 這些數(shù)據(jù)都是相對(duì)比較穩(wěn)定的數(shù)據(jù), 不會(huì)發(fā)生改變
4) 時(shí)變性: 隨著的推移, 原有的分析手段以及原有數(shù)據(jù)可能都會(huì)出現(xiàn)變化(分析手動(dòng)更換, 以及數(shù)據(jù)新增)
回顧3: ETL是什么
ETL: 抽取 轉(zhuǎn)換 加載指的: 數(shù)據(jù)從數(shù)據(jù)源將數(shù)據(jù)灌入到ODS層, 以及從ODS層將數(shù)據(jù)抽取出來, 對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)換處理工作, 最終將數(shù)據(jù)加載到DW層, 然后DW層對(duì)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析, 將統(tǒng)計(jì)分析后的數(shù)據(jù)灌入到DA層, 整個(gè)全過程都是屬于ETL范疇狹義上ETL: 從ODS層到DW層過程
回顧四: 數(shù)據(jù)倉庫和 數(shù)據(jù)庫的區(qū)別
數(shù)據(jù)庫(OLTP): 面向于事務(wù)(業(yè)務(wù))的 , 主要是用于捕獲數(shù)據(jù) , 主要是存儲(chǔ)的最近一段時(shí)間的業(yè)務(wù)數(shù)據(jù), 交互性強(qiáng) 一般不允許出現(xiàn)數(shù)據(jù)冗余
數(shù)據(jù)倉庫(OLAP): 面向于分析(主題)的 , 主要是用于分析數(shù)據(jù), 主要是存儲(chǔ)的過去歷史數(shù)據(jù) , 交互性較弱 可以允許出現(xiàn)一定的冗余
??
數(shù)據(jù)倉庫和數(shù)據(jù)集市:
數(shù)據(jù)倉庫其實(shí)指的集團(tuán)數(shù)據(jù)中心: 主要是將公司中所有的數(shù)據(jù)全部都聚集在一起進(jìn)行相關(guān)的處理操作 (ODS層)此操作一般和主題基本沒有什么太大的關(guān)系數(shù)據(jù)的集市(小型數(shù)據(jù)倉庫): 在數(shù)據(jù)倉庫基礎(chǔ)之上, 基于主題對(duì)數(shù)據(jù)進(jìn)行抽取處理分析工作, 形成最終分析的結(jié)果一個(gè)數(shù)據(jù)倉庫下, 可以有多個(gè)數(shù)據(jù)集市
5. 維度分析
維度分析: 針對(duì)某一個(gè)主題, 可以從不同的維度的進(jìn)行統(tǒng)計(jì)分析, 從而得出各種指標(biāo)的過程
- 什么是維度:
維度一般指的分析的角度, 看待一個(gè)問題的時(shí)候, 可以多個(gè)角度來看待, 而這些角度指的就是維度比如: 有一份2020年訂單數(shù)據(jù), 請(qǐng)嘗試分析可以從時(shí)間, 地域 , 商品, 來源 , 用戶....維度的分類:定性維度: 指的計(jì)算每天 每月 各個(gè)的維度 , 一般來說定性維度的字段都是放置在group by 中定量維度: 指的統(tǒng)計(jì)某一個(gè)具體的維度或者某一個(gè)范圍下信息, 比如說: 2020年度訂單額, 統(tǒng)計(jì)20~30歲區(qū)間人群的人數(shù) ,一般來說這種維度的字段都是放置在where中維度的分層和分級(jí): 本質(zhì)上對(duì)維度進(jìn)行細(xì)分的過程比如按年統(tǒng)計(jì): 按季度按照月份按照天按照每個(gè)小時(shí)比如: 按省份統(tǒng)計(jì):按市按縣從實(shí)際分析中, 統(tǒng)計(jì)的層級(jí)越多, 意味統(tǒng)計(jì)的越細(xì)化 設(shè)置維度內(nèi)容越多維度的下鉆和上卷: 以某一個(gè)維度為基準(zhǔn), 往細(xì)化統(tǒng)計(jì)的過程稱為下鉆, 往粗粒度稱為上卷比如: 按照 天統(tǒng)計(jì), 如果需要統(tǒng)計(jì)出 小時(shí), 指的就是下鉆, 如果需要統(tǒng)計(jì) 季度 月 年, 稱為上卷統(tǒng)計(jì)從實(shí)際分析中, 下鉆和上卷, 意味統(tǒng)計(jì)的維度變得更多了
- 什么是指標(biāo)
指標(biāo)指的衡量事務(wù)發(fā)展的標(biāo)準(zhǔn), 就是度量值常見的度量值: count() sum() max() min() avg() 還有一些 比例指標(biāo)(轉(zhuǎn)化率, 流失率, 同比..)指標(biāo)的分類:絕對(duì)指標(biāo): 計(jì)算具體的值指標(biāo)count() sum() max() min() avg()相對(duì)指標(biāo): 計(jì)算比率問題的指標(biāo)轉(zhuǎn)化率, 流失率, 同比
案例:
需求: 請(qǐng)求出在2020年度, 女性 未婚 年齡在18~25歲區(qū)間的用戶每一天的訂單量?維度: 時(shí)間維度 , 性別, 婚姻狀態(tài), 年齡定性維度: 每一天定量維度: 2020年度,18~25歲,女性,未婚指標(biāo): 訂單量(絕對(duì)指標(biāo)) --> count()select day,count(1) from 表 where year ='2020' and age between 18 and 25 and 婚姻='未婚' and sex = '女性' group by day;
?
6. 數(shù)倉建模
? 數(shù)倉建模指的規(guī)定如何在hive中構(gòu)建表, 數(shù)倉建模中主要提供兩種理論來進(jìn)行數(shù)倉建模操作: 三范式建模和維度建模理論
? 三范式建模: 主要是存在關(guān)系型數(shù)據(jù)庫建模方案上, 主要規(guī)定了比如建表的每一個(gè)表都應(yīng)該有一個(gè)主鍵, 數(shù)據(jù)要經(jīng)歷的避免冗余發(fā)生等等
? 維度建模: 主要是存在分析性數(shù)據(jù)庫建模方案上, 主要一切以分析為目標(biāo), 只要是利于分析的建模, 都是OK的, 允許出現(xiàn)一定的冗余, 表也可以沒有主鍵
?
維度建模的兩個(gè)核心概念:事實(shí)表和維度表。
6.1 事實(shí)表
? 事實(shí)表: 事實(shí)表一般指的就是分析主題所對(duì)應(yīng)的表,每一條數(shù)據(jù)用于描述一個(gè)具體的事實(shí)信息, 這些表一般都是一坨主鍵(外鍵)和描述事實(shí)字段的聚集
例如: 比如說統(tǒng)計(jì)2020年度訂單銷售情況 主題: 訂單
相關(guān)表: 訂單表(事實(shí)表)
思考: 在訂單表, 一條數(shù)據(jù), 是不是描述一個(gè)具體的訂單信息呢? 是的
思考: 在訂單表, 一般有那些字段呢? 訂單的ID, 商品id,單價(jià),購買的數(shù)量,下單時(shí)間, 用戶id,商家id, 省份id, 市區(qū)id, 縣id 商品價(jià)格...進(jìn)行統(tǒng)計(jì)分析的時(shí)候, 可以結(jié)合 商品維度, 用戶維度, 商家維度, 地區(qū)維度 進(jìn)行統(tǒng)計(jì)分析, 在進(jìn)行統(tǒng)計(jì)分析的時(shí)候, 可能需要關(guān)聯(lián)到其他的表(維度表)注意:一般需要計(jì)算的指標(biāo)字段所在表, 都是事實(shí)表
事實(shí)表的分類:
1) 事務(wù)事實(shí)表:保存的是最原子的數(shù)據(jù),也稱“原子事實(shí)表”或“交易事實(shí)表”。溝通中常說的事實(shí)表,大多指的是事務(wù)事實(shí)表。
2) 周期快照事實(shí)表:周期快照事實(shí)表以具有規(guī)律性的、可預(yù)見的時(shí)間間隔來記錄事實(shí),時(shí)間間隔如每天、每月、每年等等周期表由事務(wù)表加工產(chǎn)生
3) 累計(jì)快照事實(shí)表:完全覆蓋一個(gè)事務(wù)或產(chǎn)品的生命周期的時(shí)間跨度,它通常具有多個(gè)日期字段,用來記錄整個(gè)生命周期中的關(guān)鍵時(shí)間點(diǎn)
?
6.2 維度表
? 維度表: 指的在對(duì)事實(shí)表進(jìn)行統(tǒng)計(jì)分析的時(shí)候, 基于某一個(gè)維度, 二這個(gè)維度信息可能其他表中, 而這些表就是維度表
維度表并不一定存在, 但是維度是一定存在:比如: 根據(jù)用戶維度進(jìn)行統(tǒng)計(jì), 如果在事實(shí)表只存儲(chǔ)了用戶id, 此時(shí)需要關(guān)聯(lián)用戶表, 這個(gè)時(shí)候就是維度表比如: 根據(jù)用戶維度進(jìn)行統(tǒng)計(jì), 如果在事實(shí)表不僅僅存儲(chǔ)了用戶id,還存儲(chǔ)用戶名稱, 這個(gè)時(shí)候有用戶維度, 但是不需要用戶表的參與, 意味著沒有這個(gè)維度表
維度表的分類:
高基數(shù)維度表: 指的表中的數(shù)據(jù)量是比較龐大的, 而且數(shù)據(jù)也在發(fā)送的變化例如: 商品表, 用戶表低基數(shù)維度表: 指的表中的數(shù)據(jù)量不是特別多, 一般在幾十條到幾千條左右,而且數(shù)據(jù)相對(duì)比較穩(wěn)定例如: 日期表,配置表,區(qū)域表
6.3 維度建模的三種模型
- 第一種: 星型模型
- 特點(diǎn): 只有一個(gè)事實(shí)表, 那么也就意味著只有一個(gè)分析的主題, 在事實(shí)表的周圍圍繞了多個(gè)維度表, 維度表與維度表之間沒有任何的依賴
- 反映數(shù)倉發(fā)展初期最容易產(chǎn)生模型
- 第二種: 雪花模型
- 特點(diǎn): 只有一個(gè)事實(shí)表, 那么也就意味著只有一個(gè)分析的主題, 在事實(shí)表的周圍圍繞了多個(gè)維度表, 維度表可以接著關(guān)聯(lián)其他的維度表
- 反映數(shù)倉發(fā)展出現(xiàn)了畸形產(chǎn)生模型, 這種模型一旦大量出現(xiàn), 對(duì)后期維護(hù)是非常繁瑣, 同時(shí)如果依賴層次越多, SQL分析的難度也會(huì)加大
- 此種模型在實(shí)際生產(chǎn)中,建議盡量減少這種模型產(chǎn)生
- 第三種: 星座模型
- 特點(diǎn): 有多個(gè)事實(shí)表, 那么也就意味著有了多個(gè)分析的主題, 在事實(shí)表的周圍圍繞了多個(gè)維度表, 多個(gè)事實(shí)表在條件符合的情況下, 可以共享維度表
- 反映數(shù)倉發(fā)展中后期最容易產(chǎn)生模型
?
6.4 緩慢漸變維
? 解決問題: 解決歷史變更數(shù)據(jù)是否需要維護(hù)的情況
- SCD1: 直接覆蓋, 不維護(hù)歷史變化數(shù)據(jù)
- 主要適用于: 對(duì)錯(cuò)誤數(shù)據(jù)處理
- **SCD2:不刪除、不修改已存在的數(shù)據(jù), 當(dāng)數(shù)據(jù)發(fā)生變更后, 會(huì)添加一條新的版本記錄的數(shù)據(jù), 在建表的時(shí)候, 會(huì)多加兩個(gè)字段(起始時(shí)間, 截止時(shí)間), 通過這兩個(gè)字段來標(biāo)記每條數(shù)據(jù)的起止時(shí)間 , 一般稱為拉鏈表**
- 好處: 適用于保存多個(gè)歷史版本, 方便維護(hù)實(shí)現(xiàn)
- 弊端: 會(huì)造成數(shù)據(jù)冗余情況, 導(dǎo)致磁盤占用率提升
- SCD3: 通過在增加列的方式來維護(hù)歷史變化數(shù)據(jù)
- 好處: 減少數(shù)據(jù)的冗余, 適用于少量歷史版本的記錄以及磁盤空間不是特別充足情況
- 弊端: 無法記錄更多的歷史版本, 以及維護(hù)比較繁瑣