当前位置: 首页 > 科技观察

深度揭秘Airbnb跨洋大数据挑战与实用架构

时间:2023-03-18 12:43:08 科技观察

【.com原稿】在大数据时代,每个公司都会遇到一些共同的挑战,比如大数据的收集、整合、存储、计算数据。Airbnb在构建大数据平台架构的过程中也积累了很多宝贵的经验。2017年12月1-2日,由主办方主办的WOTD全球软件开发技术峰会在深圳中洲万豪酒店隆重举行。AirbnbSrSoftwareEngineer王宇在大数据系统架构设计环节与嘉宾分享了《Airbnb的跨洋大数据架构》主题演讲。他为大家揭秘了Airbnb是如何解决大数据的存储应用,以及跨洋数据平台的建设与支撑。跨洋支持大数据平台。本次分享分为三个部分:Airbnb的大数据需求,这是整个数据架构的基础。Airbnb的大数据架构,包括Superset等组件。Airbnb的大数据架构支持中国。公司虽然位于加州,但也为中国市场业务提供数据支持。Airbnb的大数据需求我们先介绍一下Airbnb的大数据需求和数据驱动。Airbnb于2008年8月推出,使人们能够通过网站、手机或平板电脑随时随地发布、发现和预订独特的房源。上面列出的数据虽然不是最新的,但是可以看出数据量是非常大的。Airbnb服务对象的多样性,决定了我们必须通过定制化的数据产品,为用户提供最好的旅行体验。同时,我们的平台也会根据各种数据做出正确的决策。我们的数据使用过程分为:最底层是数据存储(Storage),一般都有很高的计算能力和容量配置。中间层基于数据挖掘和分析。根据不同的场景,我们使用DataMiningandAnalytics来实现用户管理、定价和风险控制,从而为运营(Operating)团队提供参考模型矩阵(Matrix)。最上层是我们根据不同的产品结构进行的基于数据的机器学习、人工智能、决策预测等。我们强烈推荐企业中的数据知情文化。我们通过检查各种实验假设和深入挖掘各种业务数据来构建机器学习模型。同时,我们将数据作为决策的重要依据,通过持续的监控和跟踪,确保平台上的任何推荐都能严格基于数据指标。Airbnb的大数据架构下面就Airbnb大数据架构的构建理念、整体架构特点、部分系统的DeepDive进行深入探讨。Airbnb的大数据架构理念虽然经历了几代数据架构升级,但我们的理念始终保持以下五个特点:使用开源软件,开源社区有很多优秀的产品可以帮助我们。通过使用标准组件和方法可以提高通用性和可重用性。注重可扩展性,在设计之初就考虑系统的scaleup(扩展),使整体架构简单易懂,灵活。解决数据使用者的实际问题,真正满足数据使用者的需求,为数据使用者提供所需的环境。有余量。为了提高产品效率,公司产品线的增加相对于现有数据结构的压力往往不是线性增加。因此,我们必须在设计之初就留有足够的余量。Airbnb大数据架构实战上图列出的数据虽然不是最新的,但和目前的实际量差不多。我们日志消息的容量大约是10B,数据仓库的容量大约是50PB或者更多,机器数量大约是几千台,数据每年以5倍的速度增长。上图显示了我们的数据架构的概览。从左到右,有两种输入:EventLogs,一般是用户行为触发的,连接到改进版的Kafka,也就是底层是Kafka的Jenkins,我们在上面做了很多优化上面那层。MySQLDumps,将传统关系型数据库的在线数据流通过Sqoop传递给Hadoop的HDFS。中间由GoldHiveCluster和SilverHiveCluster组成。在处理之前,所有原始数据和日志都被发送到GoldCluster进行各种应用、分类和特征提取。生成对应的表后,放入Server。那么如果所有的修改都是批量的,我们就可以轻松实现同步。但是如果发生InterferingChange,为了保持一致性,我们写了一个Re-air工具来同步两个独立的DataClusters。顶部是气流调度。Airflow是我们公司内部开发的一个系统,我们用它来做调度工作。通过一个好的UI,可以实现数据流的分配和管理,控制任务之间的依赖关系和时间调度。同时还可以调度上图右侧的SparkCluster。最底层是PrestoCluster,它是Facebook开发的开源分布式SQL查询引擎,适用于交互式分析和查询。右边对应的是:负责界面展示的Airpal,简单的数据搜索分析工具Caravel,以及Tableau的可视化数据分析产品。如上图所示,我们的DataCluster云是搭建在亚马逊的AWS上,全球部分放在美国东部,中国部分放在新加坡:在存储方面,我们使用了Hadoop的HDFS和AWS的S3。对于资源管理,我们使用YARN。同时我们通过Druid和Amazon的RDS实现了对数据库连接的监控、操作和扩展。在计算方面,我们使用MapReduce、HIVE和Presto。对于调度,我们使用自己开发的Airflow。对于可视化,我们使用了现成的Tableau和Superset。让我们详细了解一下StreamingIngestion过程。首先,我们主要获取两类输入:EventLogsDBMutations为了记录数据库的变化(mutations),我们开发了一个名为SpinalTap的系统来捕捉每个表(table)的变化。该系统由Helix管理,Helix是一个通用的分布式集群管理和调度框架。Helix不仅开源,个人觉得比Zookeeper更好用。然后数据进入Kafka的Jenkins,SparkStreaming,再进入Hbase的数据仓库。上图是Re-air的抽象逻辑图,其中最重要的是实现Gold、Cluster、SilverCluster之间HDFS的实时同步。另外,在同步所有数据的过程中,还可以起到去重的作用。说到两个独立的集群,现在很多公司都在尝试这样的架构,我们也在推Gold+Silver集群模式。它的优点是:可以完全隔离用户作业中的错误。容量规划更容易。我们可以预估两个集群的容量和各种参数,从管理的角度更清晰。有保证的SLA。一旦有了独立集群的概念和能力,就可以快速升级或部署新的功能和应用。具有更可靠的容灾能力。当然,这种架构也有以下缺点:用户容易混淆。根据官方数据,用户很容易混淆两个集群。数据同步,这是两个集群最大的挑战,但是我们用Re-air解决了这个问题。运营成本可能会增加。前面我们提到了两个数据仓库之间的同步策略。具体来说,一般分为两种方式:批量同步。优点是:扫描HDFS、Metastore,复制相关数据,简单粗暴,不需要维护状态;缺点是:当你的存储容量变大的时候,延迟会比较高。增量同步。优点是:更智能,可以记录数据源的变化,通过复制到目标集群进行相关操作。它的延迟很低,我们双方的同步延迟可以达到秒级;缺点是:比较复杂,需要维护和处理的状态很多。如今,业内很多公司都在使用Airflow来实现统一的调度管理系统(ScheduleSystem)。我们公司还开发了自己的工作流系统。它具有独特的UI并提供许多内置的Operator。我们可以通过自定义各种作业(jobs)来支持Hive、Presto、MySQL、S3等系统。当然类似的系统还有:Apache的Oozie、Azkaban、AWS的SWF等,不过Airflow更好用。简单来说,如果要做一套Flow,首先需要定义不同Flow的特性。通过收集,我们可以列出我们环境中的DAG,包括各种成功或失败的任务(任务)。通过如图所示的树状视图(TreeView),可以通过时间状态快速找到被阻塞的地方。也可以理解关键组件之间的逻辑关系,如上图所示。通过任务耗时图,可以了解不同任务的具体耗时情况,出现过的离群值,过去多次运行中最耗时的环节。再来看Superset,它是Apache提供的开源大数据可视化工具,也是我们自己开发的。Superset具有比较强大的功能。你可以自己创建不同的Dashboards(仪表盘)。支持各种应用数据的查询,可以曲线、饼图或表格的形式展示,也可以自定义展示页面。通过简单的页面点击,数据可以立即呈现。同时,它还可以提供多种Matrix(模型矩阵)进行进一步的细粒度分析。Airbnb的大数据架构对中国的支持最后介绍一下大数据架构对中国的支持。对于像Airbnb这样的海外公司在进入中国市场的过程中,针对中国在数据安全合规要求方面的挑战,我们找到了一些相应的解决方案。中国大数据架构的挑战由于Airbnb是一个旅游平台,我们会存储一些个人信息。例如:我们会要求用户上传身份证的相关信息。如果是房东,我们也要求他在家里登记各种资料。因此,我们不能简单地将数据放在Google上。同时,中国的研发团队不仅要最大限度地利用中国本地数据,还要利用位于美国数据中心的全球数据。因此,保证数据的安全和使用效率是我们面临的两大挑战。解决方案我们在亚洲的新加坡有一个GoldandSilverCluster区域中心,我们在中国北京用Jade,结构完全一样,只是业务上有细微差别。如前所述,我们使用HDFS和S3进行存储。事实上,我们在世界上大部分地区都使用HDFS,但我们在JadeCluster中使用S3。DataSupport先来看UniversalExport(统一导出)对数据的支持。我们一直在向中国发送全球信息和数据。上图是数据输出的简要逻辑图。最左边是全局数据表输入。为了安全起见,我们在生产环境中通过Filter进行过滤,并创建了一个基于HDFS的StagingTable。右边是另一个基于S3的StagingTable,所以当数据跨区域到达亚洲的时候,我们会有相应的Jobs去评估和过滤。另外,我们通过两组数据,大大提高了访问数据的速度和系统间复制的效率。服务监控下面简单介绍一下我们端到端的服务水平监控,如下图所示:由于系统对实时性要求比较高,所以我们需要好的监控,知道什么时候什么地方出了问题.因此,我们在整个过程中“打印”了各种时间戳,这样我们就可以时刻监控不同交易之间的时间差,也包括每一步之间的数据差异。如上图所示,我们实现了日志事件的每小时输出,每天近300张表的输出,10TB的数据量,这都得益于我们全球和中国的大数据整体架构。王宇在华中科技大学和石书大学获得本科和硕士学位。曾在Quantcast和高通工作。在Quantcast,主要负责广告的实时竞价和精准投放;在高通,他负责构建芯片数据的云存储和分析系统。现加入爱彼迎中国基础设施事业群(ChinaInfrastructure),担任高级软件工程师,负责爱彼迎中国产品相关基础设施(DataInfrastructure)和反欺诈服务(Anti-Fraud)。【原创稿件,合作网站转载请注明原作者和出处为.com】