Badoo 的数据工程:每天处理 200 亿个事件

Badoo
是一个约会社交网络,目前每天处理 200 亿个事件,数据平台工程主管 Vladimir Kazanov 解释说。在 Skills Matter,他 谈到
了在这种规模下运行的一些挑战,以及 Badoo 使用什么工具来处理这些数据并生成报表。
Badoo 的商业智能部门的目标是收集用户事件信息,对其进行处理并生成报表,从而创建见解。正是这些见解帮助公司做出有条理的决策。Kazanov 解释说,这些不可或缺的事件经历了一个生命周期:

  1. 接收:使用 Protobuf
    生成用于生成事件的各种客户端库。然后通过 LSD
    (一个用于过滤和路由事件的开源流处理守护进程)对这些事件进行流处理。

  2. 存储:数据以 ORC
    文件格式存储在数据湖中,运行在 HDFS
    上。具有模式的事件存储在 Exasol
    中,这是一个列式分布式分析数据库。

  3. 处理:数据使用 Spark
    处理,Spark 是一个基于 Java 的分布式计算框架,允许在集群上查询数据。

  4. 报表:使用一个名为 microstrategy
    的报表工具,它允许使用仪表板和报表查询 Exasol。此外,还使用了一个名为 CubeDB
    的自定义工具,旨在更快地运行专用报表查询。

为了创建一个新的事件,首先,业务分析人员为它创建一个模式。从这个模式中,可以为各种平台生成 Protobuf 客户端库。Kazanov 将这种跨平台支持视为其核心优势之一,因为它使移动和 Web 应用程序可以轻松地开始发布这个新事件。
当通过 LSD 对事件进行流处理时,Badoo 每小时对这些数据进行批处理,而不是实时处理。这是因为,在失败的情况下,Kazanov 认为重新加载一个批处理更容易,因为与目标数据库进行比较以查看批处理编写是否正确非常简单。

Kazanov 还认为,在 ORC 中存储数据特别有用。他列出了一些原因,如面向列、具有强大的压缩特性,以及它受到多个应用程序的支持。还可以使用 Hive
轻松地对它进行查询。Hive 是 Hadoop 之上的一个数据库,使用类似 SQL 的查询语言。
谈到查询数据时,Kazanov 解释说,Exasol 的优点之一是使用 SQL。对于开发人员来说,学习曲线比较低,他们不需要学习新的查询语言。但最重要的是,他认为核心的好处在于性能:
Exasol 允许我们在集群中存储 TB 级的数据,并对其进行真正高效的查询。我说的是分钟级,而类似的系统差距较大。

感兴趣的读者可以在线观看 完整的演讲
,也欢迎为Badoo 的开源工具如 CubeDB
做贡献。

原文链接:

Data Engineering in Badoo: Handling 20 Billion Events per Day