企业级大数据存储、分析平台:IBM InfoSphere BigInsights 3.0 新功能介绍

本文主要介绍 IBM 对大数据的理解、Hadoop、NoSQL 数据库、BigInsights 3.0 新特性(如 Big SQL 3.0 和 Solr 等)、BigInsights 3.0 各种优势组件(如企业集成、GPFS、Adaptive MR、BigSheets、高级文本分析、改进的工作负载调度和压缩等)。

程 永, 大数据顾问, IBM

photo of chengyong程永,在大数据管理、业务分析、数据仓库、数据治理、元数据管理、主数据管理和信息集成等领域具有丰富的经验,在政府、金融、烟草和能源电力等行业支持过许多大型项目,在 IBM 开发者园地(IBM developerWorks)和 IT168 网站等撰写过 41 篇专业文章,并出版过《智慧的分析洞察》和《DB2 V9 权威指南》2 书(电子工业出版社)。



2014 年 8 月 14 日

什么是大数据

大数据(Big Data)是指无法使用传统流程或工具在合理的时间和成本内处理或分析的信息,这些信息将用来帮助企业更智慧地经营和决策。其中合理的成本很重要,如果不考虑成本的话,完全可以将更多的原始、半结构化和非结构化数据装入到关系型数据库或数据仓库,考虑到对这些数据进行全面质量控制所要花费的成本,会让绝大多数企业望而却步。世界在不停的改变,通过物联化,我们能够感知到更多的事物,并且尝试去存储这些事物。由于通信的进步,人们和事物变得更加互联化。互联化也被称为机器间互联 (Machine-to-Machine,M2M),正是 M2M 导致了年均数据增长率达到两位数。同时,随着小型集成电路的价格越来越便宜,我们可以向几乎所有事物添加智能化。在各行各业中,随处可见因数量、速度、种类和准确性结合带来的大数据问题,大数据时代已经来临。

可以用 4 个特征来定义大数据:数量(Volume)、速度(Velocity)、多样性/种类(Variety)和准确性(Veracity)。这些特征简称为 4V,构成了 IBM 所称的“大数据”。IBM 大数据平台可以帮助企业解决各种因数量、速度、种类和准确性相结合产生的大数据问题,帮助企业推动大数据工作,并从大数据中获取最大价值。

  • 数量(Volume):数据容量超大是大数据的首要特征,当前企业为提高整个企业决策所需利用的数据量庞大,并且正在以前所未有的速度持续增加,数据量从原有 TB 级发展到 PB 甚至 ZB 级。预计在 2020 年,全球信息量将会达到 35 万亿 GB(即 35ZB),仅 Facebook 每天就会产生超过 10TB 数据,某些企业每小时就会产生数 TB 数据。当然,当今创建的很多数据都完全未经分析。
  • 速度(Velocity):大数据的第二个特征是速度快。数据产生、处理和分析的速度在不断地加快,很多数据产生的速度快到让传统系统无法捕获、存储和分析,比如视频监控、语音通话和 RFID 传感器等持续的数据流。
  • 多样性/种类(Variety):大数据的第三个特征就是种类多,随着无线感知设备、监控设备、智能设备以及社交协作技术的激增,企业中的数据也变得更加复杂,不仅仅包含传统关系型数据,还包含 Web 日志、网页、搜索索引、帖子、电子邮件、文档、传感器数据、音频、视频等原始、半结构化和非结构化数据。传统系统很难存储和执行必要的分析以理解这些数据的内容,因为很多信息不适合传统的数据库技术。也就是说,种类表示所有类型的数据,数据源可能来自企业内部或外部。
  • 准确性(Veracity):主要关注和管理数据、流程和模型的不确定性,虽然数据治理可以提高数据的准确性、一致性、完整性、及时性和参考性,但无法消除某些固有的不可预测性如客户的购买决策、天气或经济等。管理不确定性的方法通常有数据融合(如依靠多个可靠性较低的数据源创建一个可靠性更高的数据点)和利用数据方法(如优化技术和模糊逻辑方法)等。
  • 另外,大数据管理还需要重点关注安全和隐私问题(特别是数据收集涉及到个人时,通常会出现一些涉及伦理、法律或保密方面的问题)等。

大数据就像一座金矿一样,矿的品位不是很高,但蕴含的黄金总量很可观,如何快速低成本地对该矿山进行开采就是大数据管理所面临的主要挑战。开采大数据这座矿山的过程中,需要提炼出高价值的黄金(高价值数据),丢弃没有用的泥土和矿渣(低价值数据、数据废气或噪音)。企业无法承担传统系统对所有可用数据进行筛选的成本,太多的数据具有太少的已知价值和太高的冒险成本,随着业务的发展,潜在的数据金矿堆积成山,企业可处理的数据比例正在快速下降。

针对高价值的结构化数据企业通常会执行严格的数据治理流程,因为企业知道这些数据具有很高的每字节已知价值,所以愿意将这些数据存储在成本较高的基础架构上(即每计算成本较高),同时愿意对数据治理进行持续投资,以进一步提升每字节价值。使用大数据则应该从相反的视角考虑这个问题,因为基于目前数据的数量、速度和多样性,企业往往无法承担正确清理和记录每部分数据所需的时间和资源,因为这不太经济。由于未经分析的原始大数据通常拥有较低的每字节价值,使用较低成本的基础架构存储和分析这些数据更加合适。Hadoop 平台可以以跨廉价机器和磁盘进行大规模扩展,通过内置在环境中的冗余性,有效地解决了廉价基础设施易损坏的问题。针对很多大数据产生的速度非常快,时效性比较短的特点,可以通过对流数据采用移动分析和对静止大数据采用静止数据分析相结合的方式进行。大数据对数据存储格式没有明确要求(和传统系统不一样),可以保留数据的真实性,是未预定义数据的业务度量指标时进行迭代式和探索式分析的理想选择。

通常数据需要经过严格的质量控制才能进入关系型数据库或数据仓库,相反,大数据存储库很少(至少在最初)对注入到仓库中的数据实施全面的质量控制,因此关系型数据库或数据仓库中的数据可得到企业的足够信赖,而 Hadoop 中的数据则未得到这样的信赖(未来可能有所改变)。在传统系统中,特定的数据片段是基于所认识到的价值而存储的,这与 Hadoop 中的存储模式不同,在 Hadoop 中经常会完整的存储业务实体如日志、事务、帖子等,其真实性也会得到完整的保留。Hadoop 中的数据可能在目前看起来价值不高,或者其价值未得到量化,但实际上可能是解决业务问题的关键所在。

综上所述,企业级 Hadoop 并不是要取代关系型数据库或数据仓库,而是对关系型数据库或数据仓库的一种有效补充。关系型数据库或数据仓库中的数据经过了全面的数据治理,其数据质量值得信赖,并且通常有明确的服务水平协议(SLA)要求,而大数据存储通常比较少实施全面的质量控制,数据质量不如传统系统那么值得信赖,同时企业级 Hadoop 的重点也不在响应速度上,因为其不是在线事务处理(OLTP)系统,而是针对批处理作业。当企业发现部分大数据具有明确的价值时(且价值得到证明以及可持续),可以考虑将其迁移到关系型数据库或数据仓库中。


Hadoop 介绍

Apache Hadoop 1.0 主要由 Hadoop 分布式文件系统(Hadoop Distributed File System,HDFS)、并行计算框架 MapReduce 以及 Hadoop Common 组成。Hadoop 支持对海量大数据进行分布式处理,可以部署在大量低端基础架构(低端刀片服务器和存储等)上,通过维护多个数据副本实现数据容错性,高度可伸缩,能够以并行方式处理 PB 级甚至 ZB 级数据。

Hadoop 分布式文件系统(HDFS)对 Hadoop 集群提供高可靠的底层存储支持,由 1 到多个 NameNode 节点和大量的 DataNode 节点组成。NameNode 在 HDFS 内部提供元数据服务来执行数据分发和复制,DataNode 节点为 HDFS 提供存储块(HDFS 中的文件将被分成块,复制到多个计算机中,也就是 DataNode,块默认大小是 64MB)。MapReduce 并行计算框架是 Hadoop 的核心,基于 map(映射)和 reduce(化简)编程人员可以非常容易的将程序运行在分布式系统上,实现了跨越一个 Hadoop 集群数百或数千台服务器的大规模扩展性。map 作业用来将一组输入数据转换成另一组数据,其中每个元素被分解成多个元组/键值对(Key/Value Pair),reduce 作业将 map 作业的输出作为输入,并将那些数据元组组合成较小的元组集。Job Tracker 是 MapReduce 框架的中心,其需要与集群中的机器定时通信 (heartbeat), 需要管理哪些程序应该跑在哪些机器上,需要管理所有作业失败、重启等操作。

当客户端向 Hadoop 集群某个节点提交请求时,Hadoop 会启动一个 JobTracker 进程并与 NameNode 通信找到该作业所需数据对应的存储位置,将作业分解成多个 map 和 reduce 任务并将其安排到一个或多个 TaskTracker 上的可用插槽中。JobTracker 会尽量在数据存储位置安排任务,通常被称为“数据局部性”。一个节点得到的任务,其所需的数据可能不在该节点,此时需要通过网络发送该节点需要的数据,然后才能执行该任务,当然这种方法效率并不高,JobTracker 会试图避免这种情况,尽量将任务分配到该任务数据所在节点上。数据局部性在大量处理数据时非常重要。TaskTracker 与 DataNode 一起对来自 DataNode 的数据执行 Map 和 Reduce 任务。当 Map 和 Reduce 任务完成时,TaskTracker 会告知 JobTracker,后者确定所有任务何时完成并最终告知客户作业已完成。Hadoop 集群中 TaskTracker 守护进程还负责监控每个任务的状态,如果某任务无法完成,TaskTracker 会将失败状态传递给 JobTracker,JobTracker 将该任务重新安排到集群中其他节点进行。(可以规定整个作业被取消前,该任务尝试的次数)

MapReduce v1 架构简单明了,在最开始的几年获得了业内广泛的认可和支持,但随着集群规模和工作负载的快速增加,其在架构层面存在的不足渐渐显现出来,如:

  1. JobTracker 承载的压力过大,当 Hadoop 集群节点数超过 4000 时,就会表现出一定的不可预测性,比如当 MapReduce 作业非常多的时候,会造成大量的内存开销,增加了 JobTracker 失败的风险,比如发生级联故障时,由于要尝试复制数据和重载活动的节点,所以通常一个故障会通过网络泛洪形式导致整个集群严重恶化等等;
  2. TaskTracker 对资源的控制过于简单,仅仅以 Map 和 Reduce 任务数量作为资源的表示,并没有考虑到 CPU、内存等的占用,所以当两个耗费内存比较多的任务被调度在一起时就容易出现问题;
  3. 另外 MapReduce 还存在着 Hadoop MapReduce 框架有任何变化都会强制进行系统级别升级更新、源代码任务不清晰等多种问题。

为了解决 MRv1 在可扩展性、内存消耗、线程模型、可靠性和性能上的缺陷,在 MapReduce2.0 中采用了新的分层集群框架模式,新版本的 MapReduce2.0 被称为 YARN 或 MRv2。相比于 MRv1,JobTracker 和 TaskTracker 已从 YARN 中删除,取而代之的是一组对应用程序不可知的新守护程序,YARN 分层框架向新的处理模型开放。

如图 1 所示,在新的 YARN 架构中 ResourceManager 负责管理整个集群并分配基础计算资源(如 CPU、内存、带宽等)给各个应用程序,主要包含两个组件:Scheduler 和 ApplicationsManager。Scheduler 负责给应用程序分配资源,其只负责调度资源,但不监控和跟踪应用程序的状态,也不负责重启应用程序或硬件故障造成的失败。ApplicationsManager 负责接收作业提交,将应用程序分配给具体的 ApplicationMaster,并负责重启失败的 ApplicationMaster。每个 slave 结点都有一个 NodeManager,NodeManager 是 YARN 在每节点的框架代理,负责管理抽象容器并监控容器的资源使用情况,同时向 ResourceManager/Scheduler 汇报。MRv1 通过插槽管理 Map 和 Reduce 任务的执行,而 NodeManager 则管理抽象容器,这些容器代表着可供一个特定应用程序使用的针对每个节点的资源。ApplicationMaster 是一个详细框架库,负责管理在 YARN 内运行的应用程序的每个实例。ApplicationMaster 负责向 ResourceManager 的 Scheduler 请求适当的资源容器,协调来自 ResourceManager 的资源并结合 NodeManager 运行和监控任务、监视容器的执行和资源使用情况等。简单来说,ApplicationMaster 可以视为承担了 MRv1 TaskTracker 的一些角色,ResourceManager 则承担了 JobTracker 的角色。在 Hadoop 2.0 中,YARN 继续使用 Hadoop 分布式文件系统(HDFS),其 NmaeNode 用于元数据服务,DataNode 用于分散在一个集群中的复制存储服务。

图 1. YARN 架构
图 1. YARN 架构

NoSQL 介绍

NoSQL 作为下一代的数据库,主要解决以下要点:非关系型的、分布式的、开源和水平扩展。NoSQL 的初衷是成为现代网络规模的数据库。NoSQL 一词最早出现于 1998 年,是 Carlo Strozzi 开发的一个轻量、开源和不提供 SQL 功能的关系数据库。NoSQL 运动正式开始于 2009 年初,并迅速发展起来。NoSQL 通常具有以下特征:模式自由(schema-free)、支持简易复制(easy replication support)、简单 API(simple API)、最终一致性(eventually consistent)/BASE 模型(而不是 ACID 模型)、支持海量数据(huge amount of data)以及更多特征。所以,NoSQL 应该是上述定义的一个别名,更多的时候,社区现在将其翻译为"not only sql",而不是 No SQL。根据 nosql-database.org 统计,目前 NoSQL 数据库大约有 150 种,并可以分成 5 种类型:简单键值存储、列存储 Column Family(如 HBASE、Cassandra、Hypertable 等)、文档存储 Document Stores(如 MongoDB、CouchDB/Cloudant 和 RavenDB 等)、图形数据库 Graph Database 具体如图 2 所示:

图 2. 4 种 NoSQL 数据模式
图 2. 4 种 NoSQL 数据模式

CAP 定理

根据 CAP 定理(又被称为布鲁尔定理 Brewer's theorem),一个分布式计算系统来说,不可能同时满足一下三点:

  1. 一致性 (Consistency):所有节点数据在同一时点是相同的;
  2. 可用性 (Availability):保证每个请求都有响应(不管成功或失败);
  3. 分区容忍性/分区容错性 (Partition tolerance):系统中任意信息的丢失或失败不会影响系统的继续运行。

也就是说,分布式系统最多只能满足 CAP 理论三项中的两项,无法三项全部满足。对传统关系型数据库来说,高一致性和高可用性是重点,即传统关系型数据库追求的是 CA。对分布式系统来说,分区容错性是基本要求,通常放弃强一致性,采用弱一致性(最终一致性),比如对大型网站来说,分区容错性和可用性要求更高,一般会尽量朝着 AP 方向努力,这也可以解释为什么传统数据库的扩展能力有限的原因,同样也解释了 NoSQL 系统为什么不适合 OLTP 系统。

一致性

一致性主要包括强一致性、弱一致性和最终一致性三种:

  1. 强一致性:即时一致性。比如 A 用户写入一个值到存储系统,A 用户和其他任何用户读取都将返回最新值。
  2. 弱一致性:比如 A 用户写入一个值到存储系统,系统不能保证 A 用户以及其他用户后续的读取操作可以读取到最新的值。此时存在存在不一致时间窗口概念,不一致时间窗口是指从 A 写入值到后续用户操作读取到该最新值的时间间隔。
  3. 最终一致性:弱一致性的特例。比如 A 用户写如一个值到存储系统,如果之后没有其他人更新该值,那么最终所有的读取操作都会读取到 A 写入的最新值。不一致时间窗口取决于交互延迟、系统负载以及复制技术中复制因子的值。

另外,一致性还存在一系列变体,比如 Causal consistency(因果一致性)、Read-your-writes consistency、Session consistency、Monotonic read consistency 和 Monotonic write consistency 等。

ACID 模型

ACID 模型是关系型数据库为保证事务正确执行所必须具备的的四个基本特征,即原子性/不可分割性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。

  1. 原子性:一个事务中所有的操作要不全部完成,要不全部失败,不允许在中间某个环节结束。如果在执行过程中出现错误,事务会被回滚到开始前的状态。
  2. 一致性:在事务开始之前和结束之后,数据库的完整性没有被破坏。
  3. 隔离性:当两个或两个以上并发事务访问数据库同一数据时所表现出的相互关系。隔离级别分为不同的级别,比如在 DB2 中分为可重复的读(Repeatable Read)、读稳定性(Read Stability)、游标稳定性(Cursor Stability)和未提交的读(Uncommitted Read)。
  4. 持久性:当事务完成后,事务对数据库进行的更改将持久地保存在数据库之中,并且是完全的。

目前主要有两种方式实现 ACID,第一种是预写日志(Write ahead logging),第二种是影子分页技术(Shadow paging)。

BASE 模型

BASE 模型是指基本可用(Basically Available),软状态(Soft state)和最终一致性(Eventual consistency)。BASE 模型是 ACID 模型的反面,强调牺牲高一致性,从而获得高可用性。基本可用是指通过 sharding 允许部分分区失败。软状态是指异步,允许数据在一段时间内不一致,只要保证最终一致就可以了。最终一致性是 NoSQL 的核心理念,是指数据最终一致就可以了,不需要保持时时一致。

MoreSQL / NewSQL

与 NoSQL 运动相对应的是 MoreSQL / NewSQL 运动。NewSQL 是指这样一类新式的关系型数据库管理系统,针对 OLTP(读-写)工作负载,追求提供和 NoSQL 系统相同的扩展性能,且仍然保持 ACID 和 SQL 等特性(scalable and ACID and ( relational and / or sql –access ))。NewSQL 一词最早出现在 451 Group 分析师 Matthew Aslett 在 2011 年的研究论文中,在该论文中主要探讨新崛起的、对现有数据库厂商做出挑战的新一代数据库系统。很多企业级系统需要处理确定范围的数据(比如财务和订单处理系统),并保持良好的伸缩性。这些系统无法使用 NoSQL 解决方案,因为这些系统无法放弃强事务性和一致性需求。在 NewSQL 之前,这些组织只能采取以下方式提高交易型关系数据库性能:

  • 购买一台更强大的单节点服务器,以及 RDMS 产品版本
  • 购买多台服务器构建 share disk 集群模
  • 开发定制的中间件层,提供动态路由服务,以便应用服务器可以访问特定的数据库节点(即采用分库模式,在数据库之前需要有一个中间层提供动态路由服务)

第一种方式扩展能力有限,不能很好的满足更高扩展性的要求,第二种方式相比第一种方式可以提供更高的扩展性,但是受限于存储和 IO,扩展性受限,第三种方式可以提供很好的扩展性,但是需要对业务非常熟悉以便准确分库,分库模式会使业务系统复杂度大幅提高,成本高昂。而 NewSQL 则试图在保持 ACID 和 SQL 的基础上提供和 NoSQL 相同的扩展性。


InfoSphere BigInsights 3.0 介绍

如图 3 所示,IBM 在 Hadoop 开源框架的基础上进行了大量的开发和扩展,陆续将丰富的高级文本分析(Advanced Text Analytics Toolkit,研发代码 SystemT)、机器学习(Machine Learning Toolkit,研发代码 SystemML)、GPFS File Place Optimizer(GPFS-FPO)、IBM LZO 压缩、针对 Jaql 的 R 模块扩展、改进的工作负载调度(Intelligent Scheduler)、自适应 MapReduce(Adaptive MapReduce)、基于浏览器的可视化工具(BigSheets)、大规模索引、搜索解决方案构建框架(BigIndex)、统一的 SQL 接口(BigSQL)、大规模并行处理 SQL 引擎(MPP SQL Engine,IBM Big SQL)等纳入到 InfoSphere BigInsights 中,并增强了高可用性、可扩展性、安全性、性能、易用性、监控和告警等,通过支持 LDAP 身份验证增强安全性(另外还能够提供可插拔身份验证支持,支持 Kerberos 等其他协议),构建了一个完整的企业级大数据平台。该平台为开发人员提供了全面的开发和运行时环境来构建高级分析应用程序,为企业用户提供了完善的分析工具来分析大数据,从而使与大数据分析相关的时间价值曲线变平。

图 3. InfoSphere BigInsights 企业版组件
图 3. InfoSphere BigInsights 企业版组件

点击查看大图

图 3. InfoSphere BigInsights 企业版组件

图 3. InfoSphere BigInsights 企业版组件

InfoSphere Biginsights 是企业级的海量大数据存储和分析平台,支持对结构化、半结构化和非结构化海量数据的存储和快速分析,提供多节点的分布式计算,可以随时增加节点提升数据处理能力,通过集成的安装程序简化安装流程,通过与 IBM 数据分析软件的深度集成为企业用户提供强大的分析能力,并提供开放性接口和集成能力。Biglnsights 作为基于企业级的海量大数据存储和分析平台,并不是对数据仓库的替代,而是对传统数据仓库的一种补充和延伸,和数据仓库一起构成了更广泛的大数据平台。BigInsights 以 Apache Hadoop 及其相关开源项目作为核心组件,IBM 将继续保持开源项目的完整性,防止与核心分离或偏离,BigInsights 3.0 中 Hadoop 开源组件所对应的版本如表 1 所示:

表 1. BigInsights 开源组件对应版本
ComponentBigInsights 2.1BigInsights 2.1.2BigInsights 3.0
Hadoop 1.1.1 2.2.02.2.0
HBase 0.94.3 0.96.00.96.0
Hive 0.9.0 0.12.00.12.0
Pig 0.10.0 0.12.00.12.0
Zookeeper 3.4.5 3.4.5 3.4.5
Oozie 3.2.0 3.3.2 3.3.2
Hcatalog 0.4.0 Now part of Hive 0.12.0 Now part of Hive 0.12.0
Sqoop 1.4.2 1.4.3 1.4.3
Flume 1.3.0 1.3.1 1.3.1
JAQL 2.0.0 2.0.0 2.0.0
Lucene 3.3.0 3.3.0 4.7.0
Solr NA NA 4.7.2.1
Avro 1.7.2 1.7.2 1.7.4

Big SQL 3.0

IBM Big SQL 3.0 是一个大规模并行处理 SQL 引擎(MPP SQL Engine),可以直接部署在物理的 HDFS 集群上。通过使用一个低延时并行执行基础架构,并将处理操作放在数据所在的节点,Big SQL 3.0 实现了 native 方式的 Hadoop 数据访问,包括读和写操作。Big SQL 3.0 数据库基础架构提供一个所有数据的逻辑视图(通过 Hive 元数据管理),查询编译视图,以及为最优的 SQL 处理提供优化和运行时环境。针对复杂嵌套的决策支持查询,Big SQL 3.0 专门做了优化处理。Big SQL 3.0 接口完全支持 SQL 2011 标准、支持存储过程、用户自定义函数、广泛的数据类型、JDBC/ODBC 接口等。

Big SQL 所有的数据都保持原有的格式存储在 Hadoop 集群中,Big SQL 对数据的格式没有特殊的要求,Hadoop 表的定义是由 Hive Metastore 定义和共享的,使用 Hadoop 的标准目录。Big SQL 共享 Hive 接口进行物理读取,写入和理解 Hadoop 中存储的数据。简单的来说,Big SQL 中没有任何的数据存储,数据是存放在 Hadoop 集群中的,在 Big SQL 中定义的表实际上是一个在 Hive 中定义的表。通过 Apache HCatalog,Hive 中定义的表可以作为很多工具的有效数据源。最终,任何 Hadoop 应用程序都可以访问这些大规模共享的分布式文件系统中的简单文件。

Big SQL 即可以运行在 POWER Linux (Red Hat) 上,也可以运行在 x64 Linux 上如 Red Hat 和 SUSE Linux。

Big SQL 3.0 汇集了成熟高效的 IBM SQL 编译器和运行时引擎,通过与 Hive 数据库目录和 I / O 层一起工作,允许用户执行 SQL2011 标准的查询,并保证企业级的性能。通过引入 SQL PL 兼容性,Big SQL 3.0 相比 BigInsights 2.1 中 Big SQL 包含的功能,已经进行了大大的扩展,具体包括存储过程、SQL-bodied 函数和丰富的 scalar 库、表和 OLAP 函数等。

企业集成

图 4. 企业集成
图 4. 企业集成

如图 4 所示,通过 Big SQL 3.0 的联邦功能,用户可以对很多数据源如 DB2、Oracle、Teradata、IBM PureData System for Analytics(PDA)、IBM PureData System for Operational Analytics(PDOA) 等进行联邦访问。联邦功能允许用户在同一个 SQL 语句内给各个关系型数据源发送分布式的请求。通过 Big SQL 3.0 提供的丰富 SQL 功能,很多 BI 工具如 IBM Cognos BI、Microstrategy 和 Tableau 等可以方便的访问 Hadoop 集群中的数据并执行各种处理。

BigInsights 3.0 可以集成多种产品,支持与大量数据源进行数据交换(比如 DB2、Teradata、PureData for Analytics 等),更多的数据源可以通过 JDBC、InfoSphere Steams、InfoSphere DataStage 和 Sqoop 等进行数据交换,另外 BigInsights 支持与 IBM InfoSphere Data Explorer(Vivisimo)、InfoSphere Guardium、Cognos Business Intelligence、SPS Analytic Server、WAS 8.5 Liberty Profile 和 Rational & Data Studio 等集成。

BigInsights 可以和 InfoSphere Data Explorer(联邦发现和导航工具)进行索引和界面集成,通过索引可以实现联邦访问,通过界面集成用户可以方便的同时使用两个产品。另外,Cognos BI(特别是 Social Media Analysis)和 InfoSphere Streams 也和 BigInsights 进行了界面集成。通过连接器,BigInsights 可以和 PureData System for Analytics 进行双向数据交换,BigInsights 3.0 中包含 PureData System for Analytics UDFs,用户编写的 PureData System for Analytics 应用程序可以使用这些 UDF 访问大数据和运行大数据操作。同样通过高速连接器,BigInsights 可以并行访问 IBM DB2、Teradata、InfoSphere Warehouse、PureData System for Transactions 和 PureData System for Operational Analytics。通过 JDBC 连通性(Jaql 的 JDBC 接口),BigInsights 可以访问更多的数据源。

DataStage 除了改进与 HDFS 相关的集成,还新增了与通用 MapReduce 作业相关的集成,和 BigInsights 进行了紧密结合。BigInsights DataStage 连接器已经与 HDFS 和 GPFS-FPO 实现了全面的集成,可以充分利用集群架构的优势,以便将所有批量数据并行写入同一文件。通过与 DataStage 集成,BigInsights 可以成功和绝大多数软件产品实现快速数据交换。

通过 Hive 或 Big SQL 方便用户可以非常方便的在 Cognos BI 中使用存储在 BigInsights 中的数据。通过 R 包装器,BigInsights 3.0 可以帮助人们以集群方式运行 R 应用程序(BigInsights 则通过 Jaql 对 R Project 进行了扩展,使其可以分布式并行运行。用户可以基于 Jaql MapReduce 运行 R 查询)。在 BigInsights 3.0 中还包含与 WebSphere 8.5 Liberty Profile 集成,提供高性能、安全的 REST 访问。另外,BigInsights 3.0 还支持与 RAD 和 Rational Team Concert & Data Studio 协作和开发整合。

通过 IBM SPSS Analytic Server(IAS),用户可以方便的在 SPSS Modeler 客户端或者 SPSS Analyitc Catalyst 中基于 BigInsights 中的数据进行数据挖掘建模。

图 5. IAS 体系结构
图 5. IAS 体系结构

如图 5 所示,IBM SPSS Analytic Server 是处于客户应用程序和 Hadoop 集群中间的数据分析引擎。用户通过使用 SPSS Modeler 客户端或者 SPSS Analyitc Catalyst,将各种分析请求发送给 SPSS Analytic Server,SPSS Analytic Server 将协调作业将其运行在 Hadoop 集群并将结果返回给客户端应用程序。

针对 BigInsights 的审计和监控还可以使用 IBM InfoSphere Guardium。通过使用 IBM InfoSphere Guardium,用户可以获取有针对性的、可操作的信息,极大地简化了用户审计过程。通过定义安全策略,用户可以指定需要保存什么数据以及如何应对策略违规。数据事件直接写入 InfoSphere Guardium 收集器,特权用户甚至都没有机会访问并隐藏他们的踪迹。开箱即用的报告可以让用户立即开始快速运行 BigInsights 监控,而且这些报告可以很容易通过定制来符合用户的审计需求。IBM InfoSphere Guardium 主要使用探测器(称为 S-TAP,用于软件)对 BigInsights 进行监控,无需依赖 BigInsights 的审计日志即可监控所有相关操作,无需对系统软件或应用程序进行任何更改。IBM InfoSphere Guardium 对 BigInsights 监控的事件包括:

  • 会话和用户信息。
  • HDFS 操作 – 命令(cat、tail、chmod、chown、expunge,等等)。
  • MapReduce 作业 - 作业、操作、权限。
  • 异常,比如授权故障。
  • Hive / HBase 查询 - 改变、计数、创建、删除、获取、放置、列出,等等。

另外 BigInsights 中还包括一个集成功能,即 Guardium Proxy,可读取日志消息并发送到 InfoSphere Guardium 用于分析和报告。有了这个代理,BigInsights 就可以将消息从 Hadoop 日志发送到 InfoSphere Guardium 收集器。该代理的优势包括以下几点:

  • 易于启动和运行。不需要安装 S-TAP 或配置端口。只需要在 NameNode 启用代理就可以使用了。
  • 由于代理使用 Apache 日志数据作为消息发送到 InfoSphere Guardium,所以需要从消息(例如状态和心跳信息)中过滤的噪音就很少。
  • Guardium 对支持新版的 BigInsights 利用消息协议变更不存在延迟。

限制:由于 Hadoop 没有将异常记录到其日志中,所以没有办法将异常发送到 InfoSphere Guardium。如果您需要异常报告,那就需要实现一个 S-TAP。除此之外,不支持监控 HBase 或 Hive 查询,但您将可以从 Hive 和 HBase 看到基础的 MapReduce 或 HDFS 消息。

GPFS File Place Optimizer(GPFS-FPO)

GPFS-FPO 之前也被称为 GPFS 无共享集群文件系统(General Parallel File System-Shared Nothing Cluster,GPFS-SNC),是 IBM 2009 年在 GPFS 的基础上扩展而来的,使其能够处理带有 GPFS-FPO 的 Hadoop(GPFS 最初只能作为存储区域网络(SAN)文件系统使用)。GPFS File Place Optimizer(GPFS-FPO)遵循 POSIX,没有主控的 NadmeNode 节点,而是将元数据分散到集群节点中,避免了单点故障。GPFS-FPO 比 GPFS 增加了局部性认知功能、元数据块、写入关联和可配置的复制和可配置恢复策略等。由于 GPFS-FPO 是 GPFS 的扩展,本身还是 GPFS,所以在 GPFS-FPO 中可以实现同样的稳定性、灵活性和性能,另外 GPFS-FPO 通过分层存储管理(HSM)以不同的检索速度管理和使用磁盘驱动器,管理不同热度的数据,保证数据位于最近硬件上。

局部性认知功能:负责提供集群中文件位置给 JobTracker 以便 JobTracker 根据这些位置信息选择需要运行的本地任务副本以提高性能。

元数据块:典型的 GPFS 数据块大小一般是 256KB 大小,而 Hadoop 中的数据块通常比这个大的多,比如 BigInsights 中建议数据块大小为 128MB,开源 Hadoop 中数据块大小默认是 64MB,为了满足大数据块的使用需求,GPFS-FPO 通过将多个 GPFS 数据块叠加在一起组成更大的数据块,也就是元数据块,方便 map 任务运行;对 Hadoop 以外的文件还使用较小的数据块,从而确保了各种应用程序可以在一个集群中运行,保证了整个集群的性能,HDFS 则不具备这样的优点(非 Hadoop 的文件无法直接在 HDFS 集群上运行,需要在本地文件系统而非 HDFS 集群上运行这些文件),比如 BigIndex 或 Lucene 全文索引在 GPFS-FPO 中可以运行,而 HDFS 则不行。

写入关联和可配置的复制:允许为文件定义位置策略,默认情况下复制策略为第一个副本为计算机本地副本,第二个副本是机架本地副本,第三个副本则以条带形式分布在集群中的其他机架之间(HDFS 不一样,一般情况 HDFS 其它两个副本会在另外(远程)机架上的不同节点上,且 HDFS 不支持条带化)。可以指定一组特定的文件始终存储在一起,以便应用程序从同一个位置读取数据(HDFS 无法做到)。

HDFS 会使用 NameNode 节点统一存储和维护元数据,GPFS-FPO 则不需要 NameNode 或任何类似的硬件充当元数据中央存储区,元数据在集群中多个节点间共享(分布式元数据),通过大量数据块随机读取提供了性能,避免了 HDFS 中访问元数据集中存储的 NameNode 造成性能瓶颈。另外,通过客户端缓存,GPFS-FPO 提升了随机工作负载的工作性能。GPFS-FPO 是一种内核级文件系统(这点和 HDFS 不同),全面支持 POSIX,应用程序可以方便地查看 GPFS-FPO 中存储的文件,并对文件进行各种操作。在 GPFS-FPO 中,MapReduce 应用程序或其他应用无需追加内容即可更新现有的集群文件,还能保证多个应用程序并行写入 Hadoop 集群中的同一文件(HDFS 无法实现上述功能)。在 GPFS-FPO 集群中有多种管理角色承担不同的职责,比如仲裁节点(Q)、集群管理器(CM)、主集群配置服务器(P)、辅助配置服务器(S)、文件系统管理器(FSM)节点和元节点(MN)等。

IBM Adaptive MR

IBM Adaptive MR 是一个优化的 MapReduce 运行时环境,通过使用 C++/C 重写了 Job Tracker/Task Tracker,采用松耦合的 resource manager 和 Job trackers,采用 SOA 架构,实现了数据存储和共享服务,减少了多个 tasks 之间的 JVM 交互,使用原生的 TCP 协议和基于 marshalling 的二进制传输格式,代替 http 和 text/XML,task tracker 使用“Push”协议,避免 task tracker pull task 时由于轮训执行 pull 的间隔,而带来的延迟。

图 6. IBM Adaptive MR 运行时环境
图 6. IBM Adaptive MR 运行时环境

使用 Apache MapReduce 执行作业时,Shuffle 需要将 Map 输出的数据写入到硬盘,再将数据拷贝到 Reduce 节点,而经过 BigInsights 优化的 Shuffle 采用将 Map 输出的数据尽量保持在内存,不能保持时再写入数据到硬盘,Reduce 节点则尝试从内存中获取数据。同样在输入数据时,经过 BigInsights 优化的 Shuffle 也尽量保持在内存,不能保持时再写入到 Reduce 节点的硬盘。数据都保持在内存中,明显提升了 Shuffling 效率。

BigSheets

BigSheets 是 BigInsights 提供的数据发现和可视化分析工具之一。Hadoop 本身使大数据分析成为可能,编程人员通过使用 MapReduce 编程探索数据,但就像传统数据仓库构建方式一样,开发人员如果熟悉数据仓库也可以基于编程的方式实现运营分析,可对大多数业务用户以及管理用户来说非常不方便,BigSheets 就是 BigInsights 提供的基于浏览器的电子表格风格的大数据分析工具,用户无需编程就可使用 BigSheets 对海量数据实施分析,无论采用哪种数据结构。如图 7 所示,当数据收集完成后,用户可以在电子表格界面查看数据样本和操控数据,比如可以合并不同集合的列,运行公式或过滤数据等。

图 7. 电子表格风格的 BigSheets
图 7. 电子表格风格的 BigSheets

如图 8 所示,在 BigSheets 中,将使用 master workbooks(主工作簿)、workbooks(工作簿)和 sheets(表)采集数据。Master workbook 主要负责从一个输出结果文件中获取数据,进行数据采集的初始化工作,master workbooks 中的数据是只读的,用户可以基于最初的原始数据浏览数据集。输出结果文件可以通过上传一个文件或通过使用应用程序收集数据方式来创建。在 master workbook 中通过一个映射(map)或图表(chart)可以进行数据的简单可视化,如果想进一步探索数据,需要在 master workbook 的基础上创建新的 workbooks。Workbooks 包含的数据来自一个或多个 master workbooks 或 child workbooks,用户可以定制数据的格式、内容和结构。可以创建 workbooks 来保存一组特定的数据结果集,重定义数据和探索数据。可以基于一个 master workbook 或其他的 workbook 创建 workbooks,如果 workbook 是基于一个 master workbook 创建的,那么该 workbook 被称为该 master workbook 的 child。如果 workbook 是基于另外一个 workbook,新的 workbook 则是已经存在的 workbook(parent workbook)的 child。在这些 workbooks 和他们所有的后代之间就建立了工作簿相关关系。Workbooks 可以拥有一个或多个 sheets,sheets 是应用不同的功能分析和查看的数据子集的数据表示,sheet 中的每一行表示数据的一条记录,每一列表示该记录的一个属性。可以在 workbooks 中添加 sheets 逐步编辑和浏览数据。默认情况下,在 workbooks 中的最后生成的 sheet 被称为 Result sheet,当你保存和运行 workbook 时,Result sheet 中的数据是该 workbook 的输出或结果。用户可以基于 Results sheet 创建 maps 或 charts 来可视化结果数据。

图 8. Bigsheets 概述
图 8. Bigsheets 概述

如图 9 所示,在 BigSheets 2.0 中,集中式的仪表盘允许业务分析人员利用新的图形引擎使用 BigSheets(类似电子表格的可视化工具),基于数据获得洞察,查看分析应用程序结果和监控指标等。

图 9. 集中式的仪表盘
图 9. 集中式的仪表盘

高级文本分析(Advanced Text Analytics Toolkit)

文本分析技术对大数据分析和探索非常重要,可以帮助用户进行日志分析、电子邮件分析(比如用于欺诈分析)、社交媒体分析(比如评估客户情绪等)以及其他各种文本相关分析。BigInsights 纳入了高级文本分析(Advanced Text Analytics Toolkit,研发代码 SystemT)功能,用于读取非结构化文本和提炼洞察。Advanced Text Analytics Toolkit 的核心是 Annotator Query Language(AQL),这是一种全声明性文本分析语言(没有“黑盒”),所有模块均可自定义,也就是说,所有数据都采用相同语义进行编码,并遵循相同的优化规则。AQL 提供类似 SQL 语言用于构建提取程序。通过文本分析纳入到您的应用程序,你可以读取非结构化的文本,并从信息中获取洞察。如图 10 所示,详细的文本分析生命周期包括开发文本分析 extractors,运行 extractors 和可视化分析结果等。

图 10. 文本分析生命周期
图 10. 文本分析生命周期

Solr

Solr 是一款受到广泛欢迎的开源高性能企业搜索平台,是基于 Apache Lucene 项目开发的,其主要的功能包括强大的全文检索、命中标示(hit highlighting)、层面搜索(faceted search,即统计)、近实时的索引、动态聚类、数据库整合、丰富的文档处理能力(比如 word、PDF 等)和地理位置搜索(geospatial search)等。Solr 具有非常好的可靠性、可扩展性和容错性,提供分布式索引、复制和负载均衡查询、自动故障转移和恢复、集中配置等等。Solr 帮助世界上许多大型互联网网站加强其搜索和导航功能。

Solr 是基于 Java 编写并作为一个独立的全文搜索服务器运行在一个 servlet 容器中(如 Jetty)。Solr 使用 Lucene 的 Java 搜索库进行全文索引和全文检索,并拥有 XML/HTTP 和 JSON/Python/Ruby 等 APIs,方便用户使用各种编程语言访问 Solr。Solr 具有以下特点:

  • 高级全文检索功能;
  • 为大容量的网络流量提供优化;
  • 基于标准开发接口:XML、JSON 和 HTTP;
  • 全面的 HTML 管理界面;
  • 通过 JMX 为监控提供服务器统计信息;
  • 线性扩展、自动索引复制、自动故障转移和恢复;
  • 近实时的索引;
  • 灵活和自适应的 XML 配置;
  • 可扩展的插件体系结构。

改进工作负载调度(Intelligent Scheduler)

Intelligent Scheduler 之前被称为 Flexible Scheduler 或 FLEX 调度器,是在 Fair Scheduler 基础上扩展而来,通过不断调整执行作业的插槽最低数量来进行操控。Intelligent Scheduler 通过使用各种指标来完成工作负载优化,用户可以根据整个集群的情况选择这些指标。开源 Hadoop 中自带了先进先出(FIFO)基础调度器以及支持替代方案的可插拔架构:Fair Scheduler 和 Capacity Scheduler,这两种工具都是为小型作业提供最低水平的资源以免资源匮乏,无法提供更多更全面地控制以实现整个集群的最佳性能,也不提供足够的灵活性供管理员自定义工作负载。

BigInsights 包含 Fair Scheduler(不包含 Capacity Scheduler)并将其扩展成 Intelligent Scheduler(也是 BigInsights 中默认的调度程序),Intelligent Scheduler 为 MapReduce 作业提供一个自适应(灵活的)的工作流程分配方案,基于用户选择的策略进行优化处理,保证集群内所有工作随着时间推移都能得到一个公平的集群资源份额。

启动 Intelligent Scheduler 需要在 mapred-site.xml 文件中添加下列属性:

<property>
 <name> jobtracker.taskScheduler </name>
 <value> com.ibm.biginsights.scheduler.WorkflowScheduler </value>
</property>

Intelligent Scheduler 相关的指标(metric)或 algorithm(算法)、类优先级配置是对每个集群有效,更改 Intelligent Scheduler 或 JobTracker 指标(metric)需要重启。Intelligent Scheduler 默认调度指标是平均响应时间指标(average response time metrics),Scheduler 将给小型工作分配最大资源从而保证这些作业尽快完成。

Intelligent Scheduler 还支持 Fair metric 和 Max Stretch metric,当使用 Fair metric 时,scheduler 将模拟 Hadoop Fair scheduler 的行为,Max Stretch metric 则按作业所需的资源量比例为各作业分配资源,也就是说大型作业具有较高的优先级。调度指标和相关的调度算法可以在 mapred-site.xml 文件中进行指定:

<property> 
 <name> mapred.workflowscheduler.algorithm </name>
 <value> AVERAGE_RESPONSE_TIME </value>
<!-- Possible values are :
 < value > AVERAGE_RESPONSE_TIME < /value>
 < value > MAXIMUM_STRETCH < /value >
 < value > FAIR < /value >
 The default is AVERAGE_RESPONSE_TIME
-->
</property>

Intelligent Scheduler 还可以根据作业优先级给作业分配相应的资源。通过配置 Hadoop 中 JobConf 的 flex.priority 属性,可以根据每个作业或每个 Jaql 查询指定优先级。该属性值是一个数字,用来标示作业所属的优先类(priority class)。默认情况下有三个优先类,也就是说 flex.priority 可以被设置为 0,1 或 2,默认值为 2。比如,在一个 Jaql 查询中,通过调用 SetOptions()函数为该查询中所有 Hadoop 作业优先级设置成 0:

setOptions({ conf: { "flex.priority": 0} });

还可以在命令行中启动一个 Hadoop 作业时指定优先级,比如:

hadoop jar $BIGINSIGHTS_HOME/IHC/hadoop*examples.jar -Dflex.priority = 1 < input > < output >

压缩

当使用 InfoSphere BigInsights 处理海量数据时,可以考虑使用数据压缩的方法减少对存储空间的需求以及加速 MapReduce 处理性能。IBM BigInsights 平台支持 Hadoop 开源框架中所有的压缩算法,并额外提供 IBM LZO 压缩(扩展名.cmx),该压缩支持拆分压缩文件(通过 IBM LZO 压缩编译解码器),保证 MapReduce 作业可以并行处理各压缩拆分部分。BigInsights 会根据文件扩展名自动识别解压缩文件所需的压缩算法,目前支持的 splittable 压缩如表 2 所示:

表 2. BigInsights 3.0 支持的 splittable 压缩算法
文件扩展名 用来解压缩文件的压缩算法
.cmx IBM LZO
.bz2 BZip2
.gz Gzip
.deflate DEFLATE
.snappy Snappy

总结

IBM 大数据平台战略可以帮助企业解决大数据的挑战,支持与客户现有的系统集成,具体包括信息整合、Hadoop 企业版系统(InfoSphere Biginsights)、流计算(InfoSphere Streams)、数据仓库(pureData Systems、InfoSphere Warehouse)、NoSQL 数据库(Cloudant)、加速器(Accelerator)、可视化与发现(InfoSphere Data Explorer)、应用程序开发、系统管理、数据治理和元数据管理等功能。大数据依赖于一个可缩放且可扩展的信息基础,只有企业的信息基础到位,并支持迅速增长的数据数量、多样性和速度,才能显著地从大数据中获益。

IBM 大数据平台提供全面的企业级 Hadoop 平台、流计算、分析引擎企业级数据仓库实现各种数据的存储、分析和挖掘,结构化数据可以使用数据仓库进行存储和分析,结构化原始数据、半结构化和非结构化数据可以存储到企业级 Hadoop 系统中并进行后续分析处理,动态的半结构化和非结构化信息流通过流计算和分析引擎进行处理、过滤和分析后,生成的结构化分析结果可以存储到数据仓库中以便和其他历史信息进行进一步的深入分析,而获取的半结构化和非结构化信息可以存储到企业级 Hadoop 系统中(当然结构化的信息也可以存储到企业级 Hadoop 中)。数据仓库技术和企业级 Hadoop 系统之间是相互补充,而非相互竞争关系。借助于企业级 Hadoop 平台 InfoSphere Biginsights 3.0,用户可以方便的进行大数据分析、数据挖掘、文本分析、全文检索、报表展现以及各种交互式查询访问,使得企业用户进行大数据分析的时间价值曲线变平。

参考资料

学习

获得产品和技术

讨论

  • 加入 developerWorks 中文社区,查看开发人员推动的博客、论坛、组和维基,并与其他 developerWorks 用户交流。

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Information Management
ArticleID=980316
ArticleTitle=企业级大数据存储、分析平台:IBM InfoSphere BigInsights 3.0 新功能介绍
publish-date=08142014