董雪鵬
(南京電子器件研究所,江蘇 南京210016)
在互聯(lián)網(wǎng)社會,每個人的線上生活都在不斷產(chǎn)生相應的數(shù)據(jù),這些數(shù)據(jù)就是互聯(lián)網(wǎng)社會最寶貴的資源。當前互聯(lián)網(wǎng)公司的許多商業(yè)模式都是基于這些數(shù)據(jù)實現(xiàn)的。通過對互聯(lián)網(wǎng)用戶行為數(shù)據(jù)的處理,可以分析用戶的使用習慣,不同類別用戶的興趣特征,從而為不同用戶推送不同的內(nèi)容,提升用戶使用體驗,提升應用日活用戶數(shù)量,進而提升應用商業(yè)化指標。數(shù)據(jù)處理技術(shù)在內(nèi)容推薦場景的應用隨著業(yè)務場景的需求,處理技術(shù)的發(fā)展以及沉淀數(shù)據(jù)質(zhì)量的提升可以分為三個方面:離線批處理,分布式流計算和深度數(shù)據(jù)挖掘。
圖1 MapReduce 結(jié)構(gòu)圖
圖2 流式計算過程示意圖
互聯(lián)網(wǎng)上每天都在產(chǎn)生很多的數(shù)據(jù),為了將最新的數(shù)據(jù)及時準確地送到每個用戶的眼前,需要每天對這些數(shù)據(jù)進行分析計算。比如某個線上商店新上架了一批新的熱門商品,那么電商平臺需要及時將這批商品推薦到潛在客戶的應用程序上。這里就需要進行推薦算法的計算,而且需要定期根據(jù)最新的數(shù)據(jù)進行推薦結(jié)果更新。這里存著一個核心計算問題,計算成本。
在數(shù)據(jù)量達到一定規(guī)模后,所有的計算成本都會呈指數(shù)級增長,包括內(nèi)存、CPU 和時間。為了在有限的時間內(nèi)盡可能快地完成計算任務(保證上架商品盡可能快地呈現(xiàn)到用戶面前),需要將更多的算力聯(lián)合成集群使用。同樣是由谷歌公司發(fā)表的論文“MapReduce”提供了一種解決分布式計算問題的思路,對應的開源解決方案是Hadoop 中的MapReduce 模塊(見圖1)。
MapReduce 幫助數(shù)據(jù)分析人員將存儲在分布式存儲上的海量數(shù)據(jù)分散到不同的服務器上進行并行計算,最終再將分散的計算結(jié)果進行合并得到最新的數(shù)據(jù)分析結(jié)果[1]。因為這種計算往往是面向一定規(guī)模的存量數(shù)據(jù)的,即先將數(shù)據(jù)存儲到硬盤上,當數(shù)據(jù)累積到一定的規(guī)模后再進行批量分析,因此也稱為離線批處理計算。
但是有些場景下這種計算模式是不能夠滿足我們的業(yè)務需求的。比如在導航地圖中,用戶痛點是希望知道當前道路的實時路況,如果間隔一段時間才能得到分析結(jié)果,這種體驗將會是非常糟糕的。此時數(shù)據(jù)分析的主要矛盾是計算的實效性問題,需要有一種快速的數(shù)據(jù)分析技術(shù)來支撐這種業(yè)務場景[2]。
為了能夠提高數(shù)據(jù)分析的效率,降低數(shù)據(jù)分析時延,發(fā)展出了流計算模式[3]。流計算相比較批處理技術(shù)的核心優(yōu)化點有兩個:
(1)純內(nèi)存操作,節(jié)約了數(shù)據(jù)存入磁盤再進行讀取的成本。
(2)將計算分為很多小的鏈式操作,充分利用計算的流水線效應提高了計算吞吐能力。
流式計算開源的解決方案有很多,當前業(yè)界最流行的解決方案是Apache 基金會開源的Flink 實現(xiàn)(如圖2)。
流計算過程中,數(shù)據(jù)像流水線一樣闖過由Operator 組成的處理鏈條,整個數(shù)據(jù)集的平均吞吐延時約等于Operator 中耗時最長節(jié)點的延時[4]。
隨著批處理和流處理場景的落地,這些大數(shù)據(jù)處理技術(shù)滿足了各種用戶最基本的需求,但是互聯(lián)網(wǎng)沉淀的數(shù)據(jù)資源的價值還遠遠沒有被挖掘出來。為了滿足不同用戶個性化的需求,實現(xiàn)千人千面的業(yè)務價值,需要引入一些更高階的計算模式,這就是深度學習技術(shù)[5]。
深度學習技術(shù)的應用是工程、算法和商業(yè)模式在一個合適的時間點發(fā)生碰撞的結(jié)果,通過前面的工程積累,生產(chǎn)上基本解決了大規(guī)模復雜計算的問題。此外,2010 年之后深度學習算法的飛速發(fā)展也為商業(yè)應用提供了強有力的理論支撐,還有多年來各個應用場景沉淀下來的海量的優(yōu)質(zhì)標定數(shù)據(jù),也為技術(shù)的商業(yè)化應用提供了保障。在這樣一個特定的時間點,數(shù)據(jù),算法和工程碰撞在一起成就了數(shù)據(jù)挖掘的成功應用。
大數(shù)據(jù)技術(shù)在互聯(lián)網(wǎng)領(lǐng)域的成功應用有著清晰的發(fā)展脈絡。本質(zhì)上由于互聯(lián)網(wǎng)的普及造成了海量數(shù)據(jù)噴發(fā),而實際生產(chǎn)的需要推動了工程和算法各個方面協(xié)同發(fā)展,最終達到完美的融合,實現(xiàn)了商業(yè)上的成功。這一發(fā)展過程,在其他行業(yè)引入大數(shù)據(jù)技術(shù)進行生產(chǎn)時,值得充分借鑒。