四、大数据实时分析

M 公司的用户总数超过 2 亿人,有 20 多款 M 应用软件的日活跃用户超过千万人,这样的一个数据密集型企业,如何实现大数据实时分析,既是一个必须面对的严峻挑战,也是必须克服的现实问题。[br][br][b] (一)数据的迁移[/b][br][br] 在初期,M 公司很多的业务数据是通过 MySQL 进行处理的,但它的处理容量有限,业务容量快速扩张以后,尤其是到了日活跃用户超过 1 亿人时,MySQL 变得难以满足要求,这时很多的业务不得不考虑迁移到 HBase 上去。为此,M 公司采用了一个常规的 HBase 迁移方法,在最开始写数据的时候双写——既写 HBase 的又写 MySOL 的,以保证新的数据同时存储于 HBase 和 MySQL 中,然后把 MIySQL 中的历史数据迁移到 HBase,这样从理论上两个数据库就能拥有同样的内容,最后采用双读 HBase 和 MySQL 的办法以校验数据是不是都一致。当达到 99.9%的结果时,就确定迁移基本完成,再将灰度返回到 HBase 结果中去。数据迁移的过程如[color=#0000ff]附图 17 [/color]所示。[br][br][br][br][br][br][br][br] 附图 17 数据的迁移过程
[b] (二)基于 Druid 的数据实时分析[/b][br][br] M 公司在第一个阶段做统计分析平台时,数据并未做到实时处理。到了第二阶段后,M公司通过 MIapReduce 的处理将数据放到 MIySOL 等关系型数据里,随着业务的不断增长,RDBMIS 的容量限制产生了很多问题,于是到了第三个阶段将 RDBMIS 变成了 HBase,这个阶段持续了较长时间,然后到了第四个阶段开始进入实时分析阶段,通过 Kafka、Storm 再到RDBMS 或者 NoSQL,最后一步直接把数据从 Kafka 转到 Druid。[color=#0000ff]附图 18[/color] 为实时数据分析演进历程。[br][br] Druid 相对比较轻量级,技术也相对较为成熟,很多企业都在用它做实时分析,包括一些广告、搜索、用户的行为统计。它的特点包括:[br][br] (1)为分析而设计:它为 OLAP(On-Line Analytical Processing,联机分析处理)而生,支持各种 filter、aggregator 和查询类型。[br][br] (2)交互式查询:低延迟数据,内部查询为毫秒级。[br][br] (3)高可用性:集群设计,去中性化规模的扩大和缩小不会造成数据丢失。[br][br] (4)可伸缩:Druid 被设计成 PB 级别,能充分满足日处理数十亿事件的处理需求。在 M 公司内部,Druid 除应用于 M 统计外,还应用于广告系统,主要对每个广告的请求、点击、展现做一些实时分析。[color=#0000ff]附图 19[/color] 为基于 Druid 的使用场景——广告实时统计分析架构图[br](非计费部分)。[br][br][br][br][br][br][br][br][br] 附图 19 基于 Druid 的使用场景——广告实时统计分析架构图(非计费部分)
[b] (三)基于 Kudu 的实时数据分析[/b][br][br] M 公司除使用 Druid 进行实时数据分析外,还采用了其他多种实时数据分析技术。其中,由 M 公司于 2015 年 10 月联合发布的 Kudu 技术应用状况良好,M 公司将其主要用于一些服务质量监控、问题排查等方面。附图 20 列出了使用 Kudu 前后的效果比较。[br][br][br][br][br][br][br][br][br][br] 附图 20 使用 Kudu 前后的效果比较[br][br] 从图中可以看出,在使用 Kudu 之前存在诸多问题,如 ETL 高延时、Logo 无序计算、需要等待完整数据才开始计算等;而使用 Kudu 之后,ETL 的流程得以简化,访问性能也变得更为优良,效果提升十分明显。
[b] (四)实时统计数据服务[br][/b][br] 大数据实时分析平台面向不同的服务对象提供了内容丰富的各类实时数据分析服务,其中,实时统计数据服务是应用范围广泛的服务之一。实时统计分析列出了某项业务的用户数据,可以用数据分析某项应用的使用情况,然后结合 M 公司的用户画像,为开发者提供更好的数据分析服务。

Information: 四、大数据实时分析