最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

Airbnb 架构要点分享

  • 2015-09-21
  • 本文字数:2226 字

    阅读完需:约 7 分钟

Airbnb 成立于 2008 年 8 月,总部位于加利福尼亚州旧金山市。Airbnb 是一个值得信赖的社区型市场,在这里人们可以通过网站、手机或平板电脑发布、发掘和预订世界各地的独特房源,其业务已经覆盖 190 个国家的 40000 座城市。目前,Airbnb 已经完成了 7 轮融资,共募集了 23 亿美元的资金,估值达 250 亿美元。Mike Curtis 是 Airbnb 工程部门的副总裁。近日, The Platform 编辑 Timothy Prickett Morgan 就 Airbnb 的架构要点对他进行了采访报道

Airbnb 自成立之初就部署在 AWS 上,Curtis 认为:

这很重要,我们的工程师可以尽可能地专注于让我们与众不同的东西上,而不用运行一个庞大的基础设施。

目前,Airbnb 已经使用了大约 5000 个 AWS EC2 实例,其中大约 1500 个实例用于部署其应用程序中面向 Web 的部分,其余的 3500 个实例用于各种分析和机器学习算法。而且,随着 Airbnb 的发展,相比于业务处理所需的计算能力,分析和机器学习的计算能力需求增长更快。这是因为,随着 Airbnb 的用户越来越多,其挑战不是找到一个可供出租的地方,而是找到一个 _ 合适 _ 的地方,并且让房主和房客都满意。按照 Curtis 的说法:

我们在工程上所做的一切工作都是为了在人与人之间创建良好的匹配关系。每个旅行者或房主的情况都不相同。人们都有不同的偏好,希望获得的旅行体验就有所不同。因此,我们在工程上所做的大量工作都是关于,如何为了真实世界的线下体验将合适的人匹配在一起。这是我们所做的一切工作的组成部分,其中包括机器学习、搜索排序、欺诈检测……

关键就是,根据房客和房主的偏好(个人资料及在 Airbnb 上的交易和搜索历史),使用搜索引擎和机器学习,找出最好的租房 / 出租选择。而且,选项不能太多,否则用户会很难决定。因此,Airbnb 需要借助机器学习强化搜索,为用户(房客和房主)提供 5 到 10 个选项。这缩短了交易时间,降低了 Airbnb 系统的负载,而用户也更满意。

同许多公司一样,Airbnb 开始时也使用了若干开源软件,但进行了大量的修改和扩展,以便创建一个机器学习强化的搜索引擎。其核心索引技术使用了 Lucene ,但只用了反向文本部分。而所有的排序和机器学习功能则是他们自己编写的。他们的第一个机器学习实验就将预订率提升了4%。Airbnb 的动态定价也是由机器学习算法所支撑。据Curtis 说,当房主按照Airbnb 推荐的价格上下浮动不超过5% 定价,其出租成功率提升了4 倍。

为了使机器学习更容易嵌入应用程序,Airbnb 创建了一个名为 Aerosolve 的工具( GitHub 页面)。该工具有许多功能,但最重要的是让数据科学家可以了解机器学习算法(房屋推荐或定价建议)内部正在执行什么操作,然后运用直觉获得更好的结果。

驱动 Airbnb 站点和分析的核心数据平台是 Hadoop,所有东西都存储在 Hadoop 分布式文件系统中。之前,他们使用 Amazon Elastic MapReduce 服务,并在 AWS EC2 计算实例上部署了自己的 Hadoop,但去年,他们已经迁移到 Cloudera 的企业级 Hadoop 上。此外,Airbnb 使用 S3 存储 Web 站点的图片和 Hadoop 集群的备份数据。

在 HDFS 文件之上,Airbnb 使用由 Facebook 创建并开源的 Hive Presto 创建了一个数据仓库。对于长时间运行的查询,他们使用 MapReduce。Hive 不支持子查询,使用 MapReduce 可以获得同子查询类似的结果。Curtis 指出,Presto 非常强大,它兼容 SQL,使得数据查询非常容易,而且速度很快,虽然功能不如 Hadoop MapReduce 或 Hive 多,但在日常分析中非常有用。他们还创建了一个名为 Airpal 的工具( GitHub 页面),用于设计 SQL 查询,并发送到数据仓库的 Presto 层。

Curtis 告诉 The Platform:

实际上,去年年底,我们做了一次很大的集群迁移,将所有的数据基础设施分成了两个单独的镜像集群:一个用于运行所有关键的业务任务……另一个用于即时查询……

这两个 Hadoop 集群使用 Kafka 保持同步。Airbnb 创建有自己的工作流和 ETL 工具 Airflow GitHub 页面)。该工具已经钩入 HDFS、Hive、Presto、S3、MySQL 和 Postgres。此外,Airflow 接收来自 Airbnb 站点的非结构化数据流,增加结构后转储到 HDFS 上的 Hive 表中。曾经很长一段时间,他们使用成百上千的 CRON 任务来做这项工作,那很容出问题。而 Airflow 提供了一种简洁、可编程的系统,使他们能够查看、编辑、监控和调试 ETL 系统。

为了管理 AWS 上的集群,他们使用 Chef 进行配置管理,并自己开发了很多工具。虽然 Mesos 集群控制器已经被前 Twitter 和 Airbnb 工程师商业化,但他们现在使用 Mesos 并不多, 因为他们觉得:

本质上讲,Mesos 是一个抽象层。其设计初衷是让很多节点看起来像一个节点。我们发现,尤其是在 Mesos 上运行某些新东西时,这个抽象层实际上会隐藏一些东西,增加了我们调试的难度。

最后,Curtis 指出,虽然他们无意运行自己的数据中心,但 IT 团队每隔六个月就会对计算和存储能力及成本进行分析,然后与创建并运营本地数据中心进行对比。他们发现,租用 AWS 的服务可以节省 20% 到 30% 的费用。而按 Curtis 的说法,实际节省的费用可能更多,而且,在数据中心投入过多的精力就无法专注于业务了。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

立即免费注册 AWS 账号,获得 12 个月免费套餐:点击注册

有云计算问题?立刻联系 AWS 云计算专家:立即联系

2015-09-21 19:006597
用户头像

发布了 1008 篇内容, 共 374.2 次阅读, 收获喜欢 341 次。

关注

评论

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

week01 总结

xxx

架构师训练营 week 1 作业

陈春亮

极客大学架构师训练营

架构1期第一周作业-系统设计

道长

极客大学架构师训练营

架构师训练营2期-第一周总结

Geek_no_one

极客大学架构师训练营

第一周命题作业

月殇

极客大学架构师训练营

【第一周】架构方法

云龙

架构师训练营第一周作业

null

ARTS打卡Week 13

teoking

ios

架构师训练营—第一周命题作业UML

Geek_shu1988

作业一:食堂就餐卡系统设计

静海

UML

第一周课后练习

大大猫

极客大学架构师训练营

食堂就餐卡系统UML设计

leo

统一建模语言(UML)

leo

第五周总结

纯纯

食堂就餐卡系统设计

L

食堂就餐卡系统设计

灰羽零

架构师训练营第一周学习总结

null

架构师训练营 week 1 笔记

陈春亮

极客大学架构师训练营

食堂就餐卡系统UML设计

Meow

极客大学架构师训练营

第一周 架构方法学习总结

L

架构师训练营第一期-第一周学习总结

卖猪肉的大叔

架构师训练营第一周总结

赵孔磊

架构师训练营第一期-第一周课后作业

卖猪肉的大叔

微服务架构

纯纯

架构师训练营—第一周学习总结

Geek_shu1988

架构师 UML

[架构师训练营第 1 期]第一周学习总结

猫切切切切切

极客大学架构师训练营

架构师训练营第一周作业

赵孔磊

架构师训练营第1期第1周学习总结

owl

极客大学架构师训练营

第一周学习总结

月殇

极客大学架构师训练营

第一周 作业二:架构设计学习总结【未陌】

a d e

学习 总结 架构设计

架构第一周学习总结

灰羽零

Airbnb架构要点分享_语言 & 开发_谢丽_InfoQ精选文章