柚子快報(bào)激活碼778899分享:hadoop Hive進(jìn)階
目錄
一、MapReduce的計(jì)算過程
二、Yarn的資源調(diào)度
yarn的資源調(diào)度策略
三、Hive的語法樹
四、Hive配置優(yōu)化
五、數(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)閉釋放資源
yarn的資源調(diào)度策略
當(dāng)有多個(gè)計(jì)算任務(wù)同時(shí)請(qǐng)求yarn進(jìn)行計(jì)算,如何分配資源給每個(gè)計(jì)算任務(wù)?
先進(jìn)先出
誰先搶到資源誰使用所有資源 資源利用效率低 如果遇到一個(gè)計(jì)算時(shí)間較長的任務(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í)行
四、Hive配置優(yōu)化
hive中有三種配置方式
配置文件配置
hive的安裝目錄下的conf目錄中的hive-site.xml 全局有效,啟動(dòng)hive后會(huì)自動(dòng)使用配置文件中的配置 文件格式xml
hive指令配置
nohup hive --service hiveserve2 --hiveconf 'hive.exec.dynamic.partition.mode=nostrict' &
set配置
在sql的操作界面設(shè)置
set hive.exec.dynamic.partition.mode=nostrict;
set hive.exec.dynamic.partition.mode;
優(yōu)先級(jí): set配置 > hive指令配置 > 配置文件
set配置只在當(dāng)前操作界面生效,創(chuàng)建新的連接窗口就是失效了
日常開發(fā)中為了減少配置信息的影響,誰開發(fā)誰設(shè)置,采用set方式
hive的配置屬性信息 Configuration Properties - Apache Hive - Apache Software Foundation
五、數(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
ELT是將etl的開發(fā)流程進(jìn)行了調(diào)整,使用采集工具采集數(shù)據(jù),將數(shù)據(jù)直接寫入hdfs,清洗轉(zhuǎn)化過程可以使用hiveSQL在數(shù)倉中執(zhí)行
柚子快報(bào)激活碼778899分享:hadoop Hive進(jìn)階
相關(guān)閱讀
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。