目錄
一、MapReduce的計(jì)算過程
二、Yarn的資源調(diào)度
1、yarn的資源調(diào)度策略
三、Hive的語法樹
四、數(shù)據(jù)開發(fā)
五、數(shù)據(jù)倉庫
六、數(shù)據(jù)倉庫開發(fā)流程
七、數(shù)倉分層
八、ETL和ELT
一、MapReduce的計(jì)算過程
分布式計(jì)算框架
需要編寫代碼執(zhí)行,執(zhí)行時(shí)會(huì)數(shù)據(jù)所在服務(wù)器上運(yùn)行相同的計(jì)算代碼
計(jì)算過程分為map 和reduce過程
map對(duì)多份數(shù)據(jù)進(jìn)行拆分計(jì)算
reduce將分開的map結(jié)果合并一起計(jì)算
map的計(jì)算程序數(shù)量由文件塊個(gè)數(shù)據(jù)決定,每個(gè)map計(jì)算一個(gè)塊的數(shù)據(jù)
reduce的個(gè)數(shù)默認(rèn)是一個(gè);在進(jìn)行數(shù)據(jù)拆分存儲(chǔ)時(shí),reduce個(gè)數(shù)由分區(qū)數(shù)和分桶數(shù)決定
map將數(shù)據(jù)傳遞給reduce過程稱為shuffle過程
包含 分區(qū),排序,合并
Map階段
1-按照塊數(shù)量進(jìn)行split的塊數(shù)據(jù)讀取
2-split切割后的數(shù)據(jù)傳遞給對(duì)應(yīng)的map進(jìn)行處理,會(huì)對(duì)數(shù)據(jù)轉(zhuǎn)為kv (張三,1) (張三,1),(李四,1)
3-map將處理的后的數(shù)據(jù)寫入buffer緩存區(qū)
4-對(duì)緩沖區(qū)內(nèi)的數(shù)據(jù)進(jìn)行spill溢出(讀取緩沖區(qū)內(nèi)的數(shù)據(jù))
5-對(duì)讀取的數(shù)據(jù)進(jìn)行分區(qū),將數(shù)據(jù)拆分多份
6-對(duì)每份拆分的數(shù)據(jù)進(jìn)行排序 sort
7-將拆分的數(shù)據(jù)寫入不同的文件
8-在將每次溢出的數(shù)據(jù)合并merge在一起,保存同一文件,文件是臨時(shí)文件,計(jì)算后會(huì)刪除
Reduce階段
1-根據(jù)的分區(qū)數(shù)創(chuàng)建出多個(gè)reduce
2-每個(gè)reduce從不同的map中fetch獲取相同分區(qū)的文件數(shù)據(jù)
3-在將fetch后的文件合并,對(duì)合并后的數(shù)據(jù)進(jìn)行排序
4-reduce對(duì)合并后的文件數(shù)據(jù)進(jìn)行計(jì)算
5-reduce對(duì)結(jié)果輸出到hdfs的目錄下
二、Yarn的資源調(diào)度
分布式資源調(diào)度,管理整個(gè)hadoop集群的所有服務(wù)器資源
6.7章節(jié)
-
ResourceManger
-
負(fù)責(zé)處理所有計(jì)算資源申請(qǐng)
-
-
NodeManager
-
負(fù)責(zé)資源空間(container)的創(chuàng)建
-
-
ApplicationMaster
-
管理計(jì)算任務(wù),只有產(chǎn)生了mapreduce計(jì)算才會(huì)運(yùn)行ApplicationMaster
-
負(fù)責(zé)具體的資源分配
-
map使用多少
-
reduce使用多少
-
-
1-mapreduce提交計(jì)算任務(wù)給RM(ResourceManager)
2-RM中的applicationmanager負(fù)責(zé)創(chuàng)建applicationMaster進(jìn)程
3-applicationMaster和applicationmanager保持通訊
4-applicationMaster找RM中的ResourceScheduler(資源調(diào)度器)申請(qǐng)計(jì)算需要的資源
5-applicationMaster通知對(duì)應(yīng)的NodeManger創(chuàng)建資源空間container
6-在資源空間中先運(yùn)行map階段的計(jì)算,先運(yùn)行reduce階段的計(jì)算
7-map和reduce運(yùn)行期間會(huì)將自身狀態(tài)信息匯報(bào)給applicationMaster
8-計(jì)算完成后,applicationMaster通知NodeManger釋放資源
9-資源釋放后再通知applicationmanager把自身(applicationMaster)關(guān)閉釋放資源
1、yarn的資源調(diào)度策略
當(dāng)有多個(gè)計(jì)算任務(wù)同時(shí)請(qǐng)求yarn進(jìn)行計(jì)算,如何分配資源給每個(gè)計(jì)算任務(wù)?
-
先進(jìn)先出
-
誰先搶到資源誰使用所有資源
-
資源利用效率低
-
如果遇到一個(gè)計(jì)算時(shí)間較長(zhǎng)的任務(wù),保資源占用后。其他的任務(wù)就無法計(jì)算
-
-
容量調(diào)度
-
將資源分成多份
-
不同計(jì)算任務(wù)使用不同的資源大小
-
-
-
公平調(diào)度
-
資源全部給一個(gè)計(jì)算任務(wù)使用,但是當(dāng)計(jì)算任務(wù)中的某個(gè)map或reduce計(jì)算完成后,可以將自身資源釋放掉給其他計(jì)算任務(wù)使用
-
5個(gè)map,其中有兩個(gè)map計(jì)算完成,就可以先釋放掉兩個(gè)資源,給他任務(wù)使用,不同等待所有任務(wù)計(jì)算完成在釋放
-
-
三、Hive的語法樹
-
解析器
-
解析sql關(guān)鍵詞轉(zhuǎn)為語法數(shù)據(jù)
-
-
分析器
-
分析語法格式,字段類型等是否正確
-
-
優(yōu)化器
-
謂詞下推
-
調(diào)整jion和where執(zhí)行順序
-
-
列值裁剪
-
-
執(zhí)行器
-
將語法中的邏輯轉(zhuǎn)為mapreduce的計(jì)算java代碼交給MR執(zhí)行
-
四、數(shù)據(jù)開發(fā)
數(shù)據(jù)開發(fā)主要分兩種
-
操作型處理,叫聯(lián)機(jī)事務(wù)處理OLTP(On-Line Transaction Processing)
-
對(duì)數(shù)據(jù)進(jìn)行事務(wù)操作,保證數(shù)據(jù)操作的安全性
-
事務(wù)特性:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)
-
原子性:一個(gè)sql語句的執(zhí)行是不可拆分的,能完整執(zhí)行得到結(jié)果,不被搶占資源
-
select * from (select * from tb2) tb;
-
-
一致性
-
多表數(shù)據(jù)寫入時(shí),數(shù)據(jù)是一致性
-
訂單表
-
小米手機(jī) 1
-
-
商品表
-
小米手機(jī) 99
-
-
-
-
隔離性
-
程序員張三 update from order set stock=old_stock-num where id=1
-
在更新數(shù)據(jù)之前會(huì)先查詢剩余庫存的
-
-
程序員李四 update from order set stock=90 where id=1
-
保證每個(gè)sql執(zhí)行的任務(wù)是獨(dú)立的,此時(shí)任務(wù)就要按順序執(zhí)行語句
-
-
持久性
-
數(shù)據(jù)會(huì)持久存儲(chǔ)在磁盤上
-
-
業(yè)務(wù)開發(fā)
使用到數(shù)據(jù)庫都屬于聯(lián)機(jī)事務(wù)處理-
業(yè)務(wù)開發(fā)(網(wǎng)站或程序)進(jìn)行的數(shù)據(jù)操作對(duì)安全性要求比較高,所有采用的數(shù)據(jù)操作方式是聯(lián)機(jī)事務(wù)處理
-
-
-
分析型處理,叫聯(lián)機(jī)分析處理OLAP(On-Line Analytical Processing)
-
大數(shù)據(jù)的數(shù)據(jù)開發(fā)主要進(jìn)行的是聯(lián)機(jī)分析處理
-
對(duì)數(shù)據(jù)進(jìn)行查詢計(jì)算,得到結(jié)果進(jìn)行分析
-
數(shù)據(jù)一般是一次寫入,多次讀取
-
大數(shù)據(jù)開發(fā)不涉及數(shù)據(jù)的刪除,也不修改數(shù)據(jù)
-
-
五、數(shù)據(jù)倉庫
數(shù)據(jù)倉庫就是對(duì)公司的過往歷史數(shù)據(jù)進(jìn)行計(jì)算分析,為公司決策提供數(shù)據(jù)支撐
歷史數(shù)據(jù)的數(shù)據(jù)量比較大,就需要采用大數(shù)據(jù)技術(shù)實(shí)現(xiàn)數(shù)據(jù)倉庫開發(fā)
使用HiveSQL對(duì)海量數(shù)據(jù)采用結(jié)構(gòu)化數(shù)據(jù)方式進(jìn)行計(jì)算
數(shù)倉開發(fā)本質(zhì)就是將文件數(shù)據(jù)轉(zhuǎn)為了結(jié)構(gòu)化數(shù)據(jù)進(jìn)行分析計(jì)算的
數(shù)倉特征
面向主題的(Subject-Oriented )
根據(jù)分析內(nèi)容采集相關(guān)數(shù)據(jù)進(jìn)行計(jì)算
每個(gè)分析方向就是一個(gè)主題
集成的(Integrated)
將相關(guān)主題的數(shù)據(jù)收集在一起進(jìn)行計(jì)算,形成一個(gè)大的寬表
銷售主題開發(fā)
訂單表,訂單商品表,訂單評(píng)價(jià),退款訂單表
非易失的(Non-Volatile)
數(shù)倉數(shù)據(jù)不容易丟失,也不會(huì)進(jìn)行刪除和修改
時(shí)變的(Time-Variant )
隨著分析需求的改變,數(shù)倉中的數(shù)據(jù)也在不斷變化,隨著時(shí)間推移,統(tǒng)計(jì)的字段計(jì)算數(shù)據(jù)也在發(fā)生變化
用戶表 用戶名,用戶性別,用戶年齡,用戶地址,用戶手機(jī)號(hào)
六、數(shù)據(jù)倉庫開發(fā)流程
-
設(shè)計(jì)主題計(jì)算需求
-
數(shù)據(jù)分析
師或者數(shù)據(jù)產(chǎn)品經(jīng)理
-
-
數(shù)據(jù)來源
-
Mysql中的業(yè)務(wù)數(shù)據(jù)
-
文件數(shù)據(jù) excel文件,csv文件,json,log
-
-
采集數(shù)據(jù)源數(shù)據(jù)
-
kettle
-
sqoop
-
datax
-
代碼采集
-
-
對(duì)采集的數(shù)據(jù)進(jìn)行清洗轉(zhuǎn)化,將處理的后的數(shù)據(jù)寫入到hdfs中
-
數(shù)據(jù)采集時(shí)單獨(dú)崗位
-
ETL開發(fā)工程師
-
-
-
數(shù)據(jù)的計(jì)算
-
mapreduce --> hiveSQL
-
spark
-
flink
-
數(shù)據(jù)計(jì)算和結(jié)果保存屬于數(shù)倉開發(fā)崗
-
-
將計(jì)算的結(jié)果數(shù)據(jù)存儲(chǔ)到指定位置
-
hdfs
-
habse
-
es
-
Mysql
-
數(shù)據(jù)計(jì)算和結(jié)果保存屬于數(shù)倉開發(fā)崗
-
-
對(duì)結(jié)果數(shù)據(jù)進(jìn)行BI展示
-
fineBI
-
powerBI
-
superset
-
BI工程師
-
七、數(shù)倉分層
將數(shù)據(jù)的計(jì)算過程拆分成多個(gè)部分就是數(shù)倉分層
分層實(shí)現(xiàn)就是創(chuàng)建不同數(shù)據(jù)庫
數(shù)倉最基本的三個(gè)分層
-
ODS
(old data service)-
保存原始數(shù)據(jù),采集清洗后的數(shù)據(jù)會(huì)被寫入ods層
-
create databases ods;
-
-
DW(Data WareHouse)
-
數(shù)倉開發(fā)層,對(duì)數(shù)據(jù)進(jìn)行計(jì)算
-
create databases dw;
-
-
APP
(application)-
結(jié)果數(shù)據(jù)層
-
不同主題下的數(shù)據(jù)保存在對(duì)應(yīng)表目錄下
-
create databases app;
-
對(duì)dw層可以進(jìn)行分層的拆分
dwb 基礎(chǔ)數(shù)據(jù) 在這一層進(jìn)行數(shù)據(jù)的過濾
dwd 數(shù)據(jù)詳情層 進(jìn)行數(shù)據(jù)的關(guān)聯(lián)
對(duì)數(shù)據(jù)的計(jì)算流程拆分后,形式一個(gè)完成數(shù)據(jù)開發(fā)流程,在流程中的每個(gè)關(guān)節(jié)都可以單獨(dú)進(jìn)行開發(fā)
select gender,avg(age) from tb1 join tb2 where dt = 2021-10-10 group by gender ? ? ? 1-數(shù)據(jù)的過濾 insert into tb1_where select * from tb1 where dt = 2021-10-10 insert into tb2_where select * from tb2 where dt = 2021-10-10 ? insert into tb1_where select * from tb1 where age > 20 insert into tb2_where select * from tb2 where name='張三' ? 2-關(guān)聯(lián)表數(shù)據(jù)據(jù) -- 新的表中保存了關(guān)聯(lián)后的所有數(shù)據(jù) insert into tb1_tb2_where select * from tb1_where join tb2_where ? ? 3-數(shù)據(jù)分組計(jì)算 select gender,avg(age) from tb1_tb2_where group by gender select city,avg(age) from tb1_tb2_where group by city
八、ETL和ELT
-
extract 數(shù)據(jù)抽取
-
transform 數(shù)據(jù)清洗轉(zhuǎn)化
-
load 數(shù)據(jù)的導(dǎo)入
ETL 屬于數(shù)據(jù)采集工作 通過采集工具采集的對(duì)應(yīng)的數(shù)據(jù)內(nèi)容,對(duì)內(nèi)容清洗轉(zhuǎn)化,在將清洗轉(zhuǎn)化后的數(shù)據(jù)寫入hdfs文章來源:http://www.zghlxwxcb.cn/news/detail-855558.html
ELT是將etl的開發(fā)流程進(jìn)行了調(diào)整,使用采集工具采集數(shù)據(jù),將數(shù)據(jù)直接寫入hdfs,清洗轉(zhuǎn)化過程可以使用hiveSQL在數(shù)倉中執(zhí)行文章來源地址http://www.zghlxwxcb.cn/news/detail-855558.html
到了這里,關(guān)于Hive進(jìn)階Day06的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!