文章目录
一. 大数据概览
什么是大数据 ?所谓的 “大” 实际上并不是大数据的最有趣的特征 。大数据是结构化、 半结构化、非结构化以及众多不同格式的原始数据 ,某些情况下 ,它看起来与您 30 多年来 在数据仓库 中存储的清楚的标量数字和文本存在巨大差异 。多数大数据不能用任何看起来 类似 SQL 的方法来分析 。但最重要的是 ,大数据是一种模式的转变 ,涉及如何考虑数据资产、从何处获取 、如何分析它们以及如何从分析中获得有价值的知识 。
从大量的用例中积聚了动力的大数据运动,可划分到大数据分析的类别中 。这些用例 包括:
• 搜索排序
• 广告跟踪
• 位置与距离跟踪
• 因果关系发现
• 社会化客户关系管理(CRM)
• 文档相似性测试
• 基因分析
• 群组发现
• 飞机飞行状态
• 智能测量仪表
• 建立传感器
• 卫星图像分析
• CAT扫描比较
• 金融账户欺诈检测与干预
• 计算机系统黑客检测与干预
• 在线游戏姿态跟踪
• 大型科学数据分析
• 通用名称值对分析
• 贷款风险分析及保单承保分析
• 客户流失分析
考虑到潜在用例的广泛程度 ,本章主要关注处理大数据的结构化方法 ,以及我们推荐 使用的最佳实践 ,并不专门考虑每个用例的维度设计 。
传统的 RDBMS 和 SQL 几乎无法存储或分析此类范围广泛的用例 。要实现对大数据的综合处理 ,系统需要具备如下能力 :
(1) 方便处理 PB(1000TB)数据的能力 。
(2) 包含多达数千个分布的处理器,地理不同,且异构 。
(3) 以原始的获取格式存储数据,支持查询和分析应用而不需要转换或移动数据 。
(4) 以亚秒级响应时间响应高约束的标准 SQL 查询。
(5) 在处理请求中方便地嵌入复杂的用 户自定义函数 (User-Defined Function , UDF) 。
(6) 采用业界标准的过程语 言来实现 UDF 。
(7) 组装跨多数或所有用例的可重用 UDF 扩展库。
(8) 在几分钟内 ,以关系扫描方式对 PB 级别数据集执行用户自定义函数 。
(9) 支持范围广泛的数据类型包括越来越多的图像 、波形 、任意层次的数据结构以及 名称 值对集合 。
(10) 为数据分析高速加载数据 ,至少达到 GB 级别每秒。
(11) 从多个数据源高速(GB/sec)加载数据以集成数据。
(12) 在定义或发现其结构前加载数据 至数据库。
(13) 实现对加载数据的实时数据流分析查询 。
(14) 全速更新数据 。
(15) 不必预先聚类维度表和事实表 ,实现 卡亿级别的维度表与万亿级别事实表的连接 。
(16) 调度和执行复杂的上百个节点的 工作流。
(17) 配置工作不会受到单点故障的影响 。
(18) 在节点发生错误时能够实现容错和不间断过程 。
(19) 支持极端的 、混合的工作负载 ,包含数千个地理分布的在线用户和程序,同时执行即席查询和战略分析,以批处理和流处理方式加载数据 。
为实现这些具有挑战性的问题 ,需要将两种结构融合 ,这两种结构是 :扩展的 RDBMS和 MapReduce/Hadoop 。
1.1 扩展的 RDBMS 结构
当前 RDBMS 提供商对经典的关系数据类型进行了扩展 ,增加了一些处理大数据需要的新数据类型,如下图所示:
现在的 RDBMS 必须扩展以便能够加载和处理包含复杂结构的广泛的数据类型 ,例如向量、矩阵和自定义超结构数据 。RDBMS 需要支持加载和处理无结构和半结构文本 ,以及图像、视频、名称,值对集合 ,有时将其称为 数据包。
但是支持类似 “ 二进制大数据文件” 这样的仅仅能够在可解释这些数据的 BI应用之后 交付的新数据类型 ,对RDBMS 来说仍然是不够充分的 。要真正拥有大数据 ,RDBMS 必须允许在数据库管理系统内部循环中 ,利用特定的由业务用户分析人员编写的用户自定义函 数(UDF)处理新数据类型 。
最后 ,有意义的用例是通过 RDBMS 处理数据两遍,第 1 遍通过 RDBMS 从原始数据 中获取事实,第2 遍将获取的结果作为传统的关系行 、列和数据类型,自动反馈到RDBMS 。
1.2 MapReduce/Hadoop 结构
另外一种结构是 MapReduce/Hadoop 结构,它是一种开放源代码的 ,包含定量组件的 Apache顶级项目 。MapReduce 是一种 由 Google 在 2000 年初开发的处理框架 ,主要用于从大量不同机器中搜索 Web 页面 。MapReduce 方法具备良好的通用性 。完整的 MapReduce 系统可以用多种语言实现 ,最著名 的实现是通过 Java 实现的 。MapReduce 实际上是一种 UDF 扩展框架 ,其中的 “ 函数” 可 以非常复杂 。目前最常见的 MapReduce 框架是 Apache Hadoop ,简称为 Hadoop 。 Hadoop 项目有大量的参与者 ,并运用于所有的应用中 。Hadoop 运行在其 Hadoop 分布式文件系统 (Hadoop Distributed Fi le System, HDFS)之上 ,也能够被 Amazon S3 和其他系统所理解 。传统的数据库提供商实现了与 Hadoop 的接口,允许大量的Hadoop 任务通过接口在其数据库之上运行大量的分布式实例。
注意:
关于MapReduce/Hadoop 结构更详细的讨论已超出了本书的范围 。有兴趣的读者可以访问网站 www.kimballgroup.com ,以获得更多有 关 大数据的资源 。