這篇文章由Datasalt的創始人Ivan de Prado和Pere Ferrera提供,Datasalt是一家專注于大資料的公司,推出了Pangool和Spoilt SQL Big Data等開源專案。 在這篇文章中,通過BBVA信用卡支付的例子詳解了雲計算中的低延時方案。
以下為文章全文:
使用信用卡進行支付的款項是巨大的,但是很明顯,通過分析所有的交易,我們也可以從資料中得到內在的價值。 比如客戶忠誠度、人口統計資料、活動的受歡迎程度、商店的建議和許多其他的統計資料,這對商家和銀行來說都是非常有用的,可以改進他們與市場的聯繫。 在Datasalt,我們已經與BBVA銀行合作開發了一個系統,該系統能夠對多年的資料進行分析,並為網路應用程式和移動應用程式提供不同的方案和統計資料。
我們除了需要對面處理大資料輸入這個主要挑戰外,還要面對大資料的輸出,甚至輸出量比輸入量還要大。 並且需要在高負載下提供更快捷的輸出服務。
我們開發的解決方案中有一個每月只需幾千美元的基礎設施成本,這要感謝使用的雲(AWS)、Hadoop和Voldemort。 在下面的內容中,我們將解釋所提出的架構的主要特點。
資料、目標和首要決定
該系統利用BBVA的信用卡在世界各地的商店交易資訊作為輸入源的分析。 很明顯,為了防止隱私問題,資料是匿名的、客觀的和分離的,信用卡號碼被切割。 任何因此而產生的見解總是聚集,所以從中得不出任何個人資訊。
我們計算每個店和每個不同的時間段的許多統計資料和資料。 以下是其中的一些:
·每家店鋪的付款金額的長條圖
·用戶端的逼真度
·用戶端人口統計
·商店的建議(在這購買的客戶還購買了......)、過濾的位置和商店類別等
該專案的主要目標是通過低延遲的網路和移動應用提供所有這些資訊到不同的代理(商店、客戶)。 因此,一個苛刻的要求是要能夠在高負載下能夠提供亞秒級延遲的服務。 因為這是一個研究專案,還需要在代碼和要求需要處理方面有一個高度的靈活性。
由於更新的資料只能每一次並不是一個問題,我們選擇了一個面向批次處理的架構(Hadoop)。 並且我們使用Voldemort作為唯讀存儲服務于Hadoop產生的見解,這是一個既簡單又超快的鍵/值存儲。
平臺
該系統以Amazon Web Services為基礎建立。 具體地說,我們用S3來存儲原始輸入資料,用Elastic MapReduce(亞馬遜提供的Hadoop)分析,並用EC2服務于結果。 使用雲技術使我們能夠快速反覆運算和快速交付功能原型,而這正是我們需要那種專案。
體系架構
該架構具有三個主要部分:
·資料存儲:使用者保持原始資料(信用卡交易)和得到的Voldemort商店。
·資料處理:Hadoop的工作流程在EMR上運行,執行所有計算並通過Voldemort創建所需要的資料存儲。
·資料服務:一個Voldemort集群從資料處理層提供預先計算好的資料。
每一天,銀行上傳在那一天發生的所有交易到S3上的一個資料夾中。 這可以讓我們保留所有的歷史資料——每天所有的信用卡執行的交易。 所有的這些資料都被輸入處理層,所以我們每天都會重新計算一切,之後再處理這些資料,我們就能夠非常靈活。 如果需求變更或如果我們找到一個愚蠢的錯誤,我們只需要在下一批中更新專案代碼和所有的固定資料就可以了。 這讓我們作出了一個開發的決定:
·一個簡化代碼的基礎架構
·靈活性和適應性的變化
·易於操作的人為錯誤(剛剛修復的錯誤,並重新啟動的過程)
每天,控制器都會在EMR上啟動一個新的Hadoop集群以及啟動處理流程。 這個流程由約16組MapReduce工作組成,計算各種方案。 最後的一部分流程(Voldemort索引)負責構建稍後會部署到Voldemort的資料存儲檔。 一旦流程結束,得出的資料存儲檔就會上傳到S3上。 控制器關閉Hadoop集群,併發送一個部署請求給Voldemort。 然後,Voldemort會從S3上下載新的資料存儲,並執行一個熱交換,完全取代舊的資料。