“我們要利用數(shù)據(jù)做每一個(gè)決定。 我們要將公司建成數(shù)據(jù)驅(qū)動(dòng)公司。”到硅谷走一趟,你會(huì)聽到到處都是類似的豪言壯語(yǔ),至少在Google成為世界上最強(qiáng)大的公司以后是這樣。
上面那一段話是Airbnb的工程副總裁Mike Curtis說(shuō)的。他半年前加入這家公寓分享首創(chuàng)公司,他來(lái)Airbnb之前在Facebook做了近兩年工程總監(jiān)。 我們上個(gè)星期談起Airbnb數(shù)據(jù)驅(qū)動(dòng)的擴(kuò)展宏圖的真正含義,以及Curtis和他的工程團(tuán)隊(duì)如何把這個(gè)宏圖變?yōu)楝F(xiàn)實(shí)。 跟他在互聯(lián)網(wǎng)上與網(wǎng)絡(luò)數(shù)據(jù)打交道的同輩一樣,Curtis認(rèn)為,他和Airbnb的數(shù)據(jù)研究工作人員的工作,與公司戰(zhàn)略性帶頭人的工作有著本質(zhì)的聯(lián)系。
Curtis說(shuō):“我們認(rèn)為,我們?cè)诼糜晤I(lǐng)域推動(dòng)數(shù)據(jù)科學(xué),迄今為止我們做的可能比任何人都多。” 從長(zhǎng)遠(yuǎn)來(lái)看,這樣做——并在過程中同時(shí)獲利——必須利用一些尖端工具。
宏圖: 公寓共享變得更加人性化
Airbnb產(chǎn)品倚重人性化,目前最大的數(shù)據(jù)問題之一就是找出最佳的方法實(shí)施人性化搜索。 他說(shuō),“我們希望客人搜索得到的地點(diǎn)接近他們想找的東西。”
然而,他補(bǔ)充說(shuō),要搞清楚如何為每一個(gè)用戶的搜索排名在算法上是一個(gè)甚為困難的問題。 我們沒有更深入到談到細(xì)節(jié),但問題似乎很清楚。要對(duì)一個(gè)群體的搜索結(jié)果或是對(duì)地域性的搜索結(jié)果排序是很容易的,但要弄清楚如何準(zhǔn)確地考慮一個(gè)用戶的各種因素,如喜好、社會(huì)關(guān)系、租賃歷史、評(píng)論和其他數(shù)據(jù)點(diǎn),其復(fù)雜度會(huì)上升到另一個(gè)層次。(再加上Airbnb的數(shù)據(jù)來(lái)自特定的城市、訪客和主人的地域以及其他元數(shù)據(jù)也是要考慮的因素。)
推特的個(gè)性化搜索引擎用到數(shù)據(jù)科學(xué),因?yàn)樾枰紤]眾多因素以確定相關(guān)性,實(shí)現(xiàn)起來(lái)有相當(dāng)?shù)碾y度,是一個(gè)很好的例子 。
Curtis說(shuō),Airbnb進(jìn)行大量數(shù)字計(jì)算,意圖能幫助公寓主人找到最佳的租金率。
在公司內(nèi)部,Airbnb希望叫板Curits的前雇主Facebook。Facebook在利用Hadoop建造工具方面小有名氣,現(xiàn)在 Facebook公司幾乎每一個(gè)人都直接或間接地用到Hadoop。 Curtis說(shuō),F(xiàn)acebook“真正地讓員工深入接觸數(shù)據(jù)及找出關(guān)鍵的問題。……在Airbnb打造產(chǎn)品的過程中,我也想這樣做。”
Airbnb兜里的一個(gè)重要戰(zhàn)略性工具之一是一個(gè)開源集群管理項(xiàng)目,名為Mesos。Airbnb用Mesos實(shí)現(xiàn)自己的數(shù)據(jù)之夢(mèng)。 Mesos用到的技術(shù),源自加州大學(xué)伯克利分校的AMPLab,可以讓用戶在一個(gè)單一的資源集里運(yùn)行多種類型的計(jì)算框架(也有可能只是幾個(gè)不同的 Hadoop集群)。Mesos在網(wǎng)絡(luò)上的名氣要拜推特所賜,Mesos項(xiàng)目上個(gè)星期一躍而成頂級(jí)Apache項(xiàng)目。
Mesos結(jié)構(gòu)
對(duì)Airbnb而言,Mesos的關(guān)鍵是讓公司里的工程師在利用Hadoop范疇以外,最大限度地利用基于Amazon Web Services的基礎(chǔ)設(shè)施。 Curtis解釋說(shuō),Airbnb在很多地方都用到Hadoop,但是Airbnb想在流處理(stream processing)方面用Storm做實(shí)驗(yàn),Airbnb希望用Spark(也是AMPLab出的東西)來(lái)處理Hive查詢,會(huì)比Hadoop允許的速度快些。
實(shí)際上,Spark在搜索排名、定價(jià)和檢測(cè)服務(wù)的“不良行為”方面有可能特別有用,Curtis說(shuō),“這些東西很多都涉及到機(jī)器學(xué)習(xí)模型,”與Hadoop比,Spark的性能優(yōu)勢(shì)意味著它可以在較短時(shí)間內(nèi)一遍又一遍運(yùn)行這些模型。
Chronos是Airbnb打造的一個(gè)分布式作業(yè)調(diào)度程序,用于云環(huán)境之中。Chronos也是在Mesos上運(yùn)行的。
Airbnb用Mesos的一個(gè)很大的原因肯定是資源管理和效率,不過Curtis說(shuō),Mesos也可以幫助Airbnb在綜合工程戰(zhàn)略方面更進(jìn)一步,可以有助于建立小團(tuán)隊(duì)快步前進(jìn)。 Airbnb自動(dòng)資源配置做得越好,工程師做其他事情的時(shí)間就越多。他說(shuō),“理想的情況下,基本思想是利用Mesos的自動(dòng)化讓極少數(shù)的幾個(gè)工程師可以產(chǎn)生較大的影響。”
云:哇噻!Elastic MapReduce:無(wú)所謂?
雖然Airbnb仍在用AWS云,Airbnb的Mesos卻在考慮從流行Elastic MapReduce的Hadoop服務(wù)里遷移出來(lái)。 據(jù)Curtis說(shuō),走這一步棋有幾個(gè)原因,但最主要的原因是要用Mesos管理所有Airbnb需運(yùn)行的框架,從而對(duì)Airbnb的Hadoop環(huán)境有更精細(xì)的控制。他說(shuō),Elastic MapReduce在很大程度上來(lái)說(shuō)是亞馬遜自己的分布式Hadoop,也就是說(shuō),用戶打補(bǔ)丁或完成類似的東西時(shí)必須依賴AWS,Elastic MapReduce也僅僅是做了Hadoop的事。
另一個(gè)工程師Brenden Matthews在上周在推特總部做了個(gè)演講,講Airbnb從Elastic MapReduce遷移到Mesos。他的幻燈片列出了更多轉(zhuǎn)換的原因,他還列出了有關(guān)在云里運(yùn)行Hadoop的常見挑戰(zhàn)。
Curtis說(shuō),盡管如此,AWS總的來(lái)說(shuō)還是很可靠的,而且還有云的靈活性——與Mesos的組合一起——意味著Airbnb可以想干什么就干什么,想什么時(shí)候干叫什么時(shí)候干。Airbnb的臨時(shí)分析查詢不會(huì)干擾Airbnb的長(zhǎng)時(shí)間運(yùn)行的批量工作流,反過來(lái)也一樣。
Curtis說(shuō),“運(yùn)行群集作業(yè)的速度完全處決于資源配置。我們?cè)诔乩锓哦嗌儋Y源呢?”
Curtis 90年代后期出道于AltaVista,后來(lái)在AOL、Yahoo和Facebook待過。他講起資源時(shí)笑遂顏開,一般來(lái)說(shuō),像Airbnb這樣的初創(chuàng)公司,一開始購(gòu)置和管理服務(wù)器這么少的投資,云計(jì)算提供了很大的潛力發(fā)展空間。他說(shuō),“想想今時(shí)今日,所有的所有都是抽象的……真的是如此的美好和讓人驚嘆。”