离线数仓 1.用户行为数仓采集 一、数仓概念 Data Warehouse 提供决策,为数据目的地做好准备 二、项目需求及系统架构 采集、行为/业务分层数仓、报表分析 框架CDH(CM):采集传输、存储、计算、查询 三、数据生成模块 数据格式:公共字段+业务字段 事件日志数据、编写数据生成脚本(编写bean,使用Logback打印日志) 四、数据采集模块 Hadoop:磁盘扩展、LZO压缩(建索引)、yarn和hdfs集群配置 zookeeper:~系统/用户环境变量、日志生成参数(延时时间、迭代次数)、半数选举机制 日志采集的Flume:编写ETL和分类型拦截器、日志采集启动停止脚本编写 kafka:kafka-consumer-perf-test.sh压力测试、Flume采集kafka数据、分区分配、幂等机制、ISR 2.用户行为数仓搭建 一、数仓分层概念 分层原因:处理单一任务、增加复用性、与原始数据隔离(解耦) ODS原始数据、DWD明细数据、DWS服务数据、ADS数据应用层 ODS:存放原始日志、数据保持原貌 DWD:结构和粒度一致,做数据清洗 DWS:数据以某一维度为线索,进行轻度汇总,并形成一个以用户维度为线索的宽表 ADS:为统计报表提供数据 数据集市面向部门,数据仓库面向企业/临时数据库tep、备份数据库bak 二、数仓搭建环境准备 hive&mysql安装 使用hive的tez引擎,多个依赖作业转化为一个作业 三、数仓搭建之ODS层 创建数据库、创建索引配置LZO压缩、创建事件日志表(公共字段+事件名称) 传参,编写加载数据 & 加索引的脚本 四、数仓搭建之DWD层 数据清洗/去除空值/异常值 编写基础明细表(事件名&json),按照日期分区 自定义UDF和UDTF函数,分别解析公共字段和不同事件 数据加载脚本:获取指定json,并分别建立对应的事件表,如点赞、广告表等 五、业务知识准备 术语:沉默用户、活跃用户、流失用户、留存用户 系统函数:collect_set、date_format、date_add 需求实施流程:模型设计、数据开发、前后端联调 六、各类需求 用户活跃设备之DWS和ADS层编写 用户新增设备之DWS(新增明细)和ADS(按日期的新增数量) 用户留存主题、沉默用户、活跃用户、留存用户…… 3.系统业务数据仓库 一、电商业务及结构 产品SPU和库存量SPU及电商表结构和业务流程 二、数仓理论 表的分类:实体表、维度表、事务型事实表、周期型事实表 同步策略:全量表、增量表、新增及变化表、拉链表 关系建模OLTP(多表关联)与维度建模OLAP(围绕一张表) 数仓模型:星型模型、雪花模型、星座模型 三、数仓搭建 配置Hadoop支持Snappy压缩 MySQL调用方法进行业务数据生成,使用sqoop导入hdfs,编写生成指定日期及导入脚本 建ODS层及DWD层的表并编写数据导入脚本 构建用户行为宽表并编写导入脚本 四、ADS层不同需求(成交额、转化率等) GMV阶段成交额(统计当日订单个数及总金额) 用户转化率-用户新鲜度及漏斗分析(新增占活跃) 五、数据可视化 MySQL建表并插入数据(活跃、留存、漏斗、GMV、全国商品分析) 运行spring-boot-echarts-master查看结果 编写sqoop导出数据脚本(web页面从MySQL中读取数据) 六、Azkaban调度器 Azkaban程序运行job GMV全流程脚本:import.job、ods.job、dwd.job、dws.job、ads.job、export.job 文件压缩并上传至工程中执行,查看结果 七、订单拉链表 使用:得到某个时间段(点)的全量数据切片 形成过程:每日的订单表->添加创建和操作时间,得到订单变化表->合并之前拉链表 制作过程:生成订单数据、建拉链表、初始导入、查询、调方法新增数据、合并追加到临时表后覆盖 4.即席查询 一、Presto 二、Druid 三、Kylin 5.CDH数仓 一、数仓之Cloudera Manager 二、数仓之CDH 三、数仓搭建环境准备 四、业务数仓搭建 五、数仓之即席查询数仓搭建 六、安全之Kerberos安全认证 七、安全之Sentry权限管理 八、集群测试 九、节点的添加和删除 6.Impala 一、基本概念 二、安装及常用命令 三、DDL数据定义 四、DML数据操作 五、函数 六、存储与压缩