logo资料库

大数据项目之电商数仓(2用户行为数据仓库).docx

第1页 / 共88页
第2页 / 共88页
第3页 / 共88页
第4页 / 共88页
第5页 / 共88页
第6页 / 共88页
第7页 / 共88页
第8页 / 共88页
资料共88页,剩余部分请下载后查看
第1章 数仓分层概念
1.1 为什么要分层
1.2 数仓分层
1.3 数据集市与数据仓库概念
1.4 数仓命名规范
第2章 数仓搭建环境准备
2.1 Hive&MySQL安装
2.1.1 Hive&MySQL安装
2.1.2 修改hive-site.xml
2.2 Hive运行引擎Tez
2.2.1 安装包准备
2.2.2 在Hive中配置Tez
2.2.3 配置Tez
2.2.4 上传Tez到集群
2.2.5 测试
2.2.6 小结
2.3 项目经验之元数据备份
第3章 数仓搭建之ODS层
3.1 创建数据库
3.2 ODS层
3.2.1 创建启动日志表ods_start_log
3.2.2 创建事件日志表ods_event_log
3.2.3 Shell中单引号和双引号区别
3.2.4 ODS层加载数据脚本
第4章 数仓搭建之DWD层
4.1 DWD层启动表数据解析
4.1.1 创建启动表
4.1.2 向启动表导入数据
4.1.3 DWD层启动表加载数据脚本
4.2 DWD层事件表数据解析
4.2.1 创建基础明细表
4.2.2 自定义UDF函数(解析公共字段)
4.2.3 自定义UDTF函数(解析具体事件字段)
4.2.4 解析事件日志基础明细表
4.2.5 DWD层数据解析脚本
4.3 DWD层事件表获取
4.3.1 商品点击表
4.3.2 商品详情页表
4.3.3 商品列表页表
4.3.4 广告表
4.3.5 消息通知表
4.3.6 用户前台活跃表
4.3.7 用户后台活跃表
4.3.8 评论表
4.3.9 收藏表
4.3.10 点赞表
4.3.11 错误日志表
4.3.12 DWD层事件表加载数据脚本
第5章 业务知识准备
5.1 业务术语
5.2 系统函数
5.2.1 collect_set函数
5.2.2 日期处理函数
第6章 需求一:用户活跃主题
6.1 DWS层
6.1.1 每日活跃设备明细
6.1.2 每周活跃设备明细
6.1.3 每月活跃设备明细
6.1.4 DWS层加载数据脚本
6.2 ADS层
6.2.1 活跃设备数
6.2.2 ADS层加载数据脚本
第7章 需求二:用户新增主题
7.1 DWS层(每日新增设备明细表)
7.2 ADS层(每日新增设备表)
第8章 需求三:用户留存主题
8.1 需求目标
8.1.1 用户留存概念
8.1.2 需求描述
8.2 DWS层
8.2.1 DWS层(每日留存用户明细表)
8.2.2 DWS层(1,2,3,n天留存用户明细表)
8.2.3 Union与Union all区别
8.3 ADS层
8.3.1 留存用户数
8.3.2 留存用户比率
第9章 新数据准备
第10章 需求四:沉默用户数
10.1 DWS层
10.2 ADS层
10.3 编写脚本
第11章 需求五:本周回流用户数
11.1 DWS层
11.2 ADS层
11.3 编写脚本
第12章 需求六:流失用户数
12.1 DWS层
12.2 ADS层
12.3 编写脚本
第13章 需求七:最近连续3周活跃用户数
13.1 DWS层
13.2 ADS层
13.3 编写脚本
第14章 需求八:最近七天内连续三天活跃用户数
14.1 DWS层
14.2 ADS层
14.3 编写脚本
第15章 总结
15.1 用户行为数仓业务总结
15.1.1 数仓分几层?每层做什么的?
15.1.2 Tez引擎优点?
15.1.3 在项目中是否自定义过UDF、UDTF函数,以及用他们处理了什么问题?
15.1.4 如何分析用户活跃?
15.1.5 如何分析用户新增?
15.1.6 如何分析用户1天留存?
15.1.7 如何分析沉默用户?
15.1.8 如何分析本周回流用户?
15.1.9 如何分析流失用户?
15.1.10 如何分析最近连续3周活跃用户数?
15.1.11 如何分析最近七天内连续三天活跃用户数?
15.1.12 整个文档中涉及的所有层级及表
15.2 Hive总结
15.2.1 Hive的架构
15.2.2 Hive和数据库比较
15.2.3 内部表和外部表
15.2.4 4个By区别
15.2..5 窗口函数
15.2.6 在项目中是否自定义过UDF、UDTF函数,以及用他们处理了什么问题?
15.2.7 Hive优化
尚硅谷大数据项目之电商数仓(用户行为数据仓库) ——————————————————————————— —— 尚硅谷大数据项目之电商数仓(用户行为数 据仓库) (作者:尚硅谷大数据研发部) 版本:V4.0 第 1 章 数仓分层概念 1.1 为什么要分层 更多 Java –大数据 –前端 –python 人工智能资料下载,可百度访问:尚硅谷官网
尚硅谷大数据项目之电商数仓(用户行为数据仓库) ——————————————————————————— —— 1.2 数仓分层 更多 Java –大数据 –前端 –python 人工智能资料下载,可百度访问:尚硅谷官网
尚硅谷大数据项目之电商数仓(用户行为数据仓库) ——————————————————————————— —— 1.3 数据集市与数据仓库概念 1.4 数仓命名规范  ODS层命名为ods  DWD层命名为dwd  DWS层命名为dws  ADS层命名为ads  临时表数据库命名为xxx_tmp  备份数据数据库命名为xxx_bak 更多 Java –大数据 –前端 –python 人工智能资料下载,可百度访问:尚硅谷官网
尚硅谷大数据项目之电商数仓(用户行为数据仓库) ——————————————————————————— —— 第 2 章 数仓搭建环境准备 服务器 hadoop103 服务器 hadoop104 集群规划 服务器 hadoop102 Hive Hive MySQL MySQL 2.1 Hive&MySQL 安装 2.1.1 Hive&MySQL 安装 详见:尚硅谷大数据技术之 Hive 尚硅谷大数据技术 之Hive.doc 2.1.2 修改 hive-site.xml 1)关闭元数据检查 [atguigu@hadoop102 conf]$ pwd /opt/module/hive/conf [atguigu@hadoop102 conf]$ vim hive-site.xml 增加如下配置: hive.metastore.schema.verification false 更多 Java –大数据 –前端 –python 人工智能资料下载,可百度访问:尚硅谷官网
尚硅谷大数据项目之电商数仓(用户行为数据仓库) ——————————————————————————— —— 2.2 Hive 运行引擎 Tez Tez 是一个 Hive 的运行引擎,性能优于 MR。为什么优于 MR 呢?看下图。 用 Hive 直接编写 MR 程序,假设有四个有依赖关系的 MR 作业,上图中,绿色是 Reduce Task,云状表示写屏蔽,需要将中间结果持久化写到 HDFS。 Tez 可以将多个有依赖的作业转换为一个作业,这样只需写一次 HDFS,且中间节点较 少,从而大大提升作业的计算性能。 2.2.1 安装包准备 1)下载 tez 的依赖包:http://tez.apache.org 2)拷贝 apache-tez-0.9.1-bin.tar.gz 到 hadoop102 的/opt/module 目录 [atguigu@hadoop102 module]$ ls apache-tez-0.9.1-bin.tar.gz 3)解压缩 apache-tez-0.9.1-bin.tar.gz [atguigu@hadoop102 apache-tez-0.9.1-bin.tar.gz module]$ 4)修改名称 tar -zxvf [atguigu@hadoop102 module]$ mv apache-tez-0.9.1-bin/ tez-0.9.1 2.2.2 在 Hive 中配置 Tez 1)进入到 Hive 的配置目录:/opt/module/hive/conf [atguigu@hadoop102 conf]$ pwd /opt/module/hive/conf 2)在 hive-env.sh 文件中添加 tez 环境变量配置和依赖包环境变量配置 [atguigu@hadoop102 conf]$ vim hive-env.sh 添加如下配置 # Set HADOOP_HOME to point to a specific hadoop install directory export HADOOP_HOME=/opt/module/hadoop-2.7.2 更多 Java –大数据 –前端 –python 人工智能资料下载,可百度访问:尚硅谷官网
尚硅谷大数据项目之电商数仓(用户行为数据仓库) ——————————————————————————— —— for hive extra libraries required Folder containing # Hive Configuration Directory can be controlled by: export HIVE_CONF_DIR=/opt/module/hive/conf # compilation/execution can be controlled by: export TEZ_HOME=/opt/module/tez-0.9.1 export TEZ_JARS="" for jar in `ls $TEZ_HOME |grep jar`; do done for jar in `ls $TEZ_HOME/lib`; do done export HIVE_AUX_JARS_PATH=/opt/module/hadoop-2.7.2/share/hadoop/commo n/hadoop-lzo-0.4.20.jar$TEZ_JARS export TEZ_JARS=$TEZ_JARS:$TEZ_HOME/lib/$jar export TEZ_JARS=$TEZ_JARS:$TEZ_HOME/$jar #是你的 tez 的解压目录 3)在 hive-site.xml 文件中添加如下配置,更改 hive 计算引擎 hive.execution.engine tez 2.2.3 配置 Tez 1)在 Hive 的/opt/module/hive/conf 下面创建一个 tez-site.xml 文件 [atguigu@hadoop102 conf]$ pwd /opt/module/hive/conf [atguigu@hadoop102 conf]$ vim tez-site.xml 添加如下内容 tez.lib.uris ${fs.defaultFS}/tez/tez-0.9.1,${fs.defaultFS}/tez/te z-0.9.1/lib tez.lib.uris.classpath ${fs.defaultFS}/tez/tez-0.9.1,${fs.defaultFS}/tez/te tez.history.logging.service.class org.apache.tez.dag.history.logging.ats.ATSHistoryLo ggingService 更多 Java –大数据 –前端 –python 人工智能资料下载,可百度访问:尚硅谷官网 z-0.9.1/lib tez.use.cluster.hadoop-libs true
尚硅谷大数据项目之电商数仓(用户行为数据仓库) ——————————————————————————— —— 2.2.4 上传 Tez 到集群 1)将/opt/module/tez-0.9.1 上传到 HDFS 的/tez 路径 [atguigu@hadoop102 conf]$ hadoop fs -mkdir /tez [atguigu@hadoop102 conf]$ hadoop fs -put /opt/module/tez-0.9.1/ /tez [atguigu@hadoop102 conf]$ hadoop fs -ls /tez /tez/tez-0.9.1 2.2.5 测试 1)启动 Hive [atguigu@hadoop102 hive]$ bin/hive 2)创建 LZO 表 hive (default)> create table student( id int, name string); 3)向表中插入数据 hive (default)> insert into student values(1,"zhangsan"); 4)如果没有报错就表示成功了 hive (default)> select * from student; 1 zhangsan 2.2.6 小结 1)运行 Tez 时检查到用过多内存而被 NodeManager 杀死进程问题: more Container due output, 2 times detailed to check Caused by: org.apache.tez.dag.api.SessionNotRunning: TezSession has already shutdown. Application application_1546781144082_0005 for AM failed appattempt_1546781144082_0005_000002 exited with exitCode: -103 application For tracking page:http://hadoop103:8088/cluster/app/application_15467811440 82_0005Then, click on links to logs of each attempt. Container Diagnostics: [pid=11116,containerID=container_1546781144082_0005_02_000001] is running beyond virtual memory limits. Current usage: 216.3 MB of 1 GB physical memory used; 2.6 GB of 2.1 GB virtual memory used. Killing container. 这种问题是从机上运行的 Container 试图使用过多的内存,而被 NodeManager kill 掉了。 [摘录] The NodeManager is killing your container. It sounds like you are trying to use hadoop streaming which is running as a child process of the map-reduce task. The NodeManager monitors the entire process tree of the task and if it eats up more memory than the maximum or mapreduce.reduce.memory.mb respectively, we would expect the Nodemanager to kill the task, otherwise your task is stealing memory belonging to other containers, which you don't want. 解决方法: mapreduce.map.memory.mb set in 方案一:或者是关掉虚拟内存检查。我们选这个,修改 yarn-site.xml 更多 Java –大数据 –前端 –python 人工智能资料下载,可百度访问:尚硅谷官网
尚硅谷大数据项目之电商数仓(用户行为数据仓库) ——————————————————————————— —— yarn.nodemanager.vmem-check-enabled false 方案二:mapred-site.xml 中设置 Map 和 Reduce 任务的内存配置如下:(value 中实际配 置的内存需要根据自己机器内存大小及应用情况进行修改) mapreduce.map.memory.mb 1536 mapreduce.map.java.opts -Xmx1024M mapreduce.reduce.memory.mb 3072 mapreduce.reduce.java.opts -Xmx2560M 2.3 项目经验之元数据备份 元数据备份(重点,如数据损坏,可能整个集群无法运行,至少要保证每日零点之后备 份到其它服务器两个复本) 更多 Java –大数据 –前端 –python 人工智能资料下载,可百度访问:尚硅谷官网
分享到:
收藏