Airbnb如何打造大數(shù)據(jù)引擎
與大多數(shù)互聯(lián)網(wǎng)公司一樣,旅行房屋短期租賃網(wǎng)站Airbnb也希望通過分析海量數(shù)據(jù)提升用戶體驗(yàn)和業(yè)務(wù)營(yíng)收。Gigaom最近撰文介紹了Airbnb如何在亞馬遜云的基礎(chǔ)上打造大數(shù)據(jù)基礎(chǔ)架構(gòu),并將數(shù)據(jù)分析作為產(chǎn)品和業(yè)務(wù)決策的基礎(chǔ),編譯整理如下:
“我們希望所有的決策都基于數(shù)據(jù),我們希望成為數(shù)據(jù)驅(qū)動(dòng)的公司”。這是今天硅谷企業(yè)家的夢(mèng)想,Airbnb副總裁Mike Curtis也不例外。Curtis加盟Airbnb不到半年,此前兩年他的履歷是Facebook的工程總監(jiān)。
“在推動(dòng)數(shù)據(jù)科學(xué)在旅游業(yè)的應(yīng)用方面,沒有人比我們做得更多。長(zhǎng)期看,這需要很多金剛鉆。”Curtis說道。
個(gè)性化搜索的挑戰(zhàn)
Airbnb的一大數(shù)據(jù)難題是找到即將推出的個(gè)性化搜索的最佳方式,我們希望客戶能找到符合他們個(gè)性化要求的最佳選擇。
但是為不同的用戶個(gè)體提供個(gè)性化的搜索排名會(huì)帶來非常棘手的算法難題。搜索結(jié)果依據(jù)社區(qū)或地理位置排名還相對(duì)簡(jiǎn)單,但是要加入用戶決策的其他因素,例如社會(huì)關(guān)系、租賃歷史、評(píng)價(jià)等數(shù)據(jù)點(diǎn)后,整個(gè)事情就變得復(fù)雜起來。(如果加入Airbnb的城市、客戶和租戶的人口統(tǒng)計(jì)以及其他租賃元數(shù)據(jù)的話,問題就更加復(fù)雜)
Twitter的個(gè)性化搜索引擎就整合了大量判斷相關(guān)度的因素,其背后涉及的數(shù)據(jù)科學(xué)問題就非常復(fù)雜。
此外,Airbnb還需要通過數(shù)據(jù)分析幫助房主制訂最佳的房屋租賃價(jià)格。
Airbnb也希望能夠走Facebook的路子,讓Hadoop成為所有公司員工都能輕松使用的強(qiáng)大工具。
Mesos是關(guān)鍵

Mesos的架構(gòu)圖
Airbnb實(shí)現(xiàn)大數(shù)據(jù)夢(mèng)想的戰(zhàn)略性工具是一個(gè)名為Mesos的開源集群管理項(xiàng)目。該技術(shù)來自加州伯克利的AMPLab實(shí)驗(yàn)室(該實(shí)驗(yàn)室開發(fā)的技術(shù)例如Spark內(nèi)存并行處理框架可以讓Hadoop運(yùn)行得更快,比MapReduce快100倍)。可以讓用戶在單一資源上運(yùn)行多種計(jì)算框架,當(dāng)然,也可以是多個(gè)獨(dú)立的Hadoop集群。Twitter的使用讓Mesos在互聯(lián)網(wǎng)圈聲名鵲起,上周Mesos已經(jīng)成為Apache的頂級(jí)項(xiàng)目。
對(duì)于Airbnb來說,Hadoop之外,Mesos也是Airbnb工程師們最大化利用亞馬遜AWS云資源的的關(guān)鍵工具。Airbnb是Hadoop的重度用戶,但Curtis希望能測(cè)試流處理的Storm,還希望能用Spark加速Hive查詢。
事實(shí)上,Spark對(duì)搜索排名、定價(jià)、錯(cuò)誤排查等算法模型來說特別有用,這些模型大多涉及機(jī)器學(xué)習(xí),而Spark能大大提升Hadoop的性能,能更快更多地運(yùn)行這些模型。
Airbnb開發(fā)的一個(gè)分布式任務(wù)計(jì)劃器——Chronos,也運(yùn)行在Mesos上。
除了資源管理和效率提升外,Curtis表示Mesos還能有助于推動(dòng)Airbnb搭建高機(jī)動(dòng)性小團(tuán)隊(duì)的工程戰(zhàn)略。Airbnb資源分配的自動(dòng)化水平越高,工程師們就能騰出更多時(shí)間做其他事情。
云計(jì)算的可以,MapReduce的不要

雖然Airbnb運(yùn)行在AWS云上,但通過Mesos,Airbnb可以不使用亞馬遜的Elastic MapReduce Hadoop服務(wù)。據(jù)Curtis透露,Airbnb這么做的原因有很多,其中最重要的一點(diǎn)是可以通過Mesos統(tǒng)一管理所有其他Airbnb需要運(yùn)行的框架,而且能對(duì)Hadoop環(huán)境控制的粒度更好。Elastic MapReduce也可以看作是亞馬遜自己的Hadoop發(fā)行版本,這意味著用戶需要依賴AWS提供補(bǔ)丁升級(jí),而且僅僅是為了Hadoop任務(wù)而準(zhǔn)備的。
Airbnb的另外一位工程師Brenden Matthews上周在Twitter總部的一次演講(演示文稿)介紹了Airbnb如何從Elastic MapReduce遷移到Mesos上,以及在云端運(yùn)行Hadoop經(jīng)常會(huì)遇到的一些技術(shù)難題。
Curtis認(rèn)為,AWS總體來說還是穩(wěn)定的,搭配Mesos使用后,Airbnb可以隨時(shí)做需要做的任何事情。Airbnb的ad hoc分析查詢也不會(huì)與長(zhǎng)時(shí)間運(yùn)行的批量工作流沖突。
“在集群上跑任務(wù)的速度實(shí)際上是一個(gè)資源分配問題,取決于你需要投入的資源”Curtis說道。
總之,云計(jì)算讓Airbnb這樣的創(chuàng)業(yè)公司在前期只有少量投入的情況下就能購(gòu)買和管理服務(wù)器,“想想如今大部分服務(wù)器都被抽象化了,這確實(shí)是一件美妙而驚人的事情。”Curtis感嘆道。
原文鏈接:http://www.ctocio.com/ccnews/13073.html