阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

Airbnb 的大数据平台架构

  • 2016-03-24
  • 本文字数:3220 字

    阅读完需:约 11 分钟

Airbnb 成立于 2008 年 8 月,拥有世界一流的客户服务和日益增长的用户社区。随着 Airbnb 的业务日益复杂,其大数据平台数据量也迎来了爆炸式增长。

本文为 Airbnb 公司工程师 James Mayfield 分析的 Airbnb 大数据平台构架,提供了详尽的思想和实施。

Part 1:大数据架构背后的哲理

Airbnb 公司提倡数据信息化,凡事以数据说话。收集指标,通过实验验证假设、构建机器学习模型和挖掘商业机会使得 Airbnb 公司高速、灵活的成长。

经过多版本迭代之后,大数据架构栈基本稳定、可靠和可扩展的。本文分享了 Airbnb 公司大数据架构经验给社区。后续会给出一系列的文章来讲述分布式架构和使用的相应的组件。James Mayfield 说,“我们每天使用着开源社区提供的优秀的项目,这些项目让大家更好的工作。我们在使用这些有用的项目得到好处之后也得反馈社区。”

下面基于在 Airbnb 公司大数据平台架构构建过程的经验,给出一些有效的观点。

  • 多关注开源社区:在开源社区有很多大数据架构方面优秀的资源,需要去采用这些系统。同样,当我们自己开发了有用的项目也最好回馈给社区,这样会良性循环。
  • 多采用标准组件和方法:有时候自己造轮子并不如使用已有的更好资源。当凭直觉去开发出一种“与众不同”的方法时,你得考虑维护和修复这些程序的隐性成本。
  • 确保大数据平台的可扩展性:当前业务数据已不仅仅是随着业务线性增长了,而是爆发性增长。我们得确保产品能满足这种业务的增长。
  • 多倾听同事的反馈来解决问题:倾听公司数据的使用者反馈意见是架构路线图中非常重要的一步。
  • 预留多余资源:集群资源的超负荷使用让我们培养了一种探索无限可能的文化。对于架构团队来说,经常沉浸在早期资源充足的兴奋中,但 Airbnb 大数据团队总是假设数据仓库的新业务规模比现有机器资源大。

Part 2:大数据架构预览

这里是大数据平台架构一览图。

Airbnb 数据源主要来自两方面:数据埋点发送事件日志到 Kafka;MySQL 数据库 dumps 存储在 AWS 的 RDS,通过数据传输组件 Sqoop 传输到 Hive“金”集群(其实就是 Hive 集群,只是 Airbnb 内部有两个 Hive 集群,分别为“金”集群和“银”集群,具体分开两个集群的原因会在文章末尾给出。)。

包含用户行为以及纬度快照的数据发送到 Hive“金”集群存储,并进行数据清洗。这步会做些业务逻辑计算,聚合数据表,并进行数据校验。

在以上架构图中,Hive 集群单独区分“金”集群和“银”集群大面上的原因是为了把数据存储和计算进行分离。这样可以保证灾难性恢复。这个架构中,“金”集群运行着更重要的作业和服务,对资源占用和即席查询可以达到无感知。“银”集群只是作为一个产品环境。

“金”集群存储的是原始数据,然后复制“金”集群上的所有数据到“银”集群。但是在“银”集群上生成的数据不会再复制到“金”集群。你可以认为 “银”集群是所有数据的一个超集。由于 Airbnb 大部分数据分析和报表都出自“银”集群,所以得保证“银”集群能够无延迟的复制数据。更严格的讲,对于“金”集群上已存在的数据进行更新也得迅速的同步到“银”集群。集群间的数据同步优化在开源社区并没有很好的解决方案,Airbnb 自己实现了一个工具,后续文章会详细的讲。

在 HDFS 存储和 Hive 表的管理方面做了不少优化。数据仓库的质量依赖于数据的不变性(Hive 表的分区)。更进一步,Airbnb 不提倡建立不同的数据系统,也不想单独为数据源和终端用户报表维护单独的架构。以以往的经验看,中间数据系统会造成数据的不一致性,增加 ETL 的负担,让回溯数据源到数据指标的演化链变得异常艰难。Airbnb 采用 Presto 来查询 Hive 表,代替 Oracle、 Teradata、 Vertica、 Redshift 等。在未来,希望可以直接用 Presto 连接 Tableau。

另外一个值得注意的几个事情,在架构图中的 Airpal ,一个基于 Presto,web 查询系统,已经开源。Airpal 是 Airbnb 公司用户基于数据仓库的即席 SQL 查询借口,有超过 1/3 的 Airbnb 同事在使用此工具查询。任务调度系统 Airflow ,可以跨平台运行 Hive,Presto,Spark,MySQL 等 Job,并提供调度和监控功能。Spark 集群时工程师和数据分析师偏爱的工具,可以提供机器学习和流处理。S3 作为一个独立的存储,大数据团队从 HDFS 上收回部分数据,这样可以减少存储的成本。并更新 Hive 的表指向 S3 文件,容易访问数据和元数据管理。

Part 3:Hadoop 集群演化

Airbnb 公司在今年迁移集群到“金和银”集群。为了后续的可扩展,两年前迁移 Amazon EMR 到 EC2 实例上运行 HDFS,存储有 300 TB 数据。现在,Airbnb 公司有两个独立的 HDFS 集群,存储的数据量达 11PB。S3 上也存储了几 PB 数据。

下面是遇到的主要问题和解决方案:
A) 基于 Mesos 运行 Hadoop
早期 Airbnb 工程师发现 Mesos 计算框架可以跨服务发布。在 AWS c3.8xlarge 机器上搭建集群,在 EBS 上存储 3TB 的数据。在 Mesos 上运行所有 Hadoop、 Hive、Presto、 Chronos 和 Marathon。

基于 Mesos 的 Hadoop 集群遇到的问题:

  • Job 运行和产生的日志不可见
  • Hadoop 集群健康状态不可见
  • Mesos 只支持 MR1
  • task tracker 连接导致性能问题
  • 系统的高负载,并很难定位
  • 不兼容 Hadoop 安全认证 Kerberos

解决方法:不自己造轮子,直接采用其它大公司的解决方案。

B) 远程读数据和写数据
所有的 HDFS 数据都存储在持久性数据块级存储卷(EBS),当查询时都是通过网络访问 Amazon EC2。Hadoop 设计在节点本地读写速度会更快,而现在的部署跟这相悖。

Hadoop 集群数据分成三部分存储在 AWS 一个分区三个节点上,每个节点都在不同的机架上。所以三个不同的副本就存储在不同的机架上,导致一直在远程的读数据和写入数据。这个问题导致在数据移动或者远程复制的过程出现丢失或者崩溃。

解决方法:使用本地存储的实例,并运行在单个节点上。

C) 在同构机器上混布任务
纵观所有的任务,发现整体的架构中有两种完全不同的需求配置。Hive/Hadoop/HDFS 是存储密集型,基本不耗内存和 CPU。而 Presto 和 Spark 是耗内存和 CPU 型,并不怎么需要存储。在 AWS c3.8xlarge 机器上持久性数据块级存储卷(EBS)里存储 3 TB 是非常昂贵的。

解决方法:迁移到 Mesos 计算框架后,可以选择不同类型的机器运行不同的集群。比如,选择 AWS c3.8xlarge 实例运行 Spark。AWS 后来发布了“D 系列”实例。从 AWS c3.8xlarge 实例每节点远程的 3 TB 存储迁移数据到 AWS d2.8xlarge 4 TB 本地存储,这给 Airbnb 公司未来三年节约了上亿美元。

D) HDFS Federation
早期 Airbnb 公司使用 Pinky 和 Brain 两个集群联合,数据存储共享,但 mappers 和 reducers 是在每个集群上逻辑独立的。这导致用户访问数据需要在 Pinky 和 Brain 两个集群都查询一遍。并且这种集群联合不能广泛被支持,运行也不稳定。

解决方法:迁移数据到各 HDFS 节点,达到机器水平的隔离性,这样更容易容灾。

E) 繁重的系统监控
个性化系统架构的严重问题之一是需要自己开发独立的监控和报警系统。Hadoop、Hive 和 HDFS 都是复杂的系统,经常出现各种 bug。试图跟踪所有失败的状态,并能设置合适的阈值是一项非常具有挑战性的工作。

解决方法:通过和大数据公司 Cloudera 签订协议获得专家在架构和运维这些大系统的支持。减少公司维护的负担。Cloudera 提供的 Manager 工具减少了监控和报警的工作。

最后陈述

在评估老系统的问题和低效率后进行了系统的修复。无感知的迁移 PB 级数据和成百上千的 Jobs 是一个长期的过程。作者提出后面会单独写相关的文章,并开源对于的工具给开源社区。 大数据平台的演化给公司减少大量成本,并且优化集群的性能,下面是一些统计数据:

  • 磁盘读写数据的速度从 70 – 150 MB / sec 到 400 + MB / sec。
  • Hive 任务提高了两倍的 CPU 时间
  • 读吞吐量提高了三倍
  • 写吞吐量提高了两倍
  • 成本减少百分之七十

查看英文原文: Data Infrastructure at Airbnb


感谢杜小芳对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2016-03-24 19:0010954
用户头像

发布了 43 篇内容, 共 27.7 次阅读, 收获喜欢 7 次。

关注

评论

发布
暂无评论
发现更多内容

无锡梁溪携手极视角共同举办2023无锡首届国际人工智能算法大赛

科技热闻

位移贴图、凹凸贴图和法线贴图之间的差异

3D建模设计

3D渲染 材质纹理贴图 3D材质编辑

3D 建模中的法线贴图解释

3D建模设计

3D渲染 材质纹理贴图 3D材质编辑

AI数字人主播成电商直播标配!

青否数字人

数字人

华为云开发者日,让开发者成为产业发展的决定性力量

华为云开发者联盟

开发者 华为云 华为云开发者联盟 华为云开发者日

泛互联网行业A/B测试全解析:产品优化的创新之道

字节跳动数据平台

大数据 ab测试 企业号12月PK榜 对比试验 数字化增长

PBR纹理贴图类型详解

3D建模设计

3D渲染 材质纹理贴图 3D材质编辑

源码补丁神器—patch-package

京东科技开发者

【鸿蒙千帆起】《钢岚》成为首款基于HarmonyOS NEXT开发的战棋新游

HarmonyOS开发者

HarmonyOS

低代码搭建工程项目管理方案:实现高效智能的数字化管理

天津汇柏科技有限公司

低代码

Mac微软远程连接工具:Microsoft Remote Desktop for Mac中文破解版 支持M1

iMac小白

不可避免,制造企业要在供应链“韧性”上下苦功

用友BIP

数智采购

永久激活版MAMP PRO for Mac破解版

iMac小白

某乳品龙头企业,以精细化费用管理降低企业费效比

用友BIP

降本增效

【堡垒机小问答】堡垒机最早起源于哪里?是国外吗?

行云管家

云计算 网络安全 堡垒机 云堡垒机

法线贴图可以实现什么样的3D效果

3D建模设计

3D渲染 材质纹理贴图 3D材质编辑

3D游戏角色建模纹理贴图处理

3D建模设计

3D渲染 材质纹理贴图 3D材质编辑

SpamSieve for mac(邮件过滤工具) v3.0.3完整激活版

mac

苹果mac Windows软件 SpamSieve 电子邮件过滤软件

“踩坑”经验分享:Swift语言落地实践

百度Geek说

ios swift 开发语言 企业号12月PK榜

java进行数据库操作的并发控制的2种方法

华为云开发者联盟

Java 数据库 后端 华为云 华为云开发者联盟

TF-IDF算法是什么呢?

小齐写代码

跨境通讯

ctsxiyou

通信 通讯

大模型驱动的AI交互式数字人!

青否数字人

数字人

Proxifier for mac破解版 密钥激活 支持M

iMac小白

强大的音频格式转换工具:dBpoweramp Music Converter 激活最新

胖墩儿不胖y

Mac软件 音频格式转换器 音频格式管理

低代码技术特点揭秘:构建灵活安全的多租户数据生态

天津汇柏科技有限公司

低代码

Navicat Premium 15 for Mac中文破解版:设计数据库的利器

iMac小白

S3 调用次数减少 98% | 探索 OpenDAL RangeReader 的奥秘

Greptime 格睿科技

数据库 时序数据 OpenDAL

强大的视频修复软件:Aiseesoft Video Repair免激活最新版

mac大玩家j

Mac软件 视频处理工具 视频修复软件 视频管理

Curve 如何演进 (1):从 EuroSys'23 CFS 论文看文件系统

OpenCurve

分布式 云原生 文件存储 分布式文件存储 分布式文件系统

MacOS数据库:Navicat Premium 15 for Mac中文破解版

iMac小白

Airbnb的大数据平台架构_大数据_侠天_InfoQ精选文章