AirBnB如何在德鲁伊上实现数据的实时和批量分析

  

Airbnb正在为我们社区的数百万客人和主人提供服务。每一秒,他们都在Airbnb.com上的活动,例如搜索,预订和消息传递,都会产生大量数据,我们将其匿名化并用于改善社区在我们平台上的体验。

  

Airbnb的数据平台团队致力于利用这些数据来改善客户体验并优化Airbnb的业务。我们的使命是提供基础设施来收集,组织和处理大量数据(所有这些都以隐私安全的方式),并使Airbnb的各个组织能够从中获得必要的分析并从中做出数据知情决策。

  

公司内部公开和共享高级分析的主要方式是通过各种仪表板。很多人每天都使用这些仪表板来做出各种决定。仪表板还允许实时跟踪和监控我们业务和系统的各个方面,因此,这些仪表板的及时性对于Airbnb的日常运营至关重要。但是,我们面临三个挑战:

  

首先,在仓库中聚合数据需要很长时间,并在查询时使用蜂巢和转眼间等系统为这些仪表板生成必要的数据.Hive/转眼间必须读取所有数据并按需聚合,从而导致在查询时调用所有必要的计算。即使这些引擎用于预先计算聚合并存储它们,存储格式也不会针对分析查询所需的数据的重复切片和切割进行优化。

  

其次,系统需要可靠和可扩展。它正在为Airbnb的核心分析用例提供支持,因此任何停机都会对业务及其员工产生严重影响。此外,数据量,查询量和用户量也在不断增长,我们的分析系统应该能够应对不断增长的需求。

  

再次,我们需要一个与基于开源框架的数据基础架构完美集成的系统,例如,我们的大多数数据集都存储在Hadoop中,我们使用卡夫卡和火花流来处理我们的数据流。

  

这就是我们为什么要采用德鲁伊的原因。

  

德鲁伊的优点

  

快速查询时间

  

通过预定义的数据源和预先计算的聚合,德鲁伊提供亚秒查询延迟。建立在德鲁伊之上的仪表板明显快于在其他系统上构建的仪表板。与蜂巢和转眼间相比,德鲁伊可以快一个数量级。

  

提供可靠性和可伸缩性的架构

  

德鲁伊的架构很好地分为不同的组成部分,用于注入,服务和整体协调。我们发现这种组件化架构对我们的工作负载来说是可靠和稳定的,并且它使我们能够根据需要轻松扩展系统。

  

德鲁伊将数据存储分离到深度存储以便长期存储数据,同时在历史节点中临时缓存数据的架构对我们来说效果很好。将分析数据永久保存在S3中可以免费进行灾难恢复,并允许我们轻松管理群集硬件的升级和维护(例如,轻松切换节点类型以利用最新硬件)。

  

与开源框架集成

  

德鲁伊还与主要基于Hadoop和卡夫卡的开源数据基础架构顺利集成:

  

1,德鲁伊的API允许我们轻松地从Hadoop中提取数据以进行批量分析

  

2,德鲁伊通过流处理引擎实现实时分析.Druid提供了一个流媒体客户端API,宁静,它与Samza或风暴等流媒体引擎集成,可以与任何其他基于JVM的流媒体引擎集成。在Airbnb,通过采用宁静客户端的火花流工作,将数据流传输到德鲁伊进行实时分析。

  

3,德鲁伊与Apache超集很好地集成,Apache超集是由Airbnb开发和开源的开源数据可视化系统.Superset是用户在德鲁伊上编写和执行分析查询并可视化结果的界面。

  

Airbnb如何使用德鲁伊:双群集配置
在Airbnb,两个德鲁伊集群正在投入生产。两个独立的集群允许对不同用途的专用支持,即使单个德鲁伊集群可以处理比我们需要的更多的数据源。我们总共代理节有4个点,2个霸王结点,2个协调员节点,8个MiddleManager节点和40个历史节点。此外,我们的集群由一个MySQL服务器和一个具有5个节点的饲养员集群支持。与HDFS和转眼间等其他服务集群相比,德鲁伊集群相对较小且成本较低。

  

在两个德鲁伊集群中,一个致力于集中的关键指标服务。为了服务Airbnb的所有仪表板,用户可以通过简单的YAML文件轻松定义他们的指标。用户可以在超集上查看他们的仪表板和指标,而无需了解德鲁伊的任何信息。

  

所有批处理作业都使用气流进行调度,从Hadoop集群中提取数据。

  

自助用户的所有实时和其他数据源都由其他德鲁伊集群处理。通过火花流+宁静客户端设置获取实时数据。

  

改善Airbnb的德鲁伊用法

  

虽然德鲁伊提供了许多强大的广泛适用的功能,以满足大多数企业,我们确实在德鲁伊内部或之上实现功能,以更好地服务于我们的特殊用例。

AirBnB如何在德鲁伊上实现数据的实时和批量分析