99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀大數(shù)據(jù)實(shí)例:高負(fù)載低延遲動(dòng)態(tài)算法解析 _數(shù)據(jù)分析師
大數(shù)據(jù)實(shí)例:高負(fù)載低延遲動(dòng)態(tài)算法解析 _數(shù)據(jù)分析師
2014-11-18
收藏
大數(shù)據(jù)實(shí)例:高負(fù)載低延遲動(dòng)態(tài)算法解析 _數(shù)據(jù)分析師

這篇文章由Datasalt的創(chuàng)始人Ivan de Prado和Pere Ferrera提供,Datasalt是一家專注于大數(shù)據(jù)的公司,推出了Pangool和Spoilt SQL Big Data等開源項(xiàng)目。在這篇文章中,通過BBVA信用卡支付的例子詳解了云計(jì)算中的低延時(shí)方案。

  以下為文章全文:

  使用信用卡進(jìn)行支付的款項(xiàng)是巨大的,但是很明顯,通過分析所有的交易,我們也可以從數(shù)據(jù)中得到內(nèi)在的價(jià)值。比如客戶忠誠(chéng)度、人口統(tǒng)計(jì)數(shù)據(jù)、活動(dòng)的受歡迎程度、商店的建議和許多其他的統(tǒng)計(jì)數(shù)據(jù),這對(duì)商家和銀行來說都是非常有用的,可以改進(jìn)他們與市場(chǎng)的聯(lián)系。在Datasalt,我們已經(jīng)與BBVA銀行合作開發(fā)了一個(gè)系統(tǒng),該系統(tǒng)能夠?qū)Χ嗄甑臄?shù)據(jù)進(jìn)行分析,并為網(wǎng)絡(luò)應(yīng)用程序和移動(dòng)應(yīng)用程序提供不同的方案和統(tǒng)計(jì)資料。

  我們除了需要對(duì)面處理大數(shù)據(jù)輸入這個(gè)主要挑戰(zhàn)外,還要面對(duì)大數(shù)據(jù)的輸出,甚至輸出量比輸入量還要大。并且需要在高負(fù)載下提供更快捷的輸出服務(wù)。

  我們開發(fā)的解決方案中有一個(gè)每月只需幾千美元的基礎(chǔ)設(shè)施成本,這要感謝使用的云(AWS)、Hadoop和Voldemort。在下面的內(nèi)容中,我們將解釋所提出的架構(gòu)的主要特點(diǎn)。

  數(shù)據(jù)、目標(biāo)和首要決定

  該系統(tǒng)利用BBVA的信用卡在世界各地的商店交易信息作為輸入源的分析。很明顯,為了防止隱私問題,數(shù)據(jù)是匿名的、客觀的和分離的,信用卡號(hào)碼被切割。任何因此而產(chǎn)生的見解總是聚集,所以從中得不出任何個(gè)人信息。

  我們計(jì)算每個(gè)店和每個(gè)不同的時(shí)間段的許多統(tǒng)計(jì)資料和數(shù)據(jù)。以下是其中的一些:

  每家店鋪的付款金額的直方圖

  客戶端的保真度

  客戶端人口統(tǒng)計(jì)

  商店的建議(在這購(gòu)買的客戶還購(gòu)買了)、過濾的位置和商店類別等

  該項(xiàng)目的主要目標(biāo)是通過低延遲的網(wǎng)絡(luò)和移動(dòng)應(yīng)用提供所有這些信息到不同的代理(商店、客戶)。因此,一個(gè)苛刻的要求是要能夠在高負(fù)載下能夠提供亞秒級(jí)延遲的服務(wù)。因?yàn)檫@是一個(gè)研究項(xiàng)目,還需要在代碼和要求需要處理方面有一個(gè)高度的靈活性。

  由于更新的數(shù)據(jù)只能每一次并不是一個(gè)問題,我們選擇了一個(gè)面向批處理的架構(gòu)(Hadoop)。并且我們使用Voldemort作為只讀存儲(chǔ)服務(wù)于Hadoop產(chǎn)生的見解,這是一個(gè)既簡(jiǎn)單又超快的鍵/值存儲(chǔ)。

  平臺(tái)

  該系統(tǒng)以Amazon Web Services為基礎(chǔ)建立。具體地說,我們用S3來存儲(chǔ)原始輸入數(shù)據(jù),用Elastic MapReduce(亞馬遜提供的Hadoop)分析,并用EC2服務(wù)于結(jié)果。使用云技術(shù)使我們能夠快速迭代和快速交付功能原型,而這正是我們需要那種項(xiàng)目。

  體系架構(gòu)

  該架構(gòu)具有三個(gè)主要部分:

  數(shù)據(jù)存儲(chǔ):用戶保持原始數(shù)據(jù)(信用卡交易)和得到的Voldemort商店。

  數(shù)據(jù)處理Hadoop的工作流程在EMR上運(yùn)行,執(zhí)行所有計(jì)算并通過Voldemort創(chuàng)建所需要的數(shù)據(jù)存儲(chǔ)。

  數(shù)據(jù)服務(wù):一個(gè)Voldemort集群從數(shù)據(jù)處理層提供預(yù)先計(jì)算好的數(shù)據(jù)。

  每一天,銀行上傳在那一天發(fā)生的所有交易到S3上的一個(gè)文件夾中。這可以讓我們保留所有的歷史數(shù)據(jù)每天所有的信用卡執(zhí)行的交易。所有的這些數(shù)據(jù)都被輸入處理層,所以我們每天都會(huì)重新計(jì)算一切,之后再處理這些數(shù)據(jù),我們就能夠非常靈活。如果需求變更或如果我們找到一個(gè)愚蠢的錯(cuò)誤,我們只需要在下一批中更新項(xiàng)目代碼和所有的固定數(shù)據(jù)就可以了。這讓我們作出了一個(gè)開發(fā)的決定:

  一個(gè)簡(jiǎn)化代碼的基礎(chǔ)架構(gòu)

  靈活性和適應(yīng)性的變化

  易于操作的人為錯(cuò)誤(剛剛修復(fù)的錯(cuò)誤,并重新啟動(dòng)的過程)

  每天,控制器都會(huì)在EMR上啟動(dòng)一個(gè)新的Hadoop集群以及啟動(dòng)處理流程。這個(gè)流程由約16組MapReduce工作組成,計(jì)算各種方案。最后的一部分流程(Voldemort索引)負(fù)責(zé)構(gòu)建稍后會(huì)部署到Voldemort的數(shù)據(jù)存儲(chǔ)文件。一旦流程結(jié)束,得出的數(shù)據(jù)存儲(chǔ)文件就會(huì)上傳到S3上??刂破麝P(guān)閉Hadoop集群,并發(fā)送一個(gè)部署請(qǐng)求給Voldemort。然后,Voldemort會(huì)從S3上下載新的數(shù)據(jù)存儲(chǔ),并執(zhí)行一個(gè)熱交換,完全取代舊的數(shù)據(jù)。

數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請(qǐng)參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }