关于大数据:使用-Presto-和-Alluxio-在-AWS-上搭建高性能平台来支持实时游戏服务

39次阅读

共计 2947 个字符,预计需要花费 8 分钟才能阅读完成。

概要速览

美国艺电 (EA) 是游戏行业的翘楚,每年为寰球几十亿用户提供数十款游戏。是否针对 EA 的在线服务做出近实时决策对于业务倒退至关重要。本文介绍了在 AWS 上搭建的基于 Presto 和 Alluxio 的数据平台,如何为游戏产业提供即时响应的在线服务。

EA 的数据与人工智能部门搭建了数百个平台,来治理游戏和用户每天产生的 PB 级数据。这些平台蕴含从实时数据导入到 ETL 工作流在内的各类数据分析作业。部门产生的格式化数据曾经被公司高管、制作人、产品经理、游戏工程师和设计师等宽泛驳回,用于市场营销和货币化、游戏设计以及晋升客户参与度、玩家留存率和终端用户体验。

用例

EA 的在线服务须要可能获取近实时信息,这对于制订业务相干的决策(如推广流动和故障排查)至关重要。这些服务包含但不限于实时数据可视化、仪表板(dashboarding) 和会话剖析,咱们的团队正在踊跃寻找能够反对这些用例的框架。

在 EA,为获取反对决策的数据分析后果,咱们采纳了诸如 Tableau 和 Dundas 等一系列的数据可视化工具。这些工具通常连贯多个数据源,例如 MySQL DB、AWS S3 或 HDFS。用户可能同时从多个数据源加载数据来运行计算复杂度较高的算法。因为数据加载是 I/O 密集型的,因而可能成为重大的性能瓶颈。尤其当雷同的数据须要被屡次加载时,性能瓶颈问题可能更重大。因而,咱们须要一种解决方案,通过在本地缓存数据的形式来升高数据的拜访开销。

仪表板是另一个常见的用例,用于实时追踪用户参与度、客户满意度或零碎状态。在这些场景下,数据量通常是 GB 级的,但须要可能对频繁的信息刷新进行即时解决。目前,咱们应用 Redshift 等商业数据库来解决工夫敏感型数据,心愿寻求一种在不升高性能的状况下削减老本的代替计划。

咱们最近开发了一款汇报式聊天机器人,来提供即时的游戏相干剖析,例如实时用户满意度和实时利润剖析。该零碎的后端运行 Presto,PB 级的数据存储在 S3 上。聊天机器人会将用户的发问转换为 ANSI SQL 查问语句,并在 Presto 集群上运行这些查问。查问通常会波及简单的计算过程,例如在跨数据集搜寻后进行预测和合并。咱们迫切希望找到一种解决方案,与基于 S3 存储的数据集互补,确保在不减少老本的状况下进步性能。

架构

为了服务这些具备近实时需要的不同用例,咱们搭建并评估了以 Presto 为查问引擎,S3 为数据存储,Alluxio 为作业数据集缓存层的数据平台。文中,咱们模仿了上述在以后生产环境中搭建的基于 S3 的 Presto(没有 Alluxio)架构,与环境设置(Presto 和 S3)雷同但部署了 Alluxio 的技术计划进行比拟。架构如下图所示:

对于设置的具体信息如下:

√ 每个实例启动并置的 Presto 和 Alluxio 服务。
√ 硬件方面,咱们应用了三个 h1.8xlarge AWS 实例,每个实例上都挂载了 8TB 长期磁盘,供 Alluxio 把数据缓存到 Presto 的本地地位。
S3 作为底层长久文件系统挂载到 Alluxio。
√ Presto 配置了两个目录;一个连贯到咱们现有的 Hive metastore,关联到存储在内部 S3 上的基准测试数据集,另一个连贯到一个独自的 Hive metastore,其中蕴含在 Alluxio 中创立的基准测试数据表。
√ 咱们在 S3 上应用雷同的数据集进行性能比拟,并通过 alluxio fs distributedLoad /testDB 指令将数据预加载到 Alluxio。
√ 为了晋升解决海量小文件时的查问性能,咱们在 alluxio-site.properties 中启用了元数据缓存性能来进行性能调优。

alluxio.user.metadata.cache.enabled=true
alluxio.user.metadata.cache.max.size=100000
alluxio.user.metadata.cache.expiration.time=10min

基准测试后果

咱们选取了代表各类工作负载的四个独立基准测试。基线(baseline) 是 Presto 间接查问 S3 时的性能。

基准测试 1

测试 1 是咱们对玩家在游戏中事件的外部合成快照,代表 I/O 密集型用例。测试的三个数据集的总数据大小别离为 1GB、10GB 和 100GB,文件为 ORC 格局。每个数据集都是应用雷同的 DDL 创立的,蕴含 49 个 cols(列)、40 个 varchar、5 个布尔值和 4 个映射。基准测试查问选取所有列以及针对一个 varchar 字段的过滤条件。

后果

应用 Alluxio 缓存数据后,Presto 的性能比基线间接查问 S3 时的性能快 2 ~ 7 倍。

基准测试 2

应用游戏元数据和用户参加记录模仿数据可视化。这是一个典型的 CPU 和 I/O 密集型查问。咱们一共选用了两组数据集和两个查问,别离是 Tableau 和 Dundas 中的罕用查问,查问抉择所有合乎日期过滤条件的列,而后对日期字段进行 GROUP BY 和 ORDER BY 操作。在这个测试中,咱们特意禁用了(已显示出卓越性能晋升的)Alluxio 元数据缓存性能,以便理解数据缓存在这里起到的作用。

后果

在没有元数据缓存的状况下,在 Dundas 数据集上应用 Alluxio 的 Presto 查问速度比 S3 快 2.75 倍,在 Tableau 数据集上比 S3 快 5.1 倍。

基准测试 3

应用蕴含海量小文件的数据集来模仿咱们的仪表板用例。数据集是一批 2MB 的文件,总数别离是 50、500 和 5000 个文件。应用的查问是聚合每个日期条目数的 select 查问。

后果

应用元数据缓存性能的 Alluxio 比 S3 快 1.2 ~ 5.9 倍。如果不启用元数据缓存,Alluxio 实现的性能提速仅为 1 ~1.35 倍。启用元数据缓存可通过记忆元数据、辨认热数据和减少副原本显著缩短执行工夫。

基准测试 4

模仿对话机器人,应用的数据集是每日游戏性能的快照。为模仿 CPU 密集型查问,该查问蕴含多个计算阶段,将整数字段 (integer field) 转换为 HyperLogLog,而后合并, 再抉择基数,最初将 integer 和 varchar 字段作为过滤条件得出后果。

后果

不应用元数据缓存的 Alluxio 能够将查问工夫从 85.2 秒缩短到 3 秒,性能进步了 27 倍。

论断

本文探讨了一个反对游戏行业的在线服务即时响应的翻新平台,平台应用 Presto 作为计算引擎,把 Alluxio 作为 Presto 和 S3 存储之间的数据编排层。咱们通过数据可视化、仪表板和会话聊天机器人三个实在行业案例对该平台进行性能评估。

初步测试结果表明,Presto+Alluxio 的部署在所有状况下的性能都显著优于 S3。特地是当 Alluxio 启用元数据缓存性能后在解决海量小文件时更是实现了高达 5.9 倍的性能晋升。Alluxio 通过管理所调配的长期磁盘,将 S3 中的数据缓存到 Presto 的本地地位,从而实现存储和计算的拆散。在测试的每个场景中,咱们能够察看到性能晋升次要得益于 Alluxio 的高级缓存治理能力,可能针对数据的冷热水平来区别化创立不同数量的正本。

文章作者:
Teng Wang, Du Li, Yu Jin and Sundeep Narravula
原文发表于 2020 年 8 月 6 日

想要获取更多乏味有料的【流动信息】【技术文章】【大咖观点】,请关注 [Alluxio 智库]:

正文完
 0