大数据的OLAP技术

在互联网的技术浪潮冲击下,不少传统企业也纷纷涉水大数据技术。以笔者经历的两个项目为例,传统企业与互联网公司相比有两个特点:

  1. 企业应用比较笨重和复杂,云计算等基础架构平台,互联网需要的是水平规模化扩展,但对传统企业来讲,更需要的是垂直一体化部署复杂的依赖并且方便重用;
  2. 企业数据,包括关系型的交易数据、日志、文档、电子邮件等等,但总体还是结构化数据占多数;互联网则是非结构化数据为主,如网页、图片、服务器日志等,在网页搜索或广告推荐等领域,高维数据分析比较常见。
    和企业私有云的架构一样,对企业的大数据平台,我们很难直接去简单复制互联网的海量存储或计算平台技术,如Hadoop、HBase、Spark;因为这些技术搭建的只是一个数据的基础设施,要在传统企业实施“大数据平台”,我们的思路是,如何将传统的商业智能运行在“大数据平台”之上。

OLAP - 联机分析

OLAP联机分析是从多维信息、针对特定问题的联机数据进行访问和分析的技术。从分析的角度出发,数据源需提供以下操作支持:

  • 维度和指标
  • 聚合
  • 上卷、下钻
  • 水平、垂直切分
  • 排序
    下面是一个数据表示例:


























































    DateCountryCityOSBrowserSale
    2014-01-23ChinaBeijingOSXChrome0.0
    2014-01-24ChinaShanghaiWindowsIE88.0
    2014-01-24ChinaBeijingOSXSafari20.0
    2014-01-25ChinaChengduLinuxChrome12.0
    2014-01-26ChinaBeijingWindowsFirefox30.0
    5 visits
    4 days
    1 country
    China: 5
    3 cities:
    Beijing: 3
    Shanghi: 1
    Chengdu: 1
    3 OS-es
    Windows:2
    OSX:2
    Linux:1
    3 browsers
    Chrome:2
    Firefox:1
    IE8:1
    Safari:1
    70.0
    4 sales

上卷至Country维度

SELECT COUNT(visits), SUM(sales) GROUP BY country














CountryVisitsSales
China5$70

根据Browser拆分

SELECT COUNT(visits), SUM(sales) GROUP BY country HAVING browser = “Chrome”














CountryVisitsSales
China2$12

查询Sales最高的Browers

SELECT SUM(sales), COUNT(visits) GROUP BY browser ORDER BY sales

Browser

Sales

Visits

Firefox

$30

1

Safari

$20

1

Chrome

$12

2

IE8

$8

1



通常OLAP的多维数据源由数据方(Cube)提供,关系型数据库或数据仓库都能提供数据方的设计,相对于数据库,数据仓库是昂贵的软硬件解决方案,而互联网普遍采用基于Hadoop技术构建的海量数据处理平台,在这里是否可以作为数据仓库的替代品呢?其核心技术还是,如何基于Hadoop来构建数据方。

Pre-aggregate - 预聚合数据

对数据库来说,数据聚合通常是实时的。实时聚合的好处是灵活,可以对任意列进行查询,缺点是CPU、I/O开销较大,数据量大时查询缓慢,吞吐量低;而对Hadoop这样的非实时计算、大量数据处理的平台来说,很适合对数据进行预聚合处理,预聚合的优点是查询快速高效,但缺点是无法灵活查询,比如未进行聚合处理的数据。

在基于Hadoop进行预聚合处理上,Adobe提供了一些经验:

  1. 数据表设计需要规范
  2. 超过3个维度、10亿条数据时处理会变得复杂
  3. 维度表之间尽量不要有相关关系
  4. 只创建必须的索引

领域模型设计

这个步骤的目的是理解数据并且构建出领域模型,包括:

  • 源数据如何拆分到不同字段中?
  • 哪些字段用于维度?
  • 哪些字段用于统计指标?
  • 使用什么样的规则来对数据进行聚合?
  • 用户经常使用的组合查询是?
  • 排序规则?
    下面是Adobe SiteCatalyst的设计参考,源数据是一条日志,使用reports.json来描述整个设计:
    屏幕快照 2015-02-07 下午4.56.05

数据采集优化策略

对历史数据,采用大量数据批处理来提高吞吐量,对新增的增量数据,尽量达到低延时查询。一些优化策略包括:

对输入进行条件过滤:

  • FileDateFilter (log name patterns: log-YYYY-MM-dd-HH.log)
  • TableInputFormat start/stop row
  • File Index in HBase (track processed/new files)
    提升Map的任务数:

  • CombineFileInputFormat - 2GB-splits => 500 splits for 1TB

  • FixedMappersTableInputFormat (e.g. 5-region splits)

数据处理

数据处理的过程包括读取源数据、预聚合并且生成可供查询的数据表,对OLAP而言,需要对数据进行以下处理:

  • GROUP BY
  • COUNT, SUM, AVG
  • SORT
  • HAVING - 需进行预聚合
    以下是Adobe在线数据处理设计和SQL查询的映射:

屏幕快照 2015-02-07 下午5.22.36

在reports.json中定义了触发各个处理的类:

屏幕快照 2015-02-07 下午5.23.50

 

整个处理过程如下:

屏幕快照 2015-02-07 下午4.58.12

© 2018 Silent River All Rights Reserved. 本站访客数人次 本站总访问量
Theme by hiero