基于Hive的离线数据仓库项目

项目的架构

架构图

离线数据仓库.png

架构图说明

  • Zookeeper:集群管理工具,主要服务于hadoop高可用,以及其他基于zookeeper管理的大数据软件
  • HDFS:大数据最终数据的储存
  • YARN:负责资源的分配
  • HIVE:用于编写SQL进行数据分析
  • Oozie:主要负责自动化定时调度
  • Sqoop:用户关系数据库的导入导出
  • Flume:日志文件的导入导出
  • HUE:提升hadoop的用户体验,可以比较友好的操作hdfs,hive等
  • FineBI:数据报表展示工具
  • Cloudera Manager大数据统一管理平台,它负责安装软件、配置、启动和停止服务以及管理运行服务的群集。

数据仓库分层

为什么要对数据仓库分层

分层的主要原因是在管理数据的时候,能对数据有一个更加清晰的掌控。那么数据分层优点有哪些呢?

  • 清晰数据结构:每一个数据分层都有它的作用域,这样我们在使用表的时候能更方便地定位和理解。
  • 依赖关系直观:依赖关系明确,出问题后很容易顺着依赖关系找到原因。
  • 减少重复开发:开发一些通用的中间层数据,能够减少极大的重复计算。
  • 把复杂问题简单化:将一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤。

注意:数据分层后,数据会经多层,因此数据仓库会存在大量冗余的中间数据。这些中间数据,缓存多久需要考虑。

数仓分层思想

操作数据层(ODS)

Operate data store(操作数据存储),是最接近数据源中数据的一层,数据源中的数据,经过抽取、洗净、传输,也就说传说中的ETL之后,装入ODS层。注意,一般是从业务系统增量抽取,生成的数据保留时间由业务需求决定。

数据仓库层(DW)

Data warehouse(数据仓库)。在这里,从ODS层中获得的数据按照主题建立各种数据模型。例如以研究人的旅游消费为主题的数据集中,便可以结合航空公司的登机出行信息,以及银联系统的刷卡记录,进行结合分析,产生数据集。在这里,我们需要了解四个概念:维(dimension)、事实(Fact)、指标(Index)和粒度( Granularity)。

DW数据分层,由下到上为 DWD,DWB,DWS

DWD:data warehouse detail 细节数据层,是ODS与数据仓库的隔离层。主要是对ODS数据层做一些数据的清洗和规范化的操作,比如去除空数据、脏数据、离群值等。

DWB:data warehouse base 基础数据层,在DWD层的数据基础上,对数据做一些轻微的聚合操作,生成一些列的中间结果表,提升公共指标的复用性,减少重复加工的工作。

DWS:data warehouse service 服务数据层,该层是基于DWM上的基础数据,整合汇总成分析某一个主题域的数据服务层,一般是宽表,用于提供后续的业务查询,OLAP分析,数据分发等。

数据应用层(APP)

该层主要是提供数据产品数据分析使用的数据,一般会存放在ES、MySQL等系统中供线上系统使用,也可能会存在Hive或者Druid中供数据分析和数据挖掘使用。

事实表,纬度表

事实表(Fact Table)

是指存储有事实记录的表,如系统日志、销售记录等;事实表的记录在不断地动态增长,所以它的体积通常远大于其他表。事实表作为数据仓库建模的核心也是维度建模的核心表,需要根据业务过程来设计。

每个数据仓库都包含一个或者多个事实数据表,事实表是对分析主题的度量,它包含了与各维度表相关联的外键,并通过连接(Join)方式与维度表关联。

事实表与维度表.jpg

维度表(Dimension Table)

维度就是看待问题的角度,分析业务数据,从什么角度分析,就建立什么样的维度。所以维度就是要对数据进行分析时所用的一个量,比如你要分析产品销售情况,你可以选择按商品类别来进行分析,这就构成一个维度,把所有商品类别集合在一起,就构成了维度表。

纬度表相当于将事实表上经常重复出现的属性抽取、规范出来用一张表进行管理。常见的维度表有:日期表(存储与日期对应的周、月、季度等的属性)、地点表(包含国家、省/州、城市等属性)等。维度是维度建模的基础和灵魂。使用维度表有诸多好处

  • 缩小了事实表的大小。
  • 便于维度的管理和维护,增加、删除和修改维度的属性,不必对事实表的大量记录进行改动。
  • 维度表可以为多个事实表重用,以减少重复工作。

粒度

事实表的粒度,决定了数据仓库中数据的详细程度。可以理解成一行的详细程度,例如销售记录表中每条销售记录是最小粒度,按小时分组销售是一个粒度,按天,按周等。

粒度是指数据仓库的数据单位中,保存数据的细化程度的级别。简单点来看,在实事表中一条记录所表达的业务细节,就是粒度。

指标

用来定义、评价和描述特定事物的一种标准或方式。比如:新增用户数、累计用户数、用户活跃率等是衡量用户发展情况的指标。

纬度建模技术知识

维度建模是一种将大量数据结构化的逻辑设计手段,包含维度和指标,它不像ER模型目的是消除冗余数据,维度建模是面向分析,最终目的是提高查询性能,所以会增加数据冗余,并且违反三范式。

维度建模一般可以分为三种:

  • 星型模型
  • 雪花模型
  • 星座模型

其中最常用的其实是星型模型

相关文章

此处评论已关闭