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

文章目录

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

一、实训课题

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

二、实训目的

完成一个电商数仓项目:

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)配置了多队列导致加载数据时,所用队列没有足够的空间

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

七、课程实训体会与心得

  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

在这里插入图片描述

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

jpsall

在这里插入图片描述

3、gmall数据仓库建表结果

show tables;

在这里插入图片描述

在这里插入图片描述

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

select * from ods_order_info limit 5;

在这里插入图片描述

DataGrip连接hive数据仓库查询:

在这里插入图片描述

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

7.1 查看地区维度表

select * from dwd_dim_base_province limit 12;

在这里插入图片描述

7.2查看时间维度表

select * from dwd_dim_date_info limit 15;

在这里插入图片描述

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

8.1 查看每日商品行为

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

在这里插入图片描述

8.2 查看每日地区统计

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

在这里插入图片描述

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

9.1 查看商品主题宽表

select * from dwt_sku_topic limit 15;

在这里插入图片描述

9.2查看地区主题宽表

select * from dwt_area_topic limit 15;

在这里插入图片描述

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

10.1 查看品牌复购率

select * from ads_sale_tm_category1_stat_mn;

在这里插入图片描述
10.2 查看地区主题信息

select * from ads_area_topic;

在这里插入图片描述

在这里插入图片描述

  1. kafka数据采集

Kafka生产消息

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

在这里插入图片描述

Kafka消费消息

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

在这里插入图片描述
Kafka监控

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

在这里插入图片描述
12. 查看ods_log日志

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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/10054.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

7.基于概率距离快速削减法的风光场景生成与削减方法

matlab代码:基于概率距离快速削减法的风光场景生成与削减方法 采用蒙特卡洛进行场景生成,并再次进行场景缩减。 clear;clc; %风电出力预测均值E W[5.8,6.7,5.8,5.1,6.3,5,6.2,6,4.1,6,7,6.8,6.5,6.9,5,5.6,6,5.8,6.2,4.7,3.3,4.4,5.6,5]; %取标准差为风…

在unreal中的基于波叠加的波浪水面材质原理和制作

关于水的渲染模型 如何渲染出真实的水体和模拟,是图形学,游戏开发乃至仿真领域很有意思的一件事 记得小时候玩《Command & Conquer: Red Alert 3》,被当时的水面效果深深震撼,作为一款2008年出的游戏,现在想起它…

算法:将一个数组旋转k步

题目 输入一个数组如 [1,2,3,4,5,6,7],输出旋转 k 步后的数组。 旋转 1 步:就是把尾部的 7 放在数组头部前面,也就是 [7,1,2,3,4,5,6]旋转 2 步:就是把尾部的 6 放在数组头部前面,也就是 [6,7,1,2,3,4,5]… 思路 思…

C++继承(上)

一、继承的概念及定义1.继承的概念2.继承定义2.1定义格式2.2继承关系和访问限定符2.3继承基类成员访问方式的变化二、基类和派生类对象赋值转换三、继承中的作用域一、继承的概念及定义 1.继承的概念 继承机制是面向对象程序设计使代码可以复用的最重要的手段,它允…

聊聊如何运用JAVA注解处理器(APT)

什么是APT APT(Annotation Processing Tool)它是Java编译期注解处理器,它可以让开发人员在编译期对注解进行处理,通过APT可以获取到注解和被注解对象的相关信息,并根据这些信息在编译期按我们的需求生成java代码模板或…

【SQL Server】数据库开发指南(一)数据库设计

文章目录一、数据库设计的必要性二、什么是数据库设计三、数据库设计的重要性五、数据模型5.1 实体-关系(E-R)数据模型5.2 实体(Entity)5.3 属性(Attribute)5.5 关系(Relationship)六…

和ChatGPT-4聊完后,我觉得一切可能已经来不及了

了然无味,晴空万里!和ChatGPT-4开始了一场坦诚的沟通,它全程都表现出高情商,以及不断尽量安抚我的情绪,而这,恰恰令我脊背发凉。 部分文字截取 ZM:我能不能理解每次对话就是一次你的“生命” G&…

LeetCode刷题6:二叉树篇之第 1 节

提示1:本篇先带大家了解二叉树的基础理论,后给出4道基础题目,不难,冲啊~ 算法刷题系列 LeetCode刷题1:数组篇LeetCode刷题2:链表篇LeetCode刷题3:哈希篇LeetCode刷题4:字符串篇Lee…

1678_计算机架构黄金时代_文章阅读

全部学习汇总: GreyZhang/g_risc_v: Learning notes about RISC V. (github.com) 看了一份几年前的文章,觉得还是挺有收获的,因此做一个简单的整理。 对于架构有很大影响的主要考虑四点:专用硬件的实现、高安全性的要求、开放指令…

【Pandas】① Pandas 数据处理基础

介绍 Pandas 是非常著名的开源数据处理库,我们可以通过它完成对数据集进行快速读取、转换、过滤、分析等一系列操作。除此之外,Pandas 拥有强大的缺失数据处理与数据透视功能,可谓是数据预处理中的必备利器。 知识点 数据类型数据读取数据选择…

有效的括号(力扣刷题)代码随想录刷题

给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都有一个对应的相同类型的左…

RK3568平台开发系列讲解(驱动基础篇)mmap系统调用详解

🚀返回专栏总目录 文章目录 一、什么是mmap二、mmap映射类型2.1、私有匿名映射2.2、私有文件映射2.3、共享文件映射2.4、共享匿名映射沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本文将详细介绍mmap系统调用。 一、什么是mmap mmap/munmap函数是用户空间中常用的…

Nacos 性能报告

目录 一、测试目的 二、测试工具 三、测试环境 1. 环境 服务端 客户端 2. 启动参数 服务端 客户端 四、测试场景 1. 大规模服务注册后达到稳定状态 场景描述 2. 大规模服务注册达到稳定状态后,部分实例频繁发布 场景描述 五、测试数据 1. 大规模服务…

软件测试基础

软件测试的定义、软件测试的目的 IEEE:The process of running or testing the system manually or automatically by using tools, in order to verify whether it satisfies the requirements or to make clear the differences between the actual outcome and…

DDoS攻击实验笔记

DoS&DDoS简介 DoS(Denial of Service),拒绝服务攻击是通过一些方法影响服务的可用性,比如早期主要基于系统和应用程序的漏洞,只需要几个请求或数据包就能导致长时间的服务不可用,但易被入侵检测系统发现。 DDoS(Distributed D…

日撸 Java 三百行day28-30

文章目录说明day28-30 Huffman 编码 (节点定义与文件读取)1.建树过程(以图为例)2.哈夫曼树特点3.分析代码过程3.1 抽象成员变量3.2结合文章梳理思路1.读文本2.解析文本内容:3.建树4.生成哈夫曼编码5.编码6.解码4.其他4.1 java 类型强转4.2 ja…

linux线程调度策略

系统中既有分时调度,又有时间片轮转调度和先进先出调度 学习这个主要为了在linux多线程中,解决几条指令间延时在1-2ms内; 1.比如之前处理过:给一个板子发送一个can指令,接着需要给另外一个模块发送移动指令&#xff0c…

用ChatGPT怎么赚钱?普通人用这5个方法也能赚到生活费

ChatGPT在互联网火得一塌糊涂,因为它可以帮很多人解决问题。比如:帮编辑人员写文章,还可以替代程序员写代码,帮策划人员写文案策划等等。ChatGPT这么厉害,能否用它来赚钱呢?今天和大家分享用ChatGPT赚钱的5…

关键词数据分析-搜索词和关键词分析工具

要搜索热门关键词获取,可以采用以下几种方法: 使用百度指数:百度指数是一个实用的工具,可用于查看关键词的热度趋势、搜索量等数据。在百度指数中,您可以输入您要搜索的关键词,并查看近期的相关数据。这可以…

短视频矩阵怎么玩?抖音短视频矩阵运营详细攻略!

短视频矩阵的工作包括确定目标受众和平台、制定短视频内容策、短视频制作与发布,私信评论维护,短视频数据分析等。传统短视频矩阵需要大量的人力物力,操作起来比较复杂,使用短视频矩阵工具则可以提供极大的便利。      1、确定…