大数据项目之电商数据仓库系统回顾

文章目录

    • 一、实训课题
    • 二、实训目的
    • 三、操作环境
    • 四、 实训过程(实训内容及主要模块)
    • 五、实训中用到的课程知识点
    • 六、实训中遇到的问题及解决方法
    • 七、课程实训体会与心得
    • 八、程序清单

一、实训课题

大数据项目之电商数据仓库系统

二、实训目的

完成一个电商数仓项目:

1、完成dadoop、kafka、flume、mysql以及zookeeper等相关环境的搭建。
2、安装与spark兼容的hive数据仓库环境,并使用 MySQL 存储Metastore,实现与其他客户端共享数据。
3、模拟在Kafka生产消息方输入的信息,可在Kafka消费消息方正常接收,启用kafka监控。
4、在hive数据仓库中创建一个gmall数据库,利用sqoop工具将mysql数据库数据先导入hadoop集群的HDFS中,再从HDFS导进到hive数据仓库的gmall数据库中,最后在gmall数据库中依次逐层从ODS层到ADS层导入数据。

三、操作环境

1. Linux系统:Centos 7.5
2. Hive on spark版本:apache-hive-3.1.2
3. Java版本:1.8.0_212
4. Kafka版本:kafka_2.11-2.4.1
5. Flume版本:apache-flume-1.9.0
6. Sqoop版本:sqoop-1.4.6
7. ZooKeeper版本:apache-zookeeper-3.5.7
8. MySQL版本:mysql-5.7.28
9. Spark版本:spark-3.0.0

相关技术 描述
Hive 基于Hadoop的数据仓库工具,将结构化的数据文件映射为数据库表,将SQL语句转换为MapReduce任务进行运行,快速实现简单MapReduce统计。
Kafka 一种高吞吐量的分布式发布订阅消息系统;
Flume 分布式的海量日志采集、聚合和传输的系统,支持在日志系统中定制各类数据发送方,用于收集数据;
Sqoop 用于Hadoop、Hive与MySQL间数据的传递,可将MySQL中的数据导进Hadoop的HDFS中,也可将HDFS的数据导进到hive数据库中。
ZooKeeper 大型分布式系统的可靠协调系统,提供:配置维护、名字服务、分布式同步、组服务等。
Spark 很流行的开源大数据内存计算框架。可基于Hadoop上存储的大数据进行计算。

四、 实训过程(实训内容及主要模块)

1. 搭建hadoop集群环境:在大数据实践配置的hadoop集群的基础上快速完成再次搭建。
2. 安装与spark兼容的hive数据仓库环境。
3. 使用 MySQL 存储hive的元数据库Metastore,实现与其他客户端共享数据。
4. 完成kafka、flume以及zookeeper等集群环境的搭建。
5. 利用sqoop将mysql数据库数据先导入HDFS中,再导进到hive的gmall数据库中,最后依次从ODS层逐层导入数据直到ADS层为止。

五、实训中用到的课程知识点

  1. 数仓搭建时数据采用 LZO压缩,减少磁盘存储空间。比如100G数据可以压缩到10G以内。

  2. 数仓搭建时,数据采用 parquet存储方式,是可以支持切片的,不需要再对数据创建索引 。如果单纯的text方式存储数据,需要采用支持切片的,lzop压缩方式并创建索引。

  3. 数据装载到时间维度表时,dwd_dim_date_info是 列式存储+LZO压缩 。直接将date_info.txt文件导入到目标表,并不会直接转换为列式存储+LZO压缩。需创建一张普通的临时表dwd_dim_date_info_tmp,将date_info.txt加载到该临时表中。最后通过查询临时表数据,把查询到的数据插入到最终的目标表中。

  4. 使用脚本可以较快启动相关服务进程、导入及导出数据等,其中 nohup表示不挂起 的意思,不挂断地运行命令;/dev/null:是 Linux 文件系统中的一个文件,被称为黑洞,所有写入改文件的内容都会被自动丢弃2>&1 : 表示将错误重定向到标准输出上;&: 放在命令结尾,表示后台运行

  5. 使用 “select * from 表名” 不执行MR操作 ,默认采用的是ods_log建表语句中指定的DeprecatedLzoTextInputFormat,能够识别 lzo.index为索引文件。

  6. 使用 “select count(*) from 表名” 执行MR操作,默认采用的是CombineHiveInputFormat,不能识别lzo.index为索引文件,将索引文件当做普通文件处理。更严重的是,这会导致LZO文件无法切片,修改CombineHiveInputFormat为HiveInputFormat 即可。

六、实训中遇到的问题及解决方法

所遇问题:

1) 再次格式化NameNode导致无法启动datanode进程

解决办法:格式化NameNode,会产生新的集群id,导致 NameNode和DataNode的集群id不一致,集群找不到已往数据。可删除所有机器的data和logs目录,然后再进行格式化,或者进入namenode对应的clusterID所在的文件,复制其clusterID到datanode对应的clusterID即可。

2)xshell连接虚拟机后,输入指令时从数字小键盘输入的数字无效

解决办法:打开xshell,点击“默认属性”,打开对话框,在类别中选择 “VT模式”,然后在右侧的选项中,选择:初始数字键盘模式中的“设置为普通”,最后点击“确定”即可。

3)配置了多队列导致加载数据时,所用队列没有足够的空间

大数据项目之电商数据仓库系统回顾_第1张图片

解决办法:修改hadoop安装目录下的配置文件:capacity-scheduler.xml,增加该队列的容量

大数据项目之电商数据仓库系统回顾_第2张图片

4) 执行MapReduce任务时,虚拟内存超额,导致进程被杀掉

大数据项目之电商数据仓库系统回顾_第3张图片

解决办法:适当增大 yarn.nodemanager.vmem-pmem-ratio 的大小,为物理内存增大对应的虚拟内存。

大数据项目之电商数据仓库系统回顾_第4张图片

5) Hive版本和Spark版本不兼容,无法上传jar包、导入数据到hadoop HDFS。

大数据项目之电商数据仓库系统回顾_第5张图片

解决办法:使用经编译过与Spark版本兼容的hive环境,即hive on spark版本,重新执行任务进行测试,成功状态如下图:

大数据项目之电商数据仓库系统回顾_第6张图片

七、课程实训体会与心得

  1. 通过为期两周的大数据project 5,我学会了利用三台虚拟机作服务器搭建Hadoop、kafka、flume、mysql以及zookeeper等环境,利用sqoop工具将mysql数据导入hadoop 集群的HDFS上再导进到hive的gmall数据库中。创建并使用脚本将数据依次从ODS层逐层导入数据直到ADS层为止。

  2. 正确搭建环境需有以下进程:

Hadoop105虚拟机上:
RunJar、RunJar、QuorumPeerMain、Kafka、NameNode、DataNode、NodeManager、Application、JobHistoryServer;

Hadoop106虚拟机上:
Application、QuorumPeerMain、Kafka、DataNode、ResourceManager、NodeManager;

Hadoop107虚拟机上:
QuorumPeerMain、Kafka、Application、SecondaryNameNode、DataNode 、NodeManager。

其中,除了原hadoop集群所必备的进程外,启动 metastore与启动 hiveserver2各对应一个RunJar进程;启动 hadoop105及hadoop106 采集flume各对应一个Application进程
启动 hadoop107 消费flume也对应一个Application进程启动Kafka、zookeeper在三台虚拟机上各对应一个Kafka、QuorumPeerMain进程

  1. 安装与spark兼容的hive环境后,Hive既作为存储元数据又负责SQL的解析优化,语法是HQL语法,执行引擎变成了Spark,Spark负责采用RDD执行。可使用MySQL存储hive的元数据库Metastore,可实现与其他客户端共享数据。

  2. 数仓搭建时数据采用LZO压缩,减少磁盘存储空间。比如100G数据可以压缩到 10G以内。搭建数仓时,数据采用parquet存储方式,是可以支持切片的,不需要再对数据创建索引。如果单纯的text方式存储数据,需要采用支持切片的,lzop压缩方式并创建索引。

  3. 对于采用列式存储+LZO压缩的数据库表。直接将txt文件导入到目标表,并不会直接转换为列式存储+LZO压缩。需创建一张普通的tmp临时表,将txt文件加载到该临时表中。最后通过查询临时表数据,把查询到的数据插入到最终的目标表中。

6.一些同学采用了对项目操作过程采用视频录制放入PPT进行演示,也可减少一些对应PPT页数,同时让PPT内容更生动和具备动态效果,也是一种不错的选择。

八、程序清单

结果演示:
1、 cluster.sh启动截图(全屏幕,带多条自己名字)

cluster.sh start

大数据项目之电商数据仓库系统回顾_第7张图片

2、 cluster.sh启动后,jpsall截图(全屏幕,带多条自己名字)

jpsall

大数据项目之电商数据仓库系统回顾_第8张图片

3、gmall数据仓库建表结果

show tables;

大数据项目之电商数据仓库系统回顾_第9张图片

大数据项目之电商数据仓库系统回顾_第10张图片

4、ods层订单表数据查询(带着名字缩写5遍)

select * from ods_order_info limit 5;

大数据项目之电商数据仓库系统回顾_第11张图片

DataGrip连接hive数据仓库查询:

大数据项目之电商数据仓库系统回顾_第12张图片

  1. DWD层数仓数据查询(带着名字缩写5遍)

7.1 查看地区维度表

select * from dwd_dim_base_province limit 12;

大数据项目之电商数据仓库系统回顾_第13张图片

7.2查看时间维度表

select * from dwd_dim_date_info limit 15;

大数据项目之电商数据仓库系统回顾_第14张图片

  1. DWS层数仓数据查询(带着名字缩写5遍)

8.1 查看每日商品行为

select * from dws_sku_action_daycount where dt=‘2020-06-14’ limit 15;

大数据项目之电商数据仓库系统回顾_第15张图片

8.2 查看每日地区统计

select * from dws_area_stats_daycount where dt=‘2020-06-15’ limit 15;

大数据项目之电商数据仓库系统回顾_第16张图片

  1. DWT层数仓数据查询(带着名字缩写5遍)

9.1 查看商品主题宽表

select * from dwt_sku_topic limit 15;

大数据项目之电商数据仓库系统回顾_第17张图片

9.2查看地区主题宽表

select * from dwt_area_topic limit 15;

大数据项目之电商数据仓库系统回顾_第18张图片

  1. ADS层数仓数据查询(带着名字缩写5遍)

10.1 查看品牌复购率

select * from ads_sale_tm_category1_stat_mn;

大数据项目之电商数据仓库系统回顾_第19张图片
10.2 查看地区主题信息

select * from ads_area_topic;

大数据项目之电商数据仓库系统回顾_第20张图片

大数据项目之电商数据仓库系统回顾_第21张图片

  1. kafka数据采集

Kafka生产消息

kafka-console-producer.sh --broker-list hadoop105:9092 --topic topic01

大数据项目之电商数据仓库系统回顾_第22张图片

Kafka消费消息

kafka-console-consumer.sh --bootstrap-server hadoop105:9092 --from-beginning --topic topic01

大数据项目之电商数据仓库系统回顾_第23张图片
Kafka监控

    先使用ke.sh启动相关服务,登录http://hadoop105:8048/ke查看相关信息。

大数据项目之电商数据仓库系统回顾_第24张图片
12. 查看ods_log日志

应用:使用DataGrip工具连接本地hive数据库,并检测数据库表里数据的一致性

大数据项目之电商数据仓库系统回顾_第25张图片

你可能感兴趣的:(大数据,项目,大数据,数据仓库,hadoop)