基于阿里云HBase产品的游戏大数据实践

大数据架构

我们团队大数据方案主要参考阿里巴巴大数据方案并结合自身特点量身定做,像阿里巴巴大数据体系架构一样也分四层,只是内容有所简化和差异。其实多数大数据架构方案都略同,只是在细节上有所差异。
基于阿里云HBase产品的游戏大数据实践

  1. 数据采集层:数据来源有两种——客户端埋点日志和服务端请求处理日志。最终这些日志都是以日志聚合的形式,经过消息队列中间件缓存,最终汇总到数据湖。
  2. 数据计算层:市面上有多种离线和实时计算引擎,从技术生态成熟度来说Spark相对完善,我们选择了Spark生态技术栈。数据加工链路与阿里巴巴数据计算层类似分为操作数据层(Operational Data Store, ODS)、明细数据层(Data Warehouse Detail, DWD)、汇总数据层(Data Warehouse Summary, DWS)和应用数据层(Application Data Store, ADS),元数据管理和数据质量处理还有待完善。
  3. 数据服务层:数据服务层对底层数据存储透明,面向数据应用层开放海量数据,并对外提供统一的数据服务平台,通过接口提供数据查询服务和实时数据推送服务。
  4. 数据应用层:以应用的形式提供数据可视化,支持各种应用场景的数据分析,为运营、发行、策划提供宏观决策支撑。

基于HBase大数据解决方案

核心需求

  1. 支持高性能离线计算和实时计算;
  2. 管理数据作业调度;
  3. 支持弹性伸缩计算(节省成本);
  4. 支持冷热存储(节省成本);
  5. 满足数据湖场景,支持高吞吐海量存储结构化和非结构化数据;
  6. 支持即席查询。

技术选型

2018年10月阿里云正在研发HBase产品,我们团队当时正在准备做大数据方案,阿里云HBase技术团队找我们探讨解决方案合作,经过讨论和分析我们认为HBase产品基本能满足游戏大数据业务。HBase产品具有以下优势:托管基础设施运维;将Hadoop核心功能精简为Spark和HBase;使计算与存储分离;高吞吐、高性能、高容量。

HBase产品演化

2018年10月,HBase产品刚上线时主要提供HBase、Phoenix和Spark等核心功能,我们团队向阿里云HBase团队反馈了一些业务场景的需求,随后HBase产品不断新增辅助功能:完善作业提交服务LivyServer,数据工作台支持可视化工作流编排,基于数据湖非结构化数据存储分析的需求提供访问HDFS,提供Zeppelin交互式查询便于开发调试。至2019年4月,HBase产品已经趋于完善,只有弹性伸缩计算这个需求还没有支持,而此时我们团队的大数据方案也基本伴随HBase产品的成熟逐渐落地。

日志聚合

日志采集工具

日志聚合其实是在微服务体系下衍生的产物,也是大数据处理的第一个环节。我们选用Flume和Kafka作为日志采集工具建立日志数据流,虽然这是个经典方案但没看到多少资料解释为什么要这样做,这里根据我们的业务场景补充说明,日志传输需要解决几个问题:解决生产者和消费者速率不匹配的问题,满足高可用、高吞吐、低延时,在数据仓库维护不可用时能缓存数据,支持在线水平扩展和维护,满足多样化数据过滤转换需求和数据扇入扇出。在各种日志收集工具中Flume的灵活性较强,可以满足各种场景的需求,而Kafka具有高可用、高吞吐、低延时的特性,这两种产品组合基本满足了大部分日志传输需求。

日志数据流

基于阿里云HBase产品的游戏大数据实践

我们将游戏日志分为核心日志和非核心日志分开处理,核心日志用于计算核心业务指标,非核心日志用于自定义数据分析,分开处理是为了避免系统互相影响。核心日志是结构化数据,因此我们规范了核心日志生产者数据接口,核心日志投递主要通过Phoenix写入HBase,需要实时计算的日志则通过Spark Streaming处理后再写入HBase。非核心日志提供灵活的自定义日志方式,因此数据处理量要比核心日志大的多,为减轻服务端压力我们采用推拉结合的方式,先将日志以文件形式传到NAS,再由Flume从NAS中拉文件再投递到HDFS,如果需要实时计算则传到Kafka经过Spark Streaming再投递到HBase,其中还有部分日志用于追踪系统异常则需要传到Elasticsearch,通过Kibana查询日志。

数据湖

数据湖是一种大型集中式存储库和处理引擎,允许以任意规模存储所有结构化和非结构化数据,拥有强大的信息处理能力和处理几乎无限的并发任务或工作的能力,运行不同类型的分析——从控制面板和可视化到大数据处理、实时分析和机器学习,以指导业务做出更好的决策。与传统数据仓库的重要区别是数据湖可以处理非结构化数据,为后期的机器学习和预测分析提供帮助,而且日志可以更灵活的形式存储,提高数据创新使用效率。基于这种需求,我们需要使用HDFS存储非结构化数据,HBase正好产品规划也包含了这块功能,存储集群HDFS和HBase结合计算集群Spark基本满足了数据湖的需求。

参考资料

  • 《大数据之路 阿里巴巴大数据实践》,阿里巴巴数据技术及产品部著,电子工业出版社
上一篇:微服务在游戏服务端技术上的实践及思考


下一篇:【前端】Web前端学习笔记【2】