編譯|薛命燈
編輯|natalie
從 2006 年開源 hadoop 開始,yahoo(也就是現在的 oath)為廣大開發者社群的大資料基礎設施做出了不可磨滅的貢獻。現在,我們又邁出了堅實的一步,yahoo 的大資料處理和服務引擎 vespa 正式在 github 上開源了(
有了 vespa,開發者可以輕鬆地構建基於大資料集實時計算結果的應用,而到目前為止,只有少數幾個大公司具備這樣的能力。
提供服務不是簡單地根據 id 查詢專案或應用模型計算出幾個數字,很多提供服務的應用需要基於大資料集執行計算,比如搜尋和推薦。為了給使用者返回精確的搜尋結果或推薦清單,應用程式需要找出所有符合查詢條件的專案,根據相關度或推薦模型決定每乙個專案的匹配程度,移除重複專案,增加瀏覽輔助項,最後把結果返回給使用者。因為這些計算依賴使用者的具體請求,所以無法預先計算。應用程式必須實時地處理使用者請求,而且要快,因為使用者在等待結果。在大資料集上快速執行上述操作需要很多基礎設施的支援——分布式演算法、資料分布和管理、高效的資料結構和記憶體管理等等。而這些正是 vespa 要為開發者提供的——乙個一站式的引擎,簡潔易用。
我們已經在 oath 的多個產品上使用了 vespa,包括 yahoo.com、yahoo news、yahoo sports、yahoo finance、yahoo gemini、flickr 等。我們使用 vespa 來處理每日數十億個使用者請求,為使用者返回基於數十億文件得出的搜尋結果和推薦內容,並提供定製化內容和廣告。事實上,vespa 每秒可以處理 90,000 次內容和廣告請求,延遲通常只有幾十毫秒。在 flickr 上,vespa 每秒可以處理數百個基於數百億張的關鍵字和影象搜尋。另外,vespa 在 yahoo gemini 上每天處理 30 億個請求,高峰時段每秒鐘 140,000 個請求,直接給公司帶來可觀的收益。
我們基於 vespa 構建的應用具備如下特性:
為了保證速度和伸縮性,vespa 在多台機器上分布資料和計算任務,避免了單點 master 的瓶頸。傳統的應用將資料拉取到乙個無狀態的層上進行處理,而 vespa 是將計算任務推送給資料集。為此,vespa 需要做很多非常棘手的工作,比如當機器發生故障或增加新機器時在後台重新分布資料、實現分布式的低延遲和處理演算法、處理分布式資料一致性等。
我們在構建 alltheweb.com(後被 yahoo 收購)時就開始開發我們的搜尋和服務。在過去幾年中,我們不斷使用新技術重寫我們的引擎。vespa 是我們發布過的專案當中涉及範圍最廣、**量最大的乙個專案。vespa 已經在 yahoo 的大部分關鍵系統上得到了實地驗證,所以我們很高興能夠把 vespa 推向世界。
vespa 賦予了開發者將任意大小資料集和模型填充進服務系統的能力,而且可以實時地得到計算結果,帶來更好的使用者體驗,而且成本更低,比預計算方式具有更低的複雜度。而且,開發者可以與複雜的計算展開實時的互動,不需要啟動離線作業或反覆回過頭來檢查結果。
vespa 可以執行在自有資料中心或雲端。我們提供了 vespa 的 docker 映象和 rpm 安裝包,也提供了執行指南,可以讓 vespa 執行在本地機器或 aws 集群上。
這個( )是我們的文件,裡面包含了乙個入門指南。
管理分布式系統不是件簡單的事情。我們投入了大量精力開發 vespa,其他開發者就可以專注在建立功能上,他們可以實現基於大資料集的實時計算,而不是把時間花在集群和資料的管理上。根據我們的文件所給出的指南,你可以在不到十分鐘的時間內讓乙個應用跑起來。
實時大資料處理框架Storm 推送系統
2.1 分塊 a.資料來源延遲問題 資料高峰時期,由於資料來源一般來自資料庫bin log日誌,讀取執行緒數與讀取速度等因素都可能導致資料來源延遲。b.topic分割槽個數問題 分割槽個數決定了同一組消費者的最大個數。c.storm併發度設定 spout併發度,bolt併發度 d.推送系統消費者個數...
用於實時大資料處理的Lambda架構
如果採用hdfs來儲存資料,我們就可以使用mapreduce來在資料集上構建查詢的view。batch layer的工作可以簡單的用如下偽碼表示 該工作看似簡單,實質非常強大。任何人為或機器發生的錯誤,都可以通過修正錯誤後重新計算來恢復得到正確結果。對view的理解 view是乙個和業務關聯性比較大...
大資料處理
大資料處理的流程主要包括以下四個環節 採集 匯入 預處理 統計 分析 挖掘,下面針對這四環節進行簡單闡述。大資料處理之一 採集 在大資料的採集過程中,其主要特點和挑戰是併發數高,因為同時有可能會有成千上萬的使用者來進行訪問和操作,比如火車票售票 和 它們併發的訪問量在峰值時達到上百萬,所以需要在採集...