柚子快報(bào)邀請(qǐng)碼778899分享:數(shù)據(jù)倉(cāng)庫(kù)【5】:項(xiàng)目實(shí)戰(zhàn)
柚子快報(bào)邀請(qǐng)碼778899分享:數(shù)據(jù)倉(cāng)庫(kù)【5】:項(xiàng)目實(shí)戰(zhàn)
數(shù)據(jù)倉(cāng)庫(kù)【5】:項(xiàng)目實(shí)戰(zhàn)
1、項(xiàng)目概述1.1、項(xiàng)目背景1.2、復(fù)購(gòu)率計(jì)算
2、數(shù)據(jù)描述3、架構(gòu)設(shè)計(jì)3.1、數(shù)據(jù)倉(cāng)庫(kù)架構(gòu)圖
4、環(huán)境搭建4.1、環(huán)境說(shuō)明4.2、集群規(guī)劃4.3、搭建流程
5、項(xiàng)目開(kāi)發(fā)5.1、業(yè)務(wù)數(shù)據(jù)生成5.2、ETL數(shù)據(jù)導(dǎo)入5.3、ODS層創(chuàng)建&數(shù)據(jù)接入5.4、DWD層創(chuàng)建&數(shù)據(jù)接入5.5、DWS層創(chuàng)建&數(shù)據(jù)接入5.6、ADS層創(chuàng)建&數(shù)據(jù)接入5.7、ADS層數(shù)據(jù)導(dǎo)出5.8、Azkaban自動(dòng)化調(diào)度
6、課后練習(xí)6.1、ADS層分析6.2、ADS層創(chuàng)建&數(shù)據(jù)接入6.3、Azkaban自動(dòng)化調(diào)度
1、項(xiàng)目概述
1.1、項(xiàng)目背景
某電商企業(yè),因數(shù)據(jù)積存、分析需要,籌劃搭建數(shù)據(jù)倉(cāng)庫(kù),提供數(shù)據(jù)分析訪問(wèn)接口項(xiàng)目一期需要完成數(shù)倉(cāng)建設(shè),并完成用戶復(fù)購(gòu)率的分析計(jì)算,支持業(yè)務(wù)查詢需求
1.2、復(fù)購(gòu)率計(jì)算
復(fù)購(gòu)率是指在一段時(shí)間間隔內(nèi),多次重復(fù)購(gòu)買(mǎi)產(chǎn)品的用戶,占全部人數(shù)的比率統(tǒng)計(jì)各個(gè)一級(jí)品類下,品牌月單次復(fù)購(gòu)率,和多次復(fù)購(gòu)率
2、數(shù)據(jù)描述
3、架構(gòu)設(shè)計(jì)
3.1、數(shù)據(jù)倉(cāng)庫(kù)架構(gòu)圖
4、環(huán)境搭建
4.1、環(huán)境說(shuō)明
操作系統(tǒng)及組件版本
CentosHadoopHiveTezMysqlSqoopAzkabanPresto版本72.7.71.2.10.9.15.7.281.4.62.5.00.196
4.2、集群規(guī)劃
使用3臺(tái)虛擬機(jī)進(jìn)行搭建
HadoopHive&TezMysqlSqoopAzkabanPrestonode01√√√node02√√√√node03√√√√√
4.3、搭建流程
1、安裝并準(zhǔn)備3臺(tái)CentOS7.2虛擬機(jī),主機(jī)名命名為node01、node02、node03 2、上傳自動(dòng)化安裝腳本automaticDeploy.zip到虛擬機(jī)node01中 3、解壓automaticDeploy.zip到/home/hadoop/目錄下
unzip automaticDeploy.zip -d /home/hadoop/
4、更改frames.txt文件,配置組件的安裝節(jié)點(diǎn)信息
# 通用環(huán)境
jdk-8u144-linux-x64.tar.gz true
azkaban-sql-script-2.5.0.tar.gz true
# Node01
hadoop-2.7.7.tar.gz true node01
# Node02
mysql-rpm-pack-5.7.28 true node02
azkaban-executor-server-2.5.0.tar.gz true node02
azkaban-web-server-2.5.0.tar.gz true node02
presto-server-0.196.tar.gz true node02
# Node03
apache-hive-1.2.1-bin.tar.gz true node03
apache-tez-0.9.1-bin.tar.gz true node03
sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz true node03
yanagishima-18.0.zip true node03
# Muti
apache-flume-1.7.0-bin.tar.gz true node01,node02,node03
zookeeper-3.4.10.tar.gz true node01,node02,node03
kafka_2.11-0.11.0.2.tgz true node01,node02,node03
5、編輯configs.txt文件,配置mysql、keystore密碼信息
# Mysql相關(guān)配置
mysql-root-password DBa2020* END
mysql-hive-password DBa2020* END
mysql-drive mysql-connector-java-5.1.26-bin.jar END
# azkaban相關(guān)配置
azkaban-mysql-user root END
azkaban-mysql-password DBa2020* END
azkaban-keystore-password 123456 END
6、編輯host_ip.txt文件,添加3個(gè)虛擬機(jī)節(jié)點(diǎn)信息
192.168.0.200 node01 root 123456
192.168.0.201 node02 root 123456
192.168.0.202 node03 root 123456
7、對(duì)/home/hadoop/automaticDeploy/下的hadoop、systems所有腳本添加執(zhí)行權(quán)限
chmod +x /home/hadoop/automaticDeploy/hadoop/* /home/hadoop/automaticDeploy/systems/*
8、執(zhí)行systems/batchOperate.sh腳本,完成環(huán)境初始化
/home/hadoop/automaticDeploy/systems/batchOperate.sh
9、根據(jù)安裝需要,執(zhí)行hadoop目錄下對(duì)應(yīng)的組件安裝腳本
/home/hadoop/automaticDeploy/hadoop/installHadoop.sh
10、將自動(dòng)化腳本分發(fā)到其他兩個(gè)節(jié)點(diǎn),并分別執(zhí)行batchOperate.sh和組件安裝腳本
scp -r automaticDeploy root@192.168.0.201:/home/hadoop/
scp -r automaticDeploy root@192.168.0.202:/home/hadoop/
11、在所有虛擬機(jī)節(jié)點(diǎn)source環(huán)境變量文件
source /etc/profile
12、啟動(dòng)hadoop環(huán)境,并檢查是否啟動(dòng)成功
hadoop namenode -format
start-all.sh
5、項(xiàng)目開(kāi)發(fā)
整體開(kāi)發(fā)流程 1、業(yè)務(wù)數(shù)據(jù)生成 2、ETL數(shù)據(jù)導(dǎo)入 3、創(chuàng)建ODS層,并完成HDFS數(shù)據(jù)接入 4、創(chuàng)建DWD層,并完成ODS層數(shù)據(jù)導(dǎo)入 5、創(chuàng)建DWS層,導(dǎo)入DWD層數(shù)據(jù) 6、創(chuàng)建ADS層,完成復(fù)購(gòu)率計(jì)算 7、編寫(xiě)腳本,將ADS層的數(shù)據(jù)導(dǎo)出到Mysql中,供業(yè)務(wù)查詢 8、使用Azkaban調(diào)度器,實(shí)現(xiàn)腳本自動(dòng)化運(yùn)行
5.1、業(yè)務(wù)數(shù)據(jù)生成
進(jìn)入Mysql,創(chuàng)建數(shù)據(jù)庫(kù)Mall
export MYSQL_PWD=DBa2020*
mysql -uroot -e "create database mall;"
上傳數(shù)據(jù)生成sql腳本到Mysql安裝節(jié)點(diǎn)使用命令方式,將數(shù)據(jù)生成sql腳本導(dǎo)入到Mysql中
mysql -uroot mall < {pathToSQL}
進(jìn)入Mysql,生成數(shù)據(jù)
use mall;
#生成日期2020-06-10日數(shù)據(jù)、訂單300個(gè)、用戶200個(gè)、商品sku300個(gè)、不刪除數(shù)據(jù)
CALL init_data('2020-06-10',300,200,300,FALSE);
5.2、ETL數(shù)據(jù)導(dǎo)入
進(jìn)入Sqoop安裝節(jié)點(diǎn),創(chuàng)建/home/warehouse/shell目錄
mkdir –p /home/warehouse/shell
編寫(xiě)Sqoop數(shù)據(jù)導(dǎo)入腳本,腳本內(nèi)容見(jiàn)材料
cd /home/warehouse/shell
vim sqoop_import.sh
賦予腳本執(zhí)行權(quán)限,并運(yùn)行腳本
chmod +x /home/warehouse/shell/sqoop_import.sh
./sqoop_import.sh all 2020-06-10
通過(guò)Web界面查看HDFS的/origin_data/mall/db/目錄下是否存在導(dǎo)入數(shù)據(jù)
5.3、ODS層創(chuàng)建&數(shù)據(jù)接入
進(jìn)入Hive安裝節(jié)點(diǎn),啟動(dòng)Hive元數(shù)據(jù)服務(wù)
hive --service hiveserver2 &
hive --service metastore &
在/home/warehouse/sql目錄下編寫(xiě)ods_ddl.sql,創(chuàng)建與業(yè)務(wù)數(shù)據(jù)庫(kù)一致的數(shù)據(jù)表
vim /home/warehouse/sql/ods_ddl.sql
將ods_ddl.sql導(dǎo)入到Hive中
hive -f /home/warehouse/sql/ods_ddl.sql
在/home/warehouse/shell/目錄下編寫(xiě)ods_db.sh腳本,完成數(shù)據(jù)導(dǎo)入操作
vim /home/warehouse/shell/ods_db.sh
為腳本賦權(quán),并執(zhí)行
chmod +x /home/shell/warehouse/ods_db.sh
ods_db.sh 2020-06-10
5.4、DWD層創(chuàng)建&數(shù)據(jù)接入
DWD層分析
對(duì)ODS層數(shù)據(jù)進(jìn)行清洗、維度退化因業(yè)務(wù)庫(kù)數(shù)據(jù)質(zhì)量高,所以只需要去空數(shù)據(jù)即可分類表可以進(jìn)行維度退化,維度合并到商品表中 在/home/warehouse/sql目錄下編寫(xiě)dwd_ddl.sql,創(chuàng)建DWD層數(shù)據(jù)表
vim /home/warehouse/sql/dwd_ddl.sql
將dwd_ddl.sql導(dǎo)入到Hive中
hive -f /home/warehouse/sql/dwd_ddl.sql
在/home/warehouse/shell目錄下編寫(xiě)dwd_db.sh腳本,完成數(shù)據(jù)導(dǎo)入操作
vim /home/warehouse/shell/dwd_db.sh
為腳本賦權(quán),并執(zhí)行
chmod +x /home/warehouse/shell/dwd_db.sh
./dwd_db.sh 2020-06-10
查看是否執(zhí)行成功
select * from dwd_sku_info where dt='2020-06-10' limit 2;
5.5、DWS層創(chuàng)建&數(shù)據(jù)接入
DWS層分析
將具有相同分析主題的DWD層數(shù)據(jù),聚合成寬表模型,便于數(shù)據(jù)分析與計(jì)算主題的歸納具有通用性,后續(xù)也可能會(huì)隨著分析業(yè)務(wù)的增加而擴(kuò)展 在/home/warehouse/sql目錄下編寫(xiě)dws_ddl.sql,創(chuàng)建DWS層數(shù)據(jù)表
vim /home/warehouse/sql/dws_ddl.sql
將dws_ddl.sql導(dǎo)入到Hive中
hive -f /home/warehouse/sql/dws_ddl.sql
在/home/warehouse/shell目錄下編寫(xiě)dws_db.sh腳本,完成數(shù)據(jù)導(dǎo)入操作
vim /home/warehouse/shell/dws_db.sh
為腳本賦權(quán),并執(zhí)行
chmod +x /home/warehouse/shell/dws_db.sh
./dws_db.sh 2020-06-10
查看是否執(zhí)行成功
select * from dws_user_action where dt='2020-06-10' limit 2;
select * from dws_sale_detail_daycount where dt='2020-06-10' limit 2;
5.6、ADS層創(chuàng)建&數(shù)據(jù)接入
ADS層分析
統(tǒng)計(jì)各個(gè)一級(jí)品類下,品牌月單次復(fù)購(gòu)率,和多次復(fù)購(gòu)率 在/home/warehouse/sql目錄下編寫(xiě)ads_sale_ddl.sql,創(chuàng)建DWS層數(shù)據(jù)表
vim /home/warehouse/sql/ads_sale_ddl.sql
將ads_sale_ddl.sql導(dǎo)入到Hive中
hive -f /home/warehouse/sql/ads_sale_ddl.sql
在/home/warehouse/shell目錄下編寫(xiě)ads_sale.sh腳本,完成數(shù)據(jù)導(dǎo)入操作
vim /home/warehouse/shell/ads_sale.sh
為腳本賦權(quán),并執(zhí)行
chmod +x /home/warehouse/shell/ads_sale.sh
/home/warehouse/shell/ads_sale.sh 2020-06-10
查看是否執(zhí)行成功
select * from ads_sale_tm_category1_stat_mn limit 2;
5.7、ADS層數(shù)據(jù)導(dǎo)出
在Mysql節(jié)點(diǎn)的/home/warehouse/sql目錄下編寫(xiě)mysql_sale_ddl.sql,創(chuàng)建數(shù)據(jù)表
vim /home/warehouse/sql/mysql_sale_ddl.sql
將mysql_sale_ddl.sql導(dǎo)入到Mysql中
export MYSQL_PWD=DBa2020*
mysql -uroot mall < /home/warehouse/sql/mysql_sale_ddl.sql
在Sqoop節(jié)點(diǎn)的/home/warehouse/shell目錄下編寫(xiě)sqoop導(dǎo)出腳本,完成數(shù)據(jù)導(dǎo)入操作
vim /home/warehouse/shell/sqoop_export.sh
為腳本賦權(quán),并執(zhí)行
chmod +x /home/warehouse/shell/sqoop_export.sh
/home/warehouse/shell/sqoop_export.sh all
在Mysql中查看是否執(zhí)行成功
SELECT * FROM ads_sale_tm_category1_stat_mn;
5.8、Azkaban自動(dòng)化調(diào)度
在Mysql中執(zhí)行SQL,生成數(shù)據(jù)
CALL init_data('2020-06-12',300,200,300,FALSE);
編寫(xiě)azkaban運(yùn)行job,并打包成mall-job.zip文件在3臺(tái)虛擬機(jī)中同時(shí)啟動(dòng)Azkaban
azkaban-executor-start.sh
在存放shell腳本的虛擬機(jī)上啟動(dòng)Azkaban Web服務(wù)器
cd /opt/app/azkaban/server
azkaban-web-start.sh
訪問(wèn)Azkaban Web界面,端口8443上傳并運(yùn)行job,運(yùn)行時(shí)指定executor為shell腳本存放的服務(wù)器,并配置腳本參數(shù)
useExecutor node03
dt 2020-06-12
6、課后練習(xí)
計(jì)算GMV(成交總額),包含付款和未付款部分,導(dǎo)出到Mysql 編寫(xiě)為Shell腳本,使用Azkaban進(jìn)行自動(dòng)化調(diào)度 提示:依賴的表為dws_user_action
6.1、ADS層分析
計(jì)算GMV(成交總額),包含付款和未付款部分
6.2、ADS層創(chuàng)建&數(shù)據(jù)接入
在/home/warehouse/sql目錄下編寫(xiě)ads_gmv_ddl.sql,創(chuàng)建DWS層數(shù)據(jù)表
vim /home/warehouse/sql/ads_gmv_ddl.sql
將ads_gmv_ddl.sql導(dǎo)入到Hive中
hive -f /home/warehouse/sql/ads_gmv_ddl.sql
在/home/warehouse/shell目錄下編寫(xiě)ads_gmv.sh腳本,完成數(shù)據(jù)導(dǎo)入操作
vim /home/warehouse/shell/ads_gmv.sh
為腳本賦權(quán),并執(zhí)行
chmod +x /home/warehouse/shell/ads_gmv.sh
/home/warehouse/shell/ads_gmv.sh 2020-06-10
查看是否執(zhí)行成功
select * from ads_gmv_sum_day;
6.3、Azkaban自動(dòng)化調(diào)度
在Mysql中執(zhí)行SQL,生成數(shù)據(jù)
CALL init_data('2020-06-12',300,200,300,FALSE);
編寫(xiě)azkaban運(yùn)行job,并打包成mall-job.zip文件在3臺(tái)虛擬機(jī)中同時(shí)啟動(dòng)Azkaban
azkaban-executor-start.sh
在存放shell腳本的虛擬機(jī)上啟動(dòng)Azkaban Web服務(wù)器
cd /opt/app/azkaban/server
azkaban-web-start.sh
訪問(wèn)Azkaban Web界面,端口8443上傳并運(yùn)行job,運(yùn)行時(shí)指定executor為shell腳本存放的服務(wù)器,并配置腳本參數(shù)
useExecutor node03
dt 2020-06-12
參考資料 阿里云:https://www.alipan.com/s/zuK576wnz2n
柚子快報(bào)邀請(qǐng)碼778899分享:數(shù)據(jù)倉(cāng)庫(kù)【5】:項(xiàng)目實(shí)戰(zhàn)
好文鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。