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