前置需求的技术
- Hadoop
- Hive
- Hue
- Sqoop
- Oozie
项目简介
项目叫做:知行教育大数据分析平台(数仓开发项目)
目的:对海量的业务数据进行指标分析。
结果:对分析的结果做可视化的展示
项目的痛点
- 数据量比较大,传统的业务数据库比如MySQL难以支撑,我们需要:分布式的、支持SQL的一种数据库(Hive)
- 数据分散,需要将数据集中存储
- 数据设计是针对业务设计的,分析比较困难,我们需要将它转换为分析比较好用的格式
项目的数据流转
在线教育的业务
名词解释
- 意向用户:对公司的业务抱有兴趣的潜在用户
- 有效线索:能够有效联系到用户的线索,比如手机号、邮箱、微信等等
项目分析的五个大方向(主题)
- 访问和咨询主题
- 报名用户主题
- 有效线索主题
- 意向用户主题
- 学生出勤出题
目的:通过这5个主题,来分析具体主题内的详细需求
在线教育的主体流程
-
访问网站
访问数据
-
咨询客服
咨询数据
-
询问意向
意向数据
-
留下线索
线索数据
-
报名
学生信息等数据
-
学习
学习记录数据
补充:数据分析的价值
数据分析的价值非常高,因为数据能指导公司的运营。
但是:数据不是万能的。
关机
建议使用命令关机:shutdown -h now
或者init 0
数据仓库理论
学习目标
理解OLTP和OLAP的区别
理解数据仓库的特点
理解数据仓库系统架构
理解指标与维度
理解下钻与上卷
理解事实表与维度表
理解星型模型和雪花模型
理解缓慢渐变维
掌握数据仓库的分层方法
数据仓库介绍
数据分析的问题
- 做分析的时候,很多业务数据都会分散的存储到很多业务后台中。
数据孤岛
- 数据量巨大,需要一种能够存储海量数据,同时也能分析海量数据的工具
- 工具还需要能够支持常用的SQL
解决问题
- 做数据的集中存储
- 分布式存储+分布式计算
满足条件的组件
-
Hive
存储基于分布式的HDFS
计算基于分布式的MapReduce
-
Impala
分布式存储 + 分布式计算
-
HAWQ
-
Spark、Flink(分布式计算框架)搭配HDFS(分布式存储)
数仓的简单概念
定位为集中存储可以支持海量数据分析和计算的一种技术,可也以称之为数据分析专用的系统。
数仓的特点
- 集中存储
- 海量数据分析计算
- 支持SQL语言
- 专用数据分析
数仓的标准概念
数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、数据集成的(Integrated)、相对稳定(非易失)的(Non-Volatile)、反映历史变化(时变)(Time Variant)的数据集合,用于支持管理决策(Decision Making Support)。
-
面向主题(Subject Oriented)
数仓定位是分析专用的系统,待分析的数据,一般会根据你要分析的主题进行表结构设计存储
-
数据集成(Integrated)
分散的业务数据(数据孤岛)完成集中化存储
一般企业中,数据仓库只会设计一套。因为目的是集中化存储业务数据待分析
-
相对稳定(非易失)
数据仓库的内容,一般是只进不出。很少会执行DELTE和UPDATE,一般都是INSERT和SELECT
对比起来业务系统一般记录的是事件的状态(最新)
数仓系统一般记录的是事件全生命周期走过的所有状态的记录
-
反映历史变化(时变)
数仓记录的是事件的全生命周期的状态更迭。所以历史状态等信息均能得到体现。
总结一下
大白话
数仓就是:企业想做数据分析,但是有数据孤岛问题以及数据量太大,所以做出一个系统解决了集中存储的问题以及解决了海量数据计算的问题,同时还能支持SQL最好。那么这个我们叫做数据仓库。
OLTP 和 OLAP 的区别
- OLTP:Online Transaction Processing:在线(联机)事务处理
- OLAP:Online Analysis Processing:在线分析处理
OLTP
大白话:OLTP系统主要为了业务能够顺畅、稳定的运行
即联机事务处理,也称为面向交易的处理过程,其基本特征是前台接收的用户数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理结果,是对用户操作快速响应的方式之一,比如ERP系统,CRM系统,互联网电商系统等,这类系统的特点是事务操作频繁,数据量小。
OLAP
大白话:OLAP系统主要为了数据能够高效的分析处理
即联机分析处理,有时也称为决策支持系统(DSS),支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。这类系统的特点是没有事务性操作,主要是查询操作,数据量大。
大数据基本上都是OLAP的模式
数仓的常见基础架构模式
ETL
- E:Extract、抽取
- T:Transformation、转换
- L:Load、加载
简单理解ETL就是:
- 输入(E)
- 处理(T)
- 输出(L)
大白话:ETL就是从A点抽取数据,进行处理后,写入到B点
Sqoop就是一个典型的ETL工具,专为Hadoop设计
数据集合
如图,首先,数仓是数据的集中存储。
但是公司是有不同的部门(业务线),它们关心的东西不一样。
各个部门(业务线)是只关系数仓数据中的某一个数据子集
数仓可以划分出很多的数据子集,这种模式称之为:数据集市
数据集市不是必须的,看具体需要