本期騰訊云要訪談的嘉賓是數(shù)美的一員虎將,他是數(shù)美聯(lián)合創(chuàng)始人&CTO粱堃。
現(xiàn)在就讓我們一起了解一下梁堃眼里的大數(shù)據(jù)以及數(shù)美公司:
數(shù)美的大數(shù)據(jù)能力優(yōu)勢(shì)是什么?具體做了哪些算法層面的優(yōu)化呢?
先做下自我介紹,我是梁堃,數(shù)美的聯(lián)合創(chuàng)始人兼CTO,很榮幸參加此次的采訪?! ?br />
首先我先說(shuō)一下數(shù)美大數(shù)據(jù)方面的優(yōu)勢(shì)。主要來(lái)自三個(gè)方面:
1)數(shù)據(jù)量要夠大,維度要夠多,數(shù)據(jù)更新要及時(shí)?! ?br />
2)架構(gòu)方面:創(chuàng)始團(tuán)隊(duì)來(lái)自百度等一線互聯(lián)網(wǎng)企業(yè),經(jīng)歷過(guò)數(shù)萬(wàn)臺(tái)設(shè)備級(jí)別的大數(shù)據(jù)架構(gòu)和算法開(kāi)發(fā),因此數(shù)美的在線技術(shù)架構(gòu)實(shí)現(xiàn)了微服務(wù)化,目前我們所有的客戶請(qǐng)求可以在10ms之內(nèi)完成風(fēng)險(xiǎn)識(shí)別 ,文本過(guò)濾準(zhǔn)確率可以達(dá)到99.8%以上,誤殺率低于1/1000。
離線架構(gòu):基于Hadoop生態(tài)的比較標(biāo)準(zhǔn)離線數(shù)據(jù)倉(cāng)庫(kù),基于Scracpy去獲取數(shù)據(jù)?! ?br />
數(shù)據(jù)架構(gòu):對(duì)什么人在什么時(shí)間做了什么事情有一個(gè)基礎(chǔ)層,再上一層是數(shù)據(jù)主題層,還有實(shí)現(xiàn)在內(nèi)存緩存層的應(yīng)用層,使得線上應(yīng)用可以基本不做二次處理,通過(guò)查詢的方式獲得所需要的數(shù)據(jù)。 3)策略方面的優(yōu)勢(shì):在于理解數(shù)據(jù)和常見(jiàn)的算法,把數(shù)據(jù)在某個(gè)領(lǐng)域真正的用起來(lái),比如數(shù)美的客戶就有不少像金融類的,比如中信銀行等?! ?br />
舉個(gè)例子,比如大數(shù)據(jù)用于互聯(lián)網(wǎng)金融領(lǐng)域的信貸風(fēng)險(xiǎn)管理,兩個(gè)人年度收入都是X,但是A是每月收入X/12,B的前6個(gè)月收入為0,第7個(gè)月收入是X/2,后5個(gè)月收入又是0,第12個(gè)月又是X/2,前者A的收入穩(wěn)定性明顯好過(guò)B,我們需要參考不少類似收入穩(wěn)定性這樣的指標(biāo),來(lái)綜合計(jì)算?!?br />
2.數(shù)美的大數(shù)據(jù)能力應(yīng)用集中在哪幾個(gè)行業(yè),和騰訊云的哪些產(chǎn)品有結(jié)合?
我先說(shuō)一下數(shù)美產(chǎn)品集中應(yīng)用的領(lǐng)域,數(shù)美現(xiàn)在集中的領(lǐng)域?yàn)椋骸 ?br />
金融領(lǐng)域,可以幫助減少違約和逾期,最大限度消滅欺詐類用戶,對(duì)于金融行業(yè)風(fēng)控是核心能力?! ?br />
社交領(lǐng)域 ,在社交類應(yīng)用里面有不少惡意用戶會(huì)到里面去刷小廣告,色情類文字,會(huì)對(duì)于企業(yè)帶來(lái)運(yùn)營(yíng)壓力和政策風(fēng)險(xiǎn),我們可以提供文本過(guò)濾的功能。
直播領(lǐng)域 ,直播類經(jīng)常會(huì)有充值送的活動(dòng),但是有些主播和黃牛黨會(huì)作弊,可以通過(guò)大數(shù)據(jù)的能力來(lái)避免被少數(shù)惡意用戶給刷走,同時(shí)也可以幫助平臺(tái)識(shí)別注冊(cè)的新用戶是不是機(jī)器人用戶?! ?br />
我們現(xiàn)在與騰訊云產(chǎn)品的結(jié)合,主要用到的是騰訊云CVM、云數(shù)據(jù)庫(kù)Mysql和Redis等,騰訊云對(duì)于云數(shù)據(jù)庫(kù)Mysql進(jìn)行了不少定制優(yōu)化,而且云服務(wù)這種方式也大大地減少了我們數(shù)美的IT運(yùn)維成本。 3.您在BAT擔(dān)任數(shù)據(jù)架構(gòu)師多年,也經(jīng)歷過(guò)大數(shù)據(jù)計(jì)算框架流行趨勢(shì)從Hadoop到Spark的遷移,能見(jiàn)下兩種計(jì)算框架的差異和適用范圍么?Spark在哪些具體領(lǐng)域表現(xiàn)要好過(guò)Hadoop?
是這樣的,Hadoop本身已經(jīng)是一個(gè)大數(shù)據(jù)的生態(tài)了,在Hadoop生態(tài)中Mapreduce計(jì)算框架和 Spark計(jì)算框架是基本對(duì)等的。都屬于大數(shù)據(jù)集的并行計(jì)算,都有一個(gè)shuffle,對(duì)數(shù)據(jù)進(jìn)行分組,然后分別計(jì)算,碰到一定的邏輯的時(shí)候,再次進(jìn)行分組,兩個(gè)計(jì)算框架的計(jì)算泛型都是一樣的?! ?br />
1)Spark對(duì)Mapreduce的重要改進(jìn)是可以把分組數(shù)據(jù)存在內(nèi)存中,反復(fù)進(jìn)行計(jì)算?! ?br />
2)Mapreduce->Spark 基于問(wèn)題的改進(jìn),最早用于統(tǒng)計(jì)分析,只用Mapreduce就夠了,現(xiàn)在數(shù)據(jù)的使用到了下一個(gè)階段,引入更多的維度進(jìn)行數(shù)據(jù)挖掘,K-Means等算法需要基于一份數(shù)據(jù)進(jìn)行反復(fù)的迭代計(jì)算。
Mapreduce上進(jìn)行迭代,每一次迭代都要寫入磁盤,還要在IO隊(duì)列中排隊(duì),在Spark計(jì)算框架中減少了這兩部分的消耗,效率更高。 3)Mapreduce對(duì)于離線數(shù)據(jù)處理適用性比Spark更高,在這種場(chǎng)景下使用Mapreduce有助于提升集群整體的使用率?! ?br />
Mapreduce中50個(gè)Map、50個(gè)Reduce任務(wù)中跑完了 10個(gè)MAP任務(wù)就可以釋放這部分計(jì)算資源,而對(duì)于50個(gè)Spark任務(wù)而言,只跑完了10個(gè)任務(wù)是不能夠釋放10個(gè)已完成任務(wù)的資源的?! ?br />
4.您見(jiàn)過(guò)的數(shù)據(jù)架構(gòu)師犯過(guò)的最大的錯(cuò)誤是什么?導(dǎo)致了什么后果?
我可以舉例講解一下:
1)組成一個(gè)數(shù)據(jù)架構(gòu)師團(tuán)隊(duì),來(lái)避免數(shù)據(jù)問(wèn)題的出現(xiàn),在數(shù)據(jù)設(shè)計(jì)上有一些成熟的方案,比如說(shuō)數(shù)據(jù)倉(cāng)庫(kù)這方面就有很多方案,可以多思考其他人?! ?br />
2)09年做過(guò)一個(gè)數(shù)據(jù)項(xiàng)目,對(duì)于元數(shù)據(jù)的重視度不夠,同一份數(shù)據(jù)存在兩個(gè)位置,會(huì)引發(fā)一定的數(shù)據(jù)不一致和存儲(chǔ)資源浪費(fèi),現(xiàn)在的數(shù)據(jù)架構(gòu)師在數(shù)據(jù)倉(cāng)庫(kù)設(shè)計(jì)的初始階段,會(huì)開(kāi)始更重視元數(shù)據(jù)的規(guī)劃。
3)數(shù)據(jù)表設(shè)計(jì)信息缺乏團(tuán)隊(duì)內(nèi)共享導(dǎo)致計(jì)算資源的浪費(fèi),在基礎(chǔ)數(shù)據(jù)表上建了中間數(shù)據(jù)表,但是其他業(yè)務(wù)不知道有中間數(shù)據(jù)表,也是再?gòu)幕A(chǔ)數(shù)據(jù)表開(kāi)始重新計(jì)算,對(duì)于整體的計(jì)算資源存在一定浪費(fèi)。
5.對(duì)于希望實(shí)施大數(shù)據(jù)的CTO們,有怎樣的實(shí)施順序建議?
我這邊總結(jié)過(guò)三個(gè)階段:怎樣從前端服務(wù)器收集數(shù)據(jù),如何可靠的傳輸數(shù)據(jù),如何對(duì)數(shù)據(jù)進(jìn)行分布式的計(jì)算?! ?br />
1)搭建大數(shù)據(jù)基礎(chǔ)設(shè)施,開(kāi)始收集來(lái)自業(yè)務(wù)系統(tǒng)的數(shù)據(jù),需要重點(diǎn)做好元數(shù)據(jù)的規(guī)劃,同時(shí)對(duì)于歷史日志數(shù)據(jù)、非結(jié)構(gòu)化數(shù)據(jù)需要進(jìn)行批量的結(jié)構(gòu)化?! ?br />
2)從統(tǒng)計(jì)分析階段入手,一方面可以通過(guò)統(tǒng)計(jì)直接支持業(yè)務(wù)決策,比如新產(chǎn)品上線進(jìn)行A/B對(duì)比,來(lái)判斷新特性是否會(huì)提升用戶體驗(yàn)和活躍度,實(shí)現(xiàn)用數(shù)據(jù)來(lái)指導(dǎo)產(chǎn)品。
3)更深刻的理解數(shù)據(jù),并且將數(shù)據(jù)和業(yè)務(wù)結(jié)合起來(lái),2.0階段需要考慮把業(yè)務(wù)系統(tǒng)和數(shù)據(jù)系統(tǒng)對(duì)接起來(lái),讓大數(shù)據(jù)系統(tǒng)智能地發(fā)現(xiàn)業(yè)務(wù)的機(jī)會(huì),控制風(fēng)險(xiǎn),比如說(shuō)廣告投放領(lǐng)域的CTR預(yù)估(點(diǎn)擊率)就是大數(shù)據(jù)實(shí)施2.0階段的典型場(chǎng)景。 6.目前發(fā)現(xiàn)企業(yè)實(shí)施大數(shù)據(jù)項(xiàng)目最主要的三個(gè)問(wèn)題是?
其實(shí),你希望實(shí)施大數(shù)據(jù)的項(xiàng)目的時(shí)候,常見(jiàn)的問(wèn)題包括如何獲取高質(zhì)量的數(shù)據(jù),高質(zhì)量的數(shù)據(jù)是指數(shù)據(jù)的維度要夠多。很多從Mysql數(shù)據(jù)庫(kù)中遷移來(lái)的數(shù)據(jù)就缺少很多和用戶使用場(chǎng)景相關(guān)的數(shù)據(jù),可以考慮通過(guò)日志等方式補(bǔ)齊維度。
另一個(gè)問(wèn)題就是企業(yè)有大量的非結(jié)構(gòu)化數(shù)據(jù),需要批量轉(zhuǎn)化成結(jié)構(gòu)化數(shù)據(jù),有不少企業(yè)甚至于會(huì)在IT系統(tǒng)設(shè)計(jì)中強(qiáng)制要求,全部使用結(jié)構(gòu)化數(shù)據(jù)。大數(shù)據(jù)系統(tǒng)的建設(shè)更多是個(gè)周期較長(zhǎng)的過(guò)程,和一般的產(chǎn)品功能不太一樣,不容易立桿見(jiàn)影,所以建議參考前面的三步走逐步實(shí)施,需要有管理層的強(qiáng)力支持?! ?br />
讓數(shù)據(jù)和業(yè)務(wù)結(jié)合起來(lái),讓系統(tǒng)自動(dòng)的完成一些傳統(tǒng)需要人力完成的工作,當(dāng)前的電商網(wǎng)站的推薦算法,在沒(méi)有大數(shù)據(jù)能力之前基本上是難以想象的一件工程。從企業(yè)當(dāng)前的問(wèn)題挑出一些無(wú)法用簡(jiǎn)單分析完成的工作,嘗試用大數(shù)據(jù)的方式來(lái)分析和解決?! ?br />
7.對(duì)于希望成長(zhǎng)為大數(shù)據(jù)工程師的大學(xué)生,您建議的技術(shù)學(xué)習(xí)路徑是?
我個(gè)人的建議是這樣的: 基礎(chǔ)知識(shí):計(jì)算機(jī)體系結(jié)構(gòu)和統(tǒng)計(jì)學(xué)知識(shí)
分布式架構(gòu):HDFS+Mapreduce開(kāi)始學(xué)習(xí)分布式計(jì)算的核心思想
數(shù)據(jù)架構(gòu):學(xué)習(xí)一些經(jīng)典數(shù)據(jù)倉(cāng)庫(kù)的理念,維表、星形模型,當(dāng)然現(xiàn)在的技術(shù)進(jìn)步了,傳統(tǒng)的技術(shù)不一定適用 策略相關(guān):數(shù)據(jù)挖掘和統(tǒng)計(jì)學(xué)習(xí)相關(guān)的知識(shí)
8.推薦三位您覺(jué)得有意思的程序員,簡(jiǎn)述理由?
我要說(shuō)的這位是我百度的同事陳建,數(shù)美的首席架構(gòu)師,比我早半年到百度,他對(duì)在線的高實(shí)時(shí)性架構(gòu)特別熟悉,當(dāng)出現(xiàn)了一些技術(shù)問(wèn)題的時(shí)候,可以從上層表現(xiàn)一直追到TCP協(xié)議棧的層面。在別人那邊很難解決的問(wèn)題,在他那邊很容易解決。