Badoo是一个约会社交网络,目前每天处理 200 亿个事件,数据平台工程主管 Vladimir Kazanov 解释说。在 Skills Matter,他谈到了在这种规模下运行的一些挑战,以及 Badoo 使用什么工具来处理这些数据并生成报表。
Badoo 的商业智能部门的目标是收集用户事件信息,对其进行处理并生成报表,从而创建见解。正是这些见解帮助公司做出有条理的决策。Kazanov 解释说,这些不可或缺的事件经历了一个生命周期:
接收:使用Protobuf生成用于生成事件的各种客户端库。然后通过LSD(一个用于过滤和路由事件的开源流处理守护进程)对这些事件进行流处理。
存储:数据以ORC文件格式存储在数据湖中,运行在HDFS上。具有模式的事件存储在Exasol中,这是一个列式分布式分析数据库。
处理:数据使用Spark处理,Spark 是一个基于 Java 的分布式计算框架,允许在集群上查询数据。
报表:使用一个名为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
评论