文章对应的博客园链接:点击这里
文章目录
- 0. b站相关课程链接 和 搭建数据仓库资源及脚本下载
- 食用指南:建议先把博客整体看一遍之后再进行操作
- 文章最后有常见问题及解决方法
- 1. 项目介绍及整体流程
- 2. 环境准备01-02(虚拟机和finalshell或xshell)
- 3. 环境搭建03 (脚本准备)
- 4. 环境搭建04 (集群安装)(需要联网!!!)
- 5. 项目流程&数据生成
- 6. etl数据导入
- 7. ods层创建&数据接入
- 8. dwd层创建&数据接入
- 9. dws层创建&数据接入
- 10. ads层复购率统计
- 11. ads层数据导出
- 12. azkaban自动化调度
- 13. 结果展示
- 14. 课后作业
- 15. 更换ip后所需要做的操作
- 16. 重启虚拟机后的常用操作
- 17. 常见问题及解决方法(未完持续更新中,欢迎补充!)
- 17.1 finalshell连接不上虚拟机
- 17.2 /bin/bash^m: 坏的解释器: 没有那个文件或目录
- 17.3 拒接连接 坏的路由器
- 17.4 vmware 运行 systemctl restart network失败
- 17.5 在 node02 和 node03 上没有网络 使用 ping www.baidu.com无法ping通 的解决方法
- 17.6 不小心多次运行 hadoop namenode -format,datanode或namenode没有启动
- 17.7 关于运行start-all.sh 显示node01 permission denie
- 17.8 关于运行azkaban-executor-start.sh卡住,找不到keystore或显示需要输入password
- 17.9 主机ip地址发生改变,导致连接不上三台虚拟机
0. b站相关课程链接 和 搭建数据仓库资源及脚本下载
建议搭配视频内容食用,效果更加。也可以直接按博客内容学习完成搭建
b站课程链接:课程链接地址
下载up主 哈喽鹏程 提供的资源镜像及脚本包
后续所使用的sql脚本和shell脚本及job脚本文件,均在此下载,请自行下载
下载连接:
数据仓库的课件:
链接:百度网盘链接1
提取码:d3a9
数据仓库的实验数据,资源镜像及脚本包:
链接:百度网盘链接2
提取码:fwpq
数据仓库的automaticdeploy项目代码:
链接:百度网盘链接3
提取码:7nff
备用链接:
数据仓库的实验数据,资源镜像及脚本包:
链接: 百度网盘链接4
提取码:ik61
数据仓库的资源镜像及脚本包和automaticdeploy项目代码(最全):
食用指南:建议先把博客整体看一遍之后再进行操作
文章最后有常见问题及解决方法
点赞+收藏,不会迷路!!!

1. 项目介绍及整体流程
1.1项目介绍
1.2 数据仓库架构
1.3 环境规划
1.4 整体开发流程
2. 环境准备01-02(虚拟机和finalshell或xshell)
2.1 软件下载
安装以下软件:
-
虚拟机软件: virtual box, 下载链接: https://www.virtualbox.org/
-
远程连接软件: xshell (也可以使用其他远程连接软件, 推荐使用finalshell,本博客使用的是finalshell)
virtual box, 下载链接: https://www.virtualbox.org/
xshell,下载链接:https://www.xshell.com/zh/xshell/
finalshell,下载链接:http://www.hostbuf.com/t/988.html,网盘连接:https://www.aliyundrive.com/s/wsvctjzyevm
xshell和finalshell均为远程连接工具,使用其中一个即可
资源镜像及脚本包的地址在第0章节
2.2 安装virtual box及导入ova镜像
官网下载安装包,一路next就行,可以更改安装路径


node02,node03同样的操作
虚拟机第一次打开的时候可能会有网络报错,这个时候需要操作一下
这里需要手动选择一次网卡,注意是一定要再选择一次
然后可以开启虚拟机了
三台虚拟机用户名及密码, 进入虚拟机
2.3 修改虚拟机静态ip地址
windows下查看ip地址
win+r
然后输入cmd
回车,打开命令行窗口,输入ipconfig
查看主机ip
地址
例如:
在得到主机的ip地址后,分别对三台虚拟机node01
、node02
、node03
进行修改
ipaddr ipv4地址前三位不用动,最后一位随便改
gateway ipv4地址前三位不用动 ,最后一位为1
例如我的ip为192.168.192.175
,则修改为以下内容:
修改配置文件 ifcfg-enp0s3
[root@node01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-enp0s3
[root@node01 ~]# systemctl restart network
[root@node02 ~]# vim /etc/sysconfig/network-scripts/ifcfg-enp0s3
[root@node02 ~]# systemctl restart network
[root@node03 ~]# vim /etc/sysconfig/network-scripts/ifcfg-enp0s3
[root@node03 ~]# systemctl restart network
更新配置 systemctl restart network
注意node01
没有gateway,node02
,node03
有gateway
设置完成后,建议一次搞定接下来的操作,不然之后连接热点时,主机ip地址可能会发生改变,然后三台虚拟机就连接不上了
2.4 使用远程连接工具finalshell连接虚拟机node节点
这里使用 finalshell
ssh连接虚拟机
node01配置如下, node02和node03同理
3. 环境搭建03 (脚本准备)
wget https://github.com/mtlpc/automaticdeploy/archive/master.zip
这条命令在虚拟机上运行可能会有问题
建议直接去github下载 https://github.com/mtlpc/automaticdeploy
在文章开头部分我也给了网盘下载链接
(直接去下载然后上传到node01
的/home/hadoop/
路径下, 如果你使用的是 finalshell
可以直接上传,如果使用的是xshell
, 则需安装上传组件lrzsz
, 安装方法在下一节)
点击 <>code
,然后download zip
, 下载下来的文件名称为 automaticdeploy-master.zip
将下载好的文件上传到 /home/hadoop
下并解压,解压后文件夹名为 automaticdeploy-master
,将解压后的文件名改成 automaticdeploy
,否则运行会报错
!!!注:如果文件夹名多了master后缀或者是其他的名字,请重命名为automaticdeploy
注:如果使用finalshell 文件上传组件栏没有显示上传好的文件,请刷新一下
以下是 automaticdeploy
中的文件
[root@node01 ~]# mkdir /home/hadoop/
[root@node01 ~]# cd /home/hadoop/
# 这里需要将automaticdeploy-master.zip上传到/home/hadoop/目录下,然后再进行解压
# 注意:解压后文件夹名为 automaticdeploy-master,需要使用mv命令重命名为 automaticdeploy
[root@node01 hadoop]# unzip automaticdeploy.zip
# 给予可执行权限
[root@node01 hadoop]# chmod +x /home/hadoop/automaticdeploy/hadoop/* /home/hadoop/automaticdeploy/systems/*
# automaticdeploy文件夹下内容
[root@node01 hadoop]# ls automaticdeploy/
configs.txt frames.txt hadoop host_ip.txt logs.sh readme.md systems
以下为 automaticdeploy
文件夹下的主要内容:
configs.txt
文件内容如下(这个不用改):
# mysql相关配置
mysql-root-password dba2020* end
mysql-hive-password dba2020* end
mysql-drive mysql-connector-java-5.1.26-bin.jar end
# azkaban相关配置
azkaban-mysql-user root end
azkaban-mysql-password dba2020* end
azkaban-keystore-password 123456 end
!!!host_ip.txt
文件内容如下(这个需要自己手动修改,这里暂时不用修改):
这个需要配置成自己的3个node
的ip
,!这里的是未修改的!
192.168.31.41 node01 root 123456
192.168.31.42 node02 root 123456
192.168.31.43 node03 root 123456
farames.txt
文件内容如下(这个不用改):
# 通用环境
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
3.1 安装xshell上传组件 lrzsz (可选)
如果不使用xshell
的话, 使用finalshell
就可以不用安装, finalshell
自带文件上传组件
# 命令 rz :运行该命令会弹出一个文件选择窗口,从本地选择文件上传到服务器(receive)
# 命令 sz :将选定的文件发送(send)到本地机器
[root@node01 automaticdeploy]# yum install lrzsz -y
3.2 上传 frames.zip
!上传 frames.zip
压缩包到 ~ 目录下(即/root)
frames.zip
在文章开头有给出下载链接
[root@node01 ~]# cd ~
# 这里需要将frames.zip上传到 ~ 目录(即/root)下,然后再进行解压
[root@node01 ~]# unzip frames.zip -d /home/hadoop/automaticdeploy/
# 注意这里的 ip 需要改成自己设置的node节点ip
[root@node01 ~]# ssh root@192.168.192.177 "mkdir /home/hadoop"
[root@node01 ~]# ssh root@192.168.192.178 "mkdir /home/hadoop"
修改 automaticdeploy
文件夹下的 host_ip.txt
文件, 修改结果如下:
!!!这个需要配置成自己的3个node
的ip
!!!
192.168.192.176 node01 root 123456
192.168.192.177 node02 root 123456
192.168.192.178 node03 root 123456
将 automaticdeploy
通过scp命令拷贝到 node02
,node03
注意:这里分别是node02
和node03
的ip地址
# 将修改后的automaticdeploy复制到node02,node03
[root@node01 hadoop]# scp -r /home/hadoop/automaticdeploy/ root@192.168.192.177:/home/hadoop/
[root@node01 hadoop]# scp -r /home/hadoop/automaticdeploy/ root@192.168.192.178:/home/hadoop/
拷贝完成后, 可以去 node02
, node03
上的 /home/hadoop/
路径下进行确认
4. 环境搭建04 (集群安装)(需要联网!!!)
恭喜你完成了以上操作, 到这一步正式开始环境搭建
!!! 注意:在三台虚拟机上运行 ./batchoperate.sh
都是需要网络的 ,都是需要下载依赖包的
!!! 注意:运行 ./batchoperate.sh
时,需要联网下载依赖包 expect
和 tcl
!!! 否则,执行./installazkaban.sh
安装azkaban的时候,会出问题,会导致keystore
无法生成,
!!! 特别是在node02
和node03
上,这两个有一定概率会没有网络,
解决方法在下一篇博客:【入门精讲】数据仓库实战——在 node02 和 node03 上没有网络的解决方法
# 分别在node01,node02,node03运行批处理脚本 batchoperate.sh 进行初始化
# 更新yum源, 免密钥登入,安装jdk,配置host
# node01
[root@node01 ~]# cd /home/hadoop/automaticdeploy
[root@node01 automaticdeploy]# cd systems/
[root@node01 systems]# ./batchoperate.sh
# node02
[root@node02 ~]# cd /home/hadoop/automaticdeploy/systems/
[root@node02 systems]# ./batchoperate.sh
# node03
[root@node03 ~]# cd /home/hadoop/automaticdeploy/systems/
[root@node03 systems]# ./batchoperate.sh
验证三台虚拟机是否能够互相免密连接
注意: 每连完一台虚拟机后都要退出, 然后再连接另一台
注:如果不能连接成功,请自行查看 host_ip.txt
是否修改,./batchoperate.sh
是否运行
# 分别ssh另外两台虚拟机, exit 退出ssh
# 退出示例: [root@node02 ~]# exit
# node01
[root@node01 systems]# ssh node02
[root@node01 systems]# ssh node03
# node02
[root@node02 systems]# ssh node01
[root@node02 systems]# ssh node03
# node03
[root@node03 systems]# ssh node01
[root@node03 systems]# ssh node02
脚本免密登录失败的话,可以手动进行免密登录操作
# 脚本免密登录失败的话,可以手动进行免密登录操作
# 以下为示例
[root@node01 ~]# ssh-copy-id node02
4.1 安装hadoop
分别在三台虚拟机上依次执行
在 /home/hadoop/automaticdeploy/hadoop
路径下
[root@node01 hadoop]# ./installhadoop.sh
[root@node02 hadoop]# ./installhadoop.sh
[root@node03 hadoop]# ./installhadoop.sh
安装完成后, 更新环境变量
[root@node01 hadoop]# source /etc/profile
[root@node02 hadoop]# source /etc/profile
[root@node03 hadoop]# source /etc/profile
在 node01
上初始化 hadoop
, hadoop namenode -format
只能执行一次,多次运行的话,出问题
!注意:只在node01上运行
[root@node01 hadoop]# hadoop namenode -format
在 node01
上启动 hadoop
集群
注意:只在node01上运行
[root@node01 ~]# start-all.sh
jps查看是否运行成功, node01上会有6个进程
[root@node01 ~]# jps
6193 namenode
6628 secondarynamenode
7412 jps
6373 datanode
6901 resourcemanager
7066 nodemanager
node02进程
[root@node02 ~]# jps
5952 nodemanager
6565 jps
5644 datanode
node03进程
[root@node03 ~]# jps
6596 jps
5594 datanode
5902 nodemanager
进行到这一步, hadoop已经安装成功,并且成功运行
可以打开浏览器,访问 node01
的 50070
端口, 进入hadoop的web界面


4.2 安装mysql
在 node02
上安装 mysql
[root@node02 hadoop]# ./installmysql.sh
mysql安装成功后, 运行mysql
[root@node02 hadoop]# mysql -uroot -pdba2020*
mysql> show databases;
+--------------------+
| database |
+--------------------+
| information_schema |
| azkaban |
| hive |
| mysql |
| performance_schema |
| sys |
+--------------------+
6 rows in set (0.01 sec)
mysql> exit;
4.3 安装hive
在 node03
上安装 hive, 安装过程会自动安装 tez
[root@node03 hadoop]# ./installhive.sh
如果是info信息报错, 可以不用管
4.4 安装sqoop
接着在 node03
上安装 sqoop
[root@node03 hadoop]# ./installsqoop.sh
[root@node03 hadoop]# source /etc/profile
4.5 安装 presto
分别在node01,node02, node03 上安装 presto
presto服务端口为8080
# presto服务端口为8080
[root@node01 hadoop]# ./installpresto.sh
[root@node02 hadoop]# ./installpresto.sh
[root@node03 hadoop]# ./installpresto.sh
4.6 安装azkaban
接着分别在node01,node02, node03上安装azkaban
[root@node01 hadoop]# ./installazkaban.sh
[root@node02 hadoop]# ./installazkaban.sh
[root@node03 hadoop]# ./installazkaban.sh
4.7 安装 yanagishima
为presto安装一个插件,带来可视化的效果
yanagishima服务端口为7080
# yanagishima服务端口为7080
[root@node03 hadoop]# ./installyanagishima.sh
分别在node01,node02,node03上更新环境变量
# 分别在node01,node02,node03运行更新环境变量
[root@node01 hadoop]# source /etc/profile
[root@node02 hadoop]# source /etc/profile
[root@node03 hadoop]# source /etc/profile
5. 项目流程&数据生成
创建数据库mall
# 导入临时环境变量
[root@node02 hadoop]# export mysql_pwd=dba2020*
[root@node02 hadoop]# mysql -uroot -e "create database mall;"
进入到 /home 目录下
[root@node02 hadoop]# cd ~
上传生成数据脚本到 /root/
路径下
数据生成脚本下载链接在文章开头
将数据生成脚本上传到数据库中
[root@node02 ~]# mysql -uroot mall < /root/1建表脚本.sql
[root@node02 ~]# mysql -uroot mall < /root/2商品分类数据插入脚本.sql
[root@node02 ~]# mysql -uroot mall < /root/3函数脚本.sql
[root@node02 ~]# mysql -uroot mall < /root/4存储过程脚本.sql
[root@node02 ~]# mysql
mysql> use mall;
reading table information for completion of table and column names
you can turn off this feature to get a quicker startup with -a
database changed
mysql> call init_data('2020-08-29',300,200,300,false);
query ok, 0 rows affected (0.69 sec)
mysql> select count(1) from user_info;
+----------+
| count(1) |
+----------+
| 200 |
+----------+
1 row in set (0.00 sec)
mysql> show tables;
+----------------+
| tables_in_mall |
+----------------+
| base_category1 |
| base_category2 |
| base_category3 |
| order_detail |
| order_info |
| payment_info |
| sku_info |
| user_info |
+----------------+
8 rows in set (0.00 sec)
mysql> exit;
生成了300个订单, 200个用户, 300个商品,false不删除数据
6. etl数据导入
[root@node03 ~]# mkdir -p /home/warehouse/shell
[root@node03 shell]# cd /home/warehouse/shell/
# 上传sqoop_import.sh脚本(所有脚本文件均有提供链接),或者手动编写
[root@node03 shell]# vim sqoop_import.sh
[root@node03 shell]# chmod +x sqoop_import.sh
[root@node03 shell]# ./sqoop_import.sh all 2020-08-29
运行成功会看见 job_001 —— job_008共8个job任务
注:如果是多次运行的话,job后面的编号会累加
注意:运行./sqoop_import.sh all 2020-08-29
可能会遇到报错
运行成功后:网页可视化查看数据是否导入 http://192.168.192.176:50070/
点击utilitles
进入 browse the file system
然后进入 /origin_data/mall/db
下
一共是8张表, 如果没有8张表的话, 多运行 ./sqoop_import.sh all 2020-08-29
命令几次,直至有8张表,
每张表都点进去到最里面,会出现 success
导致没有8张表和没有success的原因:虚拟机性能不够,内存不够
到这里,表示我们etl任务已经成功了
7. ods层创建&数据接入
启动hive
# 启动hive 的 hiveserver2
[root@node03 shell]# hive --service hiveserver2 &
如果停止不动的话,回车
启动hive的metastore服务
# 启动hive的metastore
[root@node03 shell]# hive --service metastore &
如果停止不动的话,回车
如果这里报错 拒绝连接
, msql拒绝连接, 可能由于网络不通畅的问题引起, 在node03上试一下能不能连接到node02 , 连接不了的话可以重启 node02 的网络服务, systemctl restart network
[root@node02 ~]# systemctl restart network
ods层创建&数据导入
# ods层创建&数据导入
[root@node03 ~]# cd /home/warehouse
[root@node03 warehouse]# mkdir sql/
[root@node03 warehouse]# cd sql/
# 上传ods_ddl.sql脚本(所有脚本文件均有提供链接),或者手动编写
[root@node03 sql]# vim ods_ddl.sql
[root@node03 sql]# hive -f /home/warehouse/sql/ods_ddl.sql
如果停止不动的话,回车
!执行成功的话直接跳到下一步
如果很长时间都没有出结果, 可以 ctrl
+ c
终止,然后查看刚刚hive进行的两个服务
[root@node03 sql]# jps
2378 nodemanager
2133 datanode
7288 runjar
7210 runjar
7646 jps
# 如果出现以下内容
[root@node03 sql]# jps -m
.
.
.
7288 runjar .... /... /... / ....... / hadoop.hive.metastore.hivemetastore
.
.
.
# kill metastore服务
[root@node03 sql]# kill -9 7288
# 然后再重启 metastore, metasore服务需要连接mysql服务, 所以需要与node02网络通畅
[root@node03 sql]# hive --service metastore &
# 没有报错,重新执行 hive -f /home/warehouse/sql/ods_ddl.sql
[root@node03 sql]# hive -f /home/warehouse/sql/ods_ddl.sql
hive -f /home/warehouse/sql/ods_ddl.sql
执行完后,进入hive查看, 一共8张表
## 进入hive
[root@node03 shell]# hive
hive>use mall;
ok
time taken: 0.55 seconds
hive>show tables;
ok
ods_base_category1
ods_base_category2
ods_base_category3
ods_order_detail
ods_order_info
ods_payment_info
ods_sku_info
ods_user_info
time taken: 1.247 seconds, fetched: 8 row(s)
hive>exit;
数据有了,然后完成数据的导入
[root@node03 shell]# cd shell/
# 上传obs_db.sh脚本(所有脚本文件均有提供链接),或者手动编写
[root@node03 shell]# vim ods_db.sh
[root@node03 shell]# chmod +x ods_db.sh
[root@node03 shell]# ./ods_db.sh 2020-08-29
注意:运行./ods_db.sh 2020-08-29
可能会遇到报错
执行完成后,进入hive查看数据是否导入
## 进入hive
[root@node03 shell]# hive
hive> use mall;
ok
time taken: 0.55 seconds
hive> show tables;
hive> select count(1) from ods_user_info;
query id = root_20230327220623_2ce7b554-c007-4d37-b282-87a3227c2f16
total jobs = 1
launching job 1 out of 1
status: running (executing on yarn cluster with app id application_1679925264749_0002)
--------------------------------------------------------------------------------
vertices status total completed running pending failed killed
--------------------------------------------------------------------------------
map 1 .......... succeeded 2 2 0 0 0 0
reducer 2 ...... succeeded 1 1 0 0 0 0
--------------------------------------------------------------------------------
vertices: 02/02 [==========================>>] 100% elapsed time: 7.56 s
--------------------------------------------------------------------------------
ok
200
time taken: 9.383 seconds, fetched: 1 row(s)
# 200条数据
hive> exit;
8. dwd层创建&数据接入
创建并执行dwd_ddl.sql
[root@node03 shell]# cd /home/warehouse/sql/
# 上传dwd_ddl.sql脚本(所有脚本文件均有提供链接),或者手动编写
[root@node03 sql]# vim dwd_ddl.sql
[root@node03 warehouse]# hive -f /home/warehouse/sql/dwd_ddl.sql
创建并执行dwd_db.sh
[root@node03 shell]# cd /home/warehouse/shell/
# 上传dwd_db.sh脚本(所有脚本文件均有提供链接),或者手动编写
[root@node03 shell]# vim dwd_db.sh
[root@node03 shell]# chmod +x dwd_db.sh
[root@node03 shell]# ./dwd_db.sh 2020-08-29
注意:运行./dwd_db.sh 2020-08-29
可能会遇到报错
执行完成后,进入hive查看数据是否接入
## 进入hive
[root@node03 shell]# hive
hive>use mall;
hive> show tables;
ok
dwd_order_detail
dwd_order_info
dwd_payment_info
dwd_sku_info
dwd_user_info
dws_sale_detail_daycount
dws_user_action
ods_base_category1
ods_base_category2
ods_base_category3
ods_order_detail
ods_order_info
ods_payment_info
ods_sku_info
ods_user_info
time taken: 0.25 seconds, fetched: 15 row(s)
hive>select * from dwd_sku_info where dt='2020-08-29' limit 2;
ok
slf4j: failed to load class "org.slf4j.impl.staticloggerbinder".
slf4j: defaulting to no-operation (nop) logger implementation
slf4j: see http://www.slf4j.org/codes.html#staticloggerbinder for further details.
1005 809 897 yobnlrzwkmelsescgcqy wkmemumbwcwdatrdscjljuifaldkps 4.47 36 703 70 12 待产护理 妈妈专区 母婴 2020-08-29 14:55:39.0 2020-08-29
1009 283 3827 yezitslykjboodbvzmmx crevrxnvojsrjsmifcwyctmddkooed 0.83 69 928 98 16 汽修工具 维修保养 汽车用品 2020-08-29 21:11:59.02020-08-29
time taken: 0.711 seconds, fetched: 2 row(s)
hive> exit;
9. dws层创建&数据接入
创建并执行dws_ddl.sql
# dws层创建&数据接入 node03
[root@node03 shell]# cd /home/warehouse/sql/
# 上传dws_ddl.sql脚本(所有脚本文件均有提供链接),或者手动编写
[root@node03 shell]# vim dws_ddl.sql
[root@node03 sql]# hive -f /home/warehouse/sql/dws_ddl.sql
创建并执行dws_db.sh
[root@node03 sql]# cd ../shell/
# 上传dws_db.sh脚本(所有脚本文件均有提供链接),或者手动编写
[root@node03 shell]# vim dws_db.sh
[root@node03 shell]# chmod +x dws_db.sh
[root@node03 shell]# ./dws_db.sh 2020-08-29
注意:运行./dws_db.sh 2020-08-29
可能会遇到报错
执行完成后,进入hive查看数据是否接入
[root@node03 shell]# hive
hive> use mall;
hive> show databases;
hive> select * from dws_user_action where dt="2020-08-29" limit 2;
ok
slf4j: failed to load class "org.slf4j.impl.staticloggerbinder".
slf4j: defaulting to no-operation (nop) logger implementation
slf4j: see http://www.slf4j.org/codes.html#staticloggerbinder for further details.
1 3 1593 2 665 2020-08-29
10 1 434 1 434 2020-08-29
time taken: 0.35 seconds, fetched: 2 row(s)
# !!! 注意这里的slf4j: failed to load class "org.slf4j.impl.staticloggerbinder不用管
hive> exit;
10. ads层复购率统计
创建并执行ads_sale_ddl.sql
# ads层复购率统计 node03
[root@node03 shell]# cd /home/warehouse/sql/
# 上传ads_sale_ddl.sql脚本(所有脚本文件均有提供链接),或者手动编写
[root@node03 sql]# vim ads_sale_ddl.sql
[root@node03 sql]# hive -f /home/warehouse/sql/ads_sale_ddl.sql
创建并执行ads_sale.sh
[root@node03 sql]# cd /home/warehouse/shell/
# 上传ads_sale.sh脚本(所有脚本文件均有提供链接),或者手动编写
[root@node03 shell]# vim ads_sale.sh
[root@node03 shell]# chmod +x ads_sale.sh
[root@node03 shell]# ./ads_sale.sh 2020-08-29
[root@node03 shell]# hive
hive> use mall;
hive> exit;
11. ads层数据导出
创建并执行mysql_sale.sql
# ads层数据导入
# node02
[root@node02 ~]# mkdir -p /home/warehouse/sql
[root@node02 ~]# cd /home/warehouse/sql/
# 上传mysql_sale.sql脚本(所有脚本文件均有提供链接),或者手动编写
[root@node02 sql]# vim mysql_sale.sql
[root@node02 sql]# export mysql_pwd=dba2020*
[root@node02 sql]# mysql -uroot mall < /home/warehouse/sql/mysql_sale.sql
[root@node02 sql]# mysql
mysql> use mall;
mysql> show tables;
+-------------------------------+
| tables_in_mall |
+-------------------------------+
| ads_sale_tm_category1_stat_mn |
| base_category1 |
| base_category2 |
| base_category3 |
| order_detail |
| order_info |
| payment_info |
| sku_info |
| user_info |
+-------------------------------+
9 rows in set (0.00 sec)
mysql> exit;
创建并执行sqoop_export.sh
# node03
[root@node03 ~]# cd /home/warehouse/shell/
# 上传sqoop_export.sh脚本(所有脚本文件均有提供链接),或者手动编写
[root@node03 shell]# vim sqoop_export.sh
[root@node03 shell]# chmod +x sqoop_export.sh
[root@node03 shell]# ./sqoop_export.sh all
如果这里报错 拒绝连接
mysqlio的问题, 一般这个拒绝连接错误都是mysql的问题, 可能由于网络不通畅的问题引起, 重启 node02 的网络服务可以解决, systemctl restart network
# node02
[root@node02 sql]# systemctl restart network
查看数据是否能够导出
[root@node02 sql]# mysql -uroot -pdba2020*
mysql> use mall;
mysql> select * from ads_sale_tm_category1_stat_mn;
+-------+--------------+----------------+----------+----------------+----------------------+-----------------+-----------------------+---------+------------+
| tm_id | category1_id | category1_name | buycount | buy_twice_last | buy_twice_last_ratio | buy_3times_last | buy_3times_last_ratio | stat_mn | stat_date |
+-------+--------------+----------------+----------+----------------+----------------------+-----------------+-----------------------+---------+------------+
| null | null | null | 158 | 141 | 0.89 | 107 | 0.79 | 2020-08 | 2020-08-29 |
| null | null | null | 284 | 256 | 0.9 | 207 | 0.81 | 2020-08 | 2020-08-30 |
+-------+--------------+----------------+----------+----------------+----------------------+-----------------+-----------------------+---------+------------+
2 rows in set (0.00 sec)
mysql> exit;
12. azkaban自动化调度
azkaban自动化调度, 生成数据
生成了300个订单, 200个用户, 300个商品,false不删除数据
# azkaban自动化调度
# 生成数据
[root@node02 sql]# mysql -uroot -pdba2020*
mysql> use mall;
mysql> call init_data('2020-08-30',300,200,300,false);
query ok, 0 rows affected (0.70 sec)
三个节点启动azkaban
# 三个节点启动azkaban
[root@node01 ~]# azkaban-executor-start.sh
[root@node02 ~]# azkaban-executor-start.sh
[root@node03 ~]# azkaban-executor-start.sh
# 部分输出结果
[azkabanexecutorserver] [azkaban] azkaban executor server started on port 12321
# azkaban出问题时,可以重启, 关闭命令如下
# 重启命令 azkaban-executor-shutdown.sh
终端输出info
信息,不用管,回车继续输入命令
接下来启动azkaban的web网页 azkaban-web-start.sh
, 然后打开 https://192.168.192.178:8443/,可能会有:您的连接不是私密连接 不用管
!!!继续前往!坚持访问!
不安全?不存在的!
# node03 启动azkaban的web网页
# 准备mall_job.zip
[root@node03 shell]# cd /opt/app/azkaban/server/
[root@node03 server]# azkaban-web-start.sh
进入azkaban的web网页后,准备好mall_job.zip,创建mall project, 上传 mall_job.zip
注意:
# https://192.168.192.178:8443/ # node03 注意这里是https
# azkaban:
# 账号:admin
# 密码:admin
# 创建project mall
# 设置参数 dt 2020-08-30
# 设置参数 useexecutor node03
# 等自动化调度任务执行完后
# 到node02查看执行情况,新建一个node02连接终端
[root@node02 ~]# mysql -uroot -pdba2020*
mysql> use mall;
mysql> select * from ads_sale_tm_category1_stat_mn;
13. 结果展示


14. 课后作业
15. 更换ip后所需要做的操作
# 更改虚拟机静态ip地址
# 更改host_ip.txt
cd /home/hadoop/automaticdeploy/
vim host_ip.txt
systemctl restart network
source /etc/profile
16. 重启虚拟机后的常用操作
# 网络不通畅时,运行 systemctl restart network 重启网卡
# 修改虚拟机ip, vim /etc/sysconfig/network-scripts/ifcfg-enp0s3
# http://192.168.192.176:50070/ # hadoop web可视化网页 运行在node01上
# https://192.168.192.178:8443/ # azkaban web可视化网页 运行在node03上 注意这里是https
# http://192.168.192.176:8088/ # hadoop 另一个可视化页面 运行在node01上
# azkaban:
# 账号:admin 密码:admin
# 创建project mall
# 设置参数 dt 2020-08-30
# 设置参数 useexecutor node03
# !!!初始化(格式化)hadoop,最开始的时候执行一次就行,不要多次执行 !!!
# !!!如果是安好教程一步一步来的话,这里不要执行!!!
# !!!这里不要执行
[root@node01 hadoop]# hadoop namenode -format
# 初始化过从这里开始
# 启动hadoop集群
[root@node01 ~]# start-all.sh
# 启动hive 的 hiveserver2
[root@node03 shell]# hive --service hiveserver2 &
# 启动hive 的 metastore
[root@node03 shell]# hive --service metastore &
# 生成数据 生成过就不用生成了
[root@node02 sql]# mysql -uroot -pdba2020*
mysql> use mall;
mysql> call init_data('2020-08-30',300,200,300,false);
# 生成了300个订单, 200个用户, 300个商品,false不删除数据
# 准备好mall_job.zip
# 三个节点启动azkaban
[root@node01 ~]# azkaban-executor-start.sh
[root@node02 ~]# azkaban-executor-start.sh
[root@node03 ~]# azkaban-executor-start.sh
[azkabanexecutorserver] [azkaban] azkaban executor server started on port 12321
# azkaban出问题时,可以重启, 关闭命令如下
# 重启命令 azkaban-executor-shutdown.sh
# node03 启动azkaban的web网页
[root@node03 shell]# cd /opt/app/azkaban/server/
[root@node03 server]# azkaban-web-start.sh
# https://192.168.192.178:8443/ # node03 注意这里是https
# azkaban:
# 账号:admin
# 密码:admin
# 创建project mall
# 设置参数 dt 2020-08-30
# 设置参数 useexecutor node03
17. 常见问题及解决方法(未完持续更新中,欢迎补充!)
欢迎大家在搭建数据仓库的遇到的问题在评论区下方提出,也可以补充在下面
17.1 finalshell连接不上虚拟机
-
其他的虚拟机能连接成功,但是有一台无法连接,
- 重新这台虚拟机网卡:
systemctl restart network
- 重新这台虚拟机网卡:
-
三台虚拟机都连接不上
- 首先检查ip地址是否设置成功
- 重新启动虚拟机网卡:
systemctl restart network
- 重新启动虚拟机
17.2 /bin/bash^m: 坏的解释器: 没有那个文件或目录
相应问题及解决方法:
17.3 拒接连接 坏的路由器
重启网络 systemctl restart network
17.4 vmware 运行 systemctl restart network失败
软件问题,请使用virtual box
所提供的ova镜像中是由两个网卡,网卡1:桥接网卡,网卡2:网络地址转换nat
vmware中默认只有一个网卡,将ova镜像文件导入后可能有问题
17.5 在 node02 和 node03 上没有网络 使用 ping www.baidu.com无法ping通 的解决方法
解决方法博客连接:在 node02 和 node03 上没有网络 使用 ping www.baidu.com也无法ping通 的解决方法
17.6 不小心多次运行 hadoop namenode -format,datanode或namenode没有启动
多次重新初始化hadoop namenode -format后,datanode或namenode没有启动
解决方法博客连接:不小心多次运行 hadoop namenode -format,datanode或namenode没有启动
17.7 关于运行start-all.sh 显示node01 permission denie
启动start-all.sh需要输入node01结点的密码,然后卡住
原因是:没有成功配置免密,运行batchoperate.sh
时需要联网运行,它会从网络上下载expect
和 tcl
依赖
解决方法:参考17.5去配置网络,重新运行batchoperate.sh
17.8 关于运行azkaban-executor-start.sh卡住,找不到keystore或显示需要输入password
解决方法:参考 17.7,然后重新运行 ./installazkaban.sh
17.9 主机ip地址发生改变,导致连接不上三台虚拟机
解决方法1:
- 重新修改三台虚拟机的静态ip地址,还要重新配置免密登录,此操作较麻烦,建议第二种方法
解决方法2:
- 记住你之前设置虚拟机静态ip地址时的主机电脑的ip,然后进行修改主机ip地址
- 请参考博客: 如何设置主机电脑静态ip地址
作者:oraer
都看到最后了,不点个赞+收藏吗?

发表评论