Apache Kylin 在网易游戏的落地实践

本文是网易游戏工程师在2018年6月 Apache Kylin meetup @ 深圳场的分享,介绍了网易游戏为何选择 Apache Kylin 做为大数据在线分析平台,并基于 Kylin 所做的优化和改进等实践。
展开查看详情

1.Apache Kylin 在网易游戏的落地实践 —— 杨操

2. 目录页 Contents Page 背景介绍 1.1 网易游戏大数据平台 1.2 业务场景 1.3 选择 Kylin 的原因 1.4 Kylin 的使用现状 实践经验 2.1 并发性能调优 2.2 Segment 数量调优 2.3 Cube 性能调优 运维经验 3.1 故障处理 3.2 监控与告警

3. 背景介绍 PART 01 BACKGROUND

4.1.1 网易游戏大数据平台 架构图

5.1.1 网易游戏大数据平台 数据流

6.1.2 业务场景 游戏常规指标体系 → 登录 → 在线 运营 → 留存 指标 → 付费 → ....... 道具 ← 游戏内 玩法 ← 指标 经济体系 ← ....... ←

7.1.2 业务场景 游戏常规指标体系

8.1.2 业务场景 游戏常规指标体系

9.1.2 业务场景 非常规指标案例——沙盒模拟战术竞技类项目地图编辑器

10.1.3 选择kylin的原因 数据流

11.1.4 kylin使用现状 数据 容量:5.4T (3兆行记录) 增量:100G+/day

12.1.3 选择kylin的原因 业务线瓶颈 1. 新增业务成本高、周期长 - 编写ods 计算的SQL、MR、UDF - 编写dw 计算的SQL、MR、 UDF 2. MySQL单表性能瓶颈 - 单表存储几千万行记录 - 读写性能下降

13.1.3 选择kylin的原因 技术选型—— Kylin 的优点 1 海量数据亚秒/秒级查询,与现有流程性能相当 2 支持6种常用的聚合算法,业务覆盖广 3 支持hive/kafka数据源,与现有流程切合度高 4 基于hbase的海量数据存储,解决mysql单表性能瓶颈 5 提供RestfullAPI 和 SQL查询,业务改动成本低 6 良好的webui,业务操作门槛低 7 社区活跃,资料丰富,组件引入风险低

14.1.4 kylin使用现状 Kylin - v2.2.0 - 8台高配服务器 - 8个job节点,22个query节点 Hbase (kylin专用) - v1.2.6 - 23节点 - 全SSD

15.1.4 kylin使用现状 业务 项目:75 cube数:1642

16.1.4 kylin使用现状 查询性能

17. 实践经验 PART 02 PRACTICE

18.2.1 并发性能调优 案例背景 项目初期 - 1job节点,1query节点 - 与其他业务共用hbase集群 - Tomcat默认配置 - 千兆网卡 - heap 8G

19.2.1 并发性能调优 案例背景 select count(distinct udid) from ods_g60_udid_day where ds>='20170617' and ds<='20170918' group by os_name, app_channel, ds 现象:一次查询性能优越;并发查询性能下降明显; 连续提交多次查询耗时递增。 业务要求:100并发性能在2s内。

20.2.1 并发性能调优 性能调优结果 优化前后性能对比(与其他业务共用HBase)

21.2.1 并发性能调优 Tomcat配置调优 Tomcat配置调优是最先能想到的,性能提升了200多毫秒。 优化前 <Connector port="7070" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="7443" compression="on" compressionMinSize="2048" noCompressionUserAgents="gozilla,traviata" compressableMimeType=“text/html,text/xml,text/javascript,application/javascript,application/json,text/css,t ext/plain" 优化后 /> <Connector port="7070" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" redirectPort="7443" compression="on" compressionMinSize=“2048" noCompressionUserAgents="gozilla,traviata" compressableMimeType="text/html,text/xml,text/javascript,application/javascript,application/json,text/css,text/ plain" maxThreads="2000" minSpareThreads="100" maxSpareThreads="200" acceptCount="500"

22.2.1 并发性能调优 Hbase RPC框架性能瓶颈

23.2.1 并发性能调优 Hbase RPC框架性能瓶颈

24.2.1 并发性能调优 针对Hbase性能瓶颈的调优 hbase性能瓶颈主要有两点: 1. responder线程对所有connection的雨露均沾式处理; 2. Hbase client默认一个connection,请求串行处理。 优化方案: 1. Kylin Hbase Connection pool,增加Hbase client的connection数; 2. 增加query实例,增加Hbase client数; 3. Kylin专用Hbase集群,降低Hbase负载; 4. 升级Hbase到2.0版本,该版本使用netty实现RPC框架。

25.2.1 并发性能调优 其他调优 1. 网卡升级 2. kylin代码调优 3. 关闭debug日志

26.2.2 segment数量调优 问题背景 项目早期,segment merge策略使用默认的7天、28天 。 接入75个项目构建完历史数据后,segment数量爆炸。 增量:500+ /周期

27.2.2 segment数量调优 merge策略调优 目标:限定一个cube的segment数 定时将6个月前的数据合并到一个segment max(segment数/cube) = 1 + 2 + 1 + 3 + 2 + 1 = 10

28.2.2 segment数量爆炸 merge策略调优

29.2.2 segment数量爆炸 merge策略调优 注意,segment合并需谨慎: - merge会增加job数,例如设置2天合并,job数会增加一半 - segment合并会降低查询性能 一定要结合业务,在保证性能的前提下合理设置merge策略。

Kyligence (上海跬智信息技术有限公司)由首个来自中国的 Apache 软件基金会顶级开源项目 Apache Kylin 核心团队组建,是专注于大数据分析领域的数据科技公司,通过前沿数据技术的分析认知来加速用户关键商业决策是其使命。