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