有赞大数据实践: 敏捷型数据仓库的构建及其应用

有赞大数据实践: 敏捷型数据仓库的构建及其应用

  • 有赞大数据实践: 敏捷型数据平台的构建及其应用

    • 前言
    • 数据仓库设计
      • 总体架构
      • 数据仓库实例
      • 基础指标层
      • 分层的好处
      • 数仓工具
    • 数据仓库与数据分析
      • 即席查询系统
      • 多维分析系统
      • 搜索分析系统
      • 固定报表系统
    • 数据仓库在信息检索中的应用
    • 小结

前言

互联网公司一般发展迅速. 一方面, 业务飞速发展, 当前应用的形式和模型每天都在变化; 企业的产品也在经历不断的下线上线过程. 数据仓库如何拥抱变化, 是难点之一.

互联网的运营人员从了解经营状况转化为精细化运营, 这就于要求数据仓库具有提供高效明细数据能力, 数据仓库如何在庞大数据量的前提下, 实现满足不同层次的数据提出和分析, 是难点之二.

数据经过ETL最终到达使用数据者手里; 提取数据和提出数据的需求往往来自不同的部门和出于不同的目的. 这一般会导致数据口径不一致, 数据含义模糊, 甚至数据正确性很难校验. 数据仓库如何保证数据口径一致, 数据路径可追溯性, 是难点之三.

数据仓库的应用领域除了各个业务部门还包括技术部门本身. 由于海量数据处理, 互联网的技术架构越来越依赖大数据平台的支持. 一个点上平台每天都会有数以万记的店铺和商品更新, 数以亿计的用户日志, 订单数据等. 这些数据在毫无保留的通过消息队列汇总到数据仓库中. 如果使用数据仓库进行再生产是技术架构重点考虑的事情. 数据仓库拥有其他数据平台无法比拟的横向扩展和迭代计算能力, 可以直接或者间接面向用户提供数据服务. 这也是大数据的机遇之一.

数据仓库设计

总体架构

存储层 主要解决ETL问题, 如何正确的埋点, 数据稳定正确的传输, 提供可靠的存储计算环境等等. 这部分内容比较复杂, 本文不重点阐述.

数据仓库层 主要提供数据模型和数据工具两个内容. 数据模型解决数据可用的问题, 数据工具解决数据易用的问题. 本文会重点介绍数据模型的设计方法和数据工具的作用.

数据分析层 主要解决各种角色如何使用数据仓库的问题. 后面有章节举例说明每个分析工具的优势和适用范围.

数据仓库实例

数据源主要有两种来源, 文件和DB. 通过消息队列收集到hadoop平台. 数据仓库的第一层是近源数据层, 这一层基本上和数据源保持一样的字段结构. 我们看一下一个例子. 这个例子阐述我们如何构造"订单商品中间层".

业务层有数十个基本表. 他们通过收集工具, 消息队列导入近源数据层中. 这个过程需要做如下几件事情:

  1. 将物理分片的分布式DB映射成一个Hive表
  2. 根据表的内容选择合适的Hive分区键
  3. 对于缓慢变化维进行处理, 让数据表可以反映变化
  4. 对于日志进行基本的处理映射成Hive表

近源数据层不做如下事情:

  1. 脏数据处理;
  2. 数据表间一致性处理;
  3. 不同业务表的合并.

我们对于近源数据层的定位是可以"快速"的构建基础数据平台. 不做业务相关的处理可以让这部分的工作专注在大数据架构正确性和稳定性的问题.

近源数据层出现以后, 实际上我们已经可以开始主要的数据分析工作了. 但是我们引入了"中间层", 它的定位是"操作简单, 执行快速, 屏蔽错误, 统一口径".

这个过程主要完成如下几个事情:

  1. 合并不同业务为统一过程;
    业务数据有很多独立的市场或者版本, 他们客户和用户不同, 但是工作过程是一样的. 再比如app和pc的日志独立记录, 但是可以在一定程度上合并.
  2. 屏蔽脏数据, 比如典型的测试数据.
  3. 冗余字段. 把常用的join操作在中间层封装.

我们看一下订单宽表的实现过程. 订单宽表是是以订单为主键的表. 它包含几方面的信息:

  1. 基本的订单统计, 主要是订单主要信息表提供;
  2. 订单的聚类分析, 比如订单的城市分布, 年龄分布分析, 主要是订单详细信息表提供;
  3. 订单风险分析, 这就依靠维权订单表来提供;
  4. 等等

这样我们产生的订单宽表在一定程度上满足绝大多数的数据分析问题.

  1. 首先, 是数据口径的问题, 计算宽表的时候会根据业务需求生成很多冗余字段, 比如对于疑似刷单交易, 很多业务如果都实现一遍的话, 势必会导致口径问题, 在设计订单宽表的时候我们根据风控模型加入一个字段是否为空壳交易. 这样在统计时候各方的口径都会一致. 同样脏数据问题也是通过这种方式解决.
  2. 其次, 多表join问题, 订单宽表一定程度上聚合常用的字段, 满足80%的数据分析需求. 加上合理的分区设计, 基本上查询是非常快速的.
  3. 最后需要说明的是, 我们没有为所有近源数据表都封装中间层. 购物车信息我们就没有完全封装, 因为他们的分析不常用. 订单宽表的设计需要做一个折中. 一方面设计完备的数据仓库是不现实的, 另一方面订单宽表的前提是足够常用, 对于不常用的数据我们的数据平台是支持直接操作的. 这符合互联网设计产品的一般思路.

基础指标层

基础指标层放映了对一个实体的基本衡量, 是BI分析的基础. 如上图所示, 在订单宽表的基础上我们提取出 消费者指标表商户指标表商品指标表 等. 比如在商品指标表中, 我们会针对商品的销量, 维权数等对商品做基本的画像, 这样应用就可以非常方便的筛选合适的商品.

分层的好处

我们可以看到, 从 近源层 到 指标层 层次越高易用性越强, 层次月底, 灵活性就越强. 这样的设计可以保证紧急的分析可以快速响应, 同事稳定的数据可以通过高层次的数据模型高质量保证.

同时, 我们意识到数仓模型是迭代的, 逐步晚上的过程. 数据分析的工作不断的反馈到数仓建设中.

数仓工具

有了可供操作的数据模型. 基本上我们可以解决数据仓库的主要问题. 数据仓库另外一个问题是溯源问题.

  1. 一方面溯源有利于我们清晰的了解数据的血缘关系, 方便数据问题的追查.
  2. 另外一方面, 是数据质量的问题. 想建立一个稳定的数据质量体系保证数据仓库常年稳定有效实践过程中非常困难. 基础设施的问题, 业务的变迁, 脏数据的产生都会导致正在使用的数据仓库的质量问题. 数据仓库另外一个要求是随时可以跑全量数据.

我们看一下我们设计的数据地图的样子:

  1. 数据地图可以用于查看所有报表的路径和执行过程. 这样我们可以追查特定字段的数据来源, 广泛用于对账和对数.
  2. 数据地图可以提供数据任务间的依赖关系, 从而进行快速的全局数据的修补. 举个例子, 如果我们在10.30日发现9.1日的日志里面存在大量的攻击日志(无效日志)导致很多中间层, 报表数据不准, 我们只需要把近源数据表修复, 然后设定开始和结束的日期, 所有依赖它的任务都会重新执行.

数据仓库另外一个组件是元数据管理系统. 它的主要作用:

  1. 提供帮助文档, 给出所有可用表格的规格和口径说明;
  2. 规范报表的口径, 避免口径歧义.

数据仓库与数据分析

互联网的运营人员从了解经营状况转化为精细化运营. 精细化 首先体现在深度. 传统的高度汇总的知识性数据不能满足目前的日常需求, 更需要细粒度的探索性数据. 其次精细化体现在广度上面, 需要BI支持不仅仅是管理层或者决策人员. 普通的产品运营, 市场运营, 产品经理都会分析数据分析产品的受众, 分布等数据.

我们提供4种不同的工具来满足BI服务.

  1. 即席查询系统
  2. olap系统
  3. 定制搜索和报表系统
  4. 搜索引擎

即席查询系统

即席查询系统 的使用者是专业的数据分析人员. 它的定位是数据仓库的操作平台.这是使用最广泛的系统, 因为它不需要开发任何工作. 数据仓库ready后就可以使用. 数据仓库的良好设计和数据字典的文档作用使得即席查询系统非常容易上手.

这里我们强调一下BI过程和数据仓库设计的互动性. 对于重要的数据中间层, 我们提供基本的BI基础表. 比如订单指标表和商品指标表.

接着上面的例子, 我看一下BI过程如何利用数据仓库的. 假如我们需要分析店铺的各项指标.


这些指标可以非常迅速的从订单宽表中算出来. 不要考虑复杂的交易异常, 脏数据等问题.

另外由于店铺指标, 用户指标等这些常用的BI表又可以作为基础指标中间层沉淀下来, 用于更高纬度的数据分析.

因此我们看到数据仓库数据整合的3个层次:

  1. 近源数据层作为数据源, 主要是不常用的, 简单的数据.
  2. 数据中间层, 使用频率很高的基于主题的数据.
  3. 基础指标中间层, 基于数据中间层的基础聚合, 使用频率更高. 简化复杂BI过程.

多维分析系统

多维分析系统 的使用者是一般运营人员. 它是特定的中间层图形化表达. 多维分析系统实现的是对某些指标的特定维度的聚合分析.

多维分析系统我们是基于kylin引擎做的, 是一种多维度联机查询系统. 对于每个主题(比如订单主题)提供基于维度筛选和各种聚合功能(比如最大, 最小, 求和等). 并通过表格和图形化方式展示.

接着上面的例子. 我们打算做一个订单主题的多维分析系统. OLAP模型如下:

这样我们就可以轻松的回答如下几个问题.

  1. 3C类目的维权订单趋势是怎么样的?

  1. 各种支付方式在每个省的分布式怎样的?

多维分析系统的缺点是没有即系查询系统灵活. 由于他需要预加载数据对于维度特别高的查询支持也不是很好.

搜索分析系统

搜索分析是基于对于纬度建立索引的查询系统. 他可以满足对于不同指标的多级筛选, 直到筛选出合适的候选集. 如下是一个例子.

我们需要对商品池进行筛选. 由于我们对商品的关键属性建立的索引, 首先可以根据销量和维权数筛选出优质高效(A类), 优质精品(B类), 劣质(C类)商品; 再在A类商品的基础上根据其他属性(品类, 客单价, 受众人群)等筛选出本次的目标商品集.

在这个过程中我们可以感受到, 搜索分析系统给我们的数据分析者一个很大的迭代筛选的平台, 可以通过不断的尝试和反馈, 提高自己的选品的质量.

固定报表系统

固定报表 一般是针对特征的数据需求. 这是最常见的BI需求. 比如我们的GMV报表, 店铺报表. 在固定报表的基础上的地动仪系统可以很好的支持我们的数据异常点. 比如如果每周一的订单数据都在100w单左右(举例), 如果突然一个周一变成200w单, 就可以发出报警.

我们来对比以下常用的BI工具.

工具名称 基本技术 适用人群 速度 灵活性 适用场景
即席查询 hive 1. 数据分析人员
2. 有能力的运营人员
慢:10m~1h 所有数据分析场景
OLAP系统 olap 产品经理, 运营人员 较快: 10s~10min 特定主体的多维分析
搜索引擎 倒排索引 1. 目的性强 快: 10s以下 根据条件的主题检索
报表系统 mysql 报表相关人员 快: 10s以下 特定业务数据的查阅

数据仓库在信息检索中的应用

数据仓库不仅在用于BI, 数据仓库实际上充当着企业数据总线的作用. hadoop为存储介质的数据仓库简化了信息检索的成本. 包括数据的获取, 计算和加载.

信息检索系统应该和业务数据解耦. 我们回归一下传统的信息检索系统的构建过程. 传统的搜索工具一般都是基于倒排索引的, 或者kv的的系统, 一般都是单机模式 + 代理的分布式方案.

  1. 传统的搜索引擎, kv引擎等数据与业务数据高度耦合. 业务数据一般存储在DB中, 我们经历过搜索引擎数据丢失的情况, 我们不得小心翼翼的与业务方配合追查, 一不小心一个sql就把业务服务器整垮了.
  2. 数据无法保证完全性. 搜索引擎是一个庞大的系统, 数据经过很多环节才进入索引, 一般都是批处理或者实时构建. 补一个步骤都需要保证数据正确性. 否则索引数据就不准. 由于索引数据的非常宝贵. 搜索团队还要花费很多功力研究如何备份索引, 以防止以外丢失.
  3. 搜索数据与业务数据不一致. 对数据是任何两个部分在处理同一份数据时候都会经历的问题.

我们还是以订单相关的业务为例. 通过"订单", "维权", "购物车", "状态变更"等基本事务过程产生相关的DB和日志数据; 我在在这些基本的数据上搭建"订单检索", "订单导出", "数据报表"等信息检索的业务. 和左侧的业务不同, 这些业务不需要交互和事务, 是一个"一写多读"的功能模块.

由于日志和DB是基于技术通用性设计的, 没有考虑各个业务的需求. 各个业务势必会有各自不同的业务处理代码. 比如订单检索和数据报表在理论上应该是可以进行精确的"对数"的. 但是由于各自的业务代码是独立的, 因此在数据一致性方面会遇到问题.

搜索引擎的搭建是一个庞大的工程, 首先我们要通过消息队列订阅所有的数据, 然后我们在业务处理层将数据进行整合, 然后建立索引. 这里我们会遇到横向扩展的问题. 我们不得不根据一个合适的主键讲消息队列的数据分流, 分别建立索引.

我们发现全量索引是昂贵的. 全量索引意味着导表, 我们不得不提供专门为搜索引擎使用的备库, 如果数据库本身是分片的, 那么每片我们都要导入.

如果我们引入大数据平台, 就可以完全把搜索引擎和DB解耦.

  1. 数据平台是基础数据的完全镜像.
  2. 数据平台非常的皮实. 不仅可以随时拉去海量数据不影响业务, 而且可以通过批量计算和迭代计算进行复杂的数据处理.
  3. 大数据有逐渐成熟的解决方案体系. 包括批处理, nosql, 和搜索引擎(solr和elasticsearch).

我们看一下以数据仓库为中心的架构.

  1. 数据仓库充当业务数据层. 数据仓库封装了重要的数据口径. 让业务处理更加关注上层的业务,不需要关注通用的数据处理和封装.
  2. 大数据平台让各种数据引擎执行过程简单可靠. 大数据以透明拓展性和高度可计算性著称, 但是传统的搜索引擎, 本质上是单机程序, 他们的分布式解决方案需要代理层. 如何让他们享受大数据的优势, 很多人给出解决方案. 我们这里给出基于hadoop-elasticsearch的方案, 主要不是介绍相应的技术细节而是强调我们的思路.
  3. 搜索算法可以有更多发挥空间. 基于数据仓库的算法平台, 充分spark等迭代计算的优势, 可以提供搜索引擎很多算法组件, 比如商品的质量度, 商品的类目, 反作弊数据等.

小结

我们介绍了大数据平台下的数据仓库. 数据仓库在设计上尽可能简单, 配合BI和信息检索的应用迭代优化. 为了保证数据仓库的可用性, 我们引入数据字典, 数据地图等工具. 在数据仓库上面, 我们搭建了几种BI工具, 即席查询, olap, 数据报表和搜索引擎, 根据不同的需求方和场景给出不同的解决方案. 最后我们介绍了数据仓库在信息检索领域的应用, 我们看到利用大数据平台的分布式能力, 强大的业务整合能力, 给我们的信息检索带来很大的业务和技术上的便利.

数据是一个企业最重要的资产之一, 如何利用数据价值变得越来越重要. 一个优秀的大数据平台的建设是一个重要的前提. 大数据平台越来越像一个企业的数据总线: 是所有数据的入口, 同时也是所有数据的出口. 像很多企业正在努力的一样, 我们希望能够构建一个灵活可靠的数据仓库. 它像一个企业的基础设施一样, 我们可以利用它提供的数据上, 工具上的服务来搭建我们需要的数据平台, 满足业务需求.

关于作者

洪斌, 有赞大数据团队负责人, 专注大数据和数据挖掘相关技术. 欢迎交流.

来自为知笔记(Wiz)

时间: 2024-10-06 00:07:32

有赞大数据实践: 敏捷型数据仓库的构建及其应用的相关文章

大数据实践:ODI 和 Twitter (二)

大数据实践:ODI和Twitter(二) 在前面的文章中,我们已经使用flume将数据从twitter抓取到Hive中,现在我们来看看ODI(Oracle Data Integrator)如何在HIVE表中进行逆向工程,打开HIVE模型,然后在逆向工程中选择“新的数据存储”及待逆向的对象,如下: 逆向工程完成之后,得到如下的元数据信息: 上面的操作步骤与普通的关系型数据库一样,没有特殊之处,ODI可以对HIVE的表进行逆向工程,使用RKM Hive, RKM HBase, IKM File to

大数据系列之数据仓库Hive原理

Hive系列博文,持续更新~~~ 大数据系列之数据仓库Hive原理 大数据系列之数据仓库Hive安装 大数据系列之数据仓库Hive中分区Partition如何使用 大数据系列之数据仓库Hive命令使用及JDBC连接 Hive的工作原理简单来说就是一个查询引擎 先来一张Hive的架构图: Hive的工作原理如下: 接收到一个sql,后面做的事情包括:1.词法分析/语法分析 使用antlr将SQL语句解析成抽象语法树-AST2.语义分析 从Megastore获取模式信息,验证SQL语句中队表名,列名

大数据系列之数据仓库Hive安装

Hive主要分为以下几个部分 ?户接口1.包括CLI,JDBC/ODBC,WebUI元数据存储(metastore)1.默认存储在?带的数据库derby中,线上使?时?般换为MySQL驱动器(Driver)1.解释器.编译器.优化器.执?器Hadoop1.?MapReduce 进?计算,?HDFS 进?存储 前提部分:Hive的安装需要在Hadoop已经成功安装且成功启动的基础上进行安装.若没有安装请移步至大数据系列之Hadoop分布式集群部署. 使用包: apache-hive-2.1.1-b

大众点评的大数据实践-CSDN.NET

大众点评的大数据实践-CSDN.NET 大众点评的大数据实践 爬虫工程师成大数据时代的"宠儿" - 杭州新闻中心 - 杭州网 爬虫工程师成大数据时代的"宠儿"

我的大数据实践之路-洗脑篇

1. 什么是大数据 五个简单故事告诉你什么是"大数据" 2.如何看待大数据 要全体不要抽样,要效率不要绝对精确,要相关不要因果 3.大数据能干什么 通过用户的使用习惯来预判用户的行为 4.大数据应用场景 我的大数据实践之路-洗脑篇

大数据实践总结--两个故障的处理及思路总结

已经有一段时间没有更新实践内容了,不是因为没有在学习.而是工作上出现一个新的挑战,又在忙论文查重,论文也是大数据方向的,主要是ICT方向的一个技术(若有人感兴趣,我会另开一个帖子来详细谈这个内容). 而且最近,把之前所有的实践环境换了一台电脑来重新搭建.按理说会很顺利,但没想到,还是出了许多问题.一些简单的问题就直接解决了,但仍是有两个大的故障,一直到今天下午才全部都解决了.现总结如下,为以后也能更好的学习使用. 故障一:虚拟机上虚拟适配器不能链接到主机的网络 故障现像: 在将原来的虚拟机整体复

中国的大数据实践

在中国,由各级政府主导的大数据计划已不是独立零散存在的试验田,而是处于全面进行时的生动实践.推动大数据相关产业发展和应用示范,正在成为各地抢占新一轮经济和科技发展制高点的重大战略,成为增强区域竞争力的前沿. 广东省是率先在全国推行大数据战略的省份.2012年年底,广东省制定了<广东省实施大数据战略工作方案>,提出启动大数据战略,计划采用行政搜集.网络搜取.自愿提供.有偿购买等多种方式拓宽数据搜集渠道;在政府各部门开展数据开放试点,通过部门网站向社会开放可供下载和分析使用的数据,进一步推进政务公

[转]携程大数据实践:高并发应用架构及推荐系统案例

本文来自携程技术中心基础业务研发部的<应用架构涅槃>系列分享.据基础业务研发部负责人李小林介绍,互联网二次革命的移动互联网时代,如何吸引用户.留住用户并深入挖掘用户价值,在激烈的竞争中脱颖而出,是各大电商的重要课题.通过各类大数据对用户进行研究,以数据驱动产品是解决这个课题的主要手段,携程的大数据团队也由此应运而生:经过几年的努力,大数据的相关技术为业务带来了惊人的提升与帮助.以基础大数据的用户意图服务为例,通过将广告和栏位的“千人一面”变为“千人千面”,在提升用户便捷性,可用性,降低费力度的

大数据实践总结---一点思考

本文算是一个阶段总结吧!总算是把MapReduce给搞完了.细想这三周来的收获,可能除了代码,更多的是逻辑上的提高吧!下边就以之前只会理论时的一些问题来开启本文吧! 1,大数据架构师,产品经理需要写代码吗? 需要,只不过写代码的程度不同.大数据架构师要详细了解大数据的各个模块功能,相关的接口参数.可以说,架构师要对代码有很详细的了解.大数据的相关工作中,架构,开发,运维都需要写代码.但每个人写的代码内容也不相同.对于一个IT公司来说,这三块主要是主开发人员,对代码经验都有很大要求. 产品经理,主