專注新聞資訊的梨視頻近來(lái)表現(xiàn)亮眼。
梨視頻由前澎湃新聞?wù)崎T(mén)人邱兵創(chuàng)立。
在上線之前,它就獲得了黎瑞剛?cè)A人文化近1億美元投資,旗下《微辣》欄目總播放量已經(jīng)超過(guò)4億,并在上線1個(gè)月后獲得“年度視頻新媒體”大獎(jiǎng)。
這樣一款脫胎于傳統(tǒng)媒體的創(chuàng)業(yè)型短視頻軟件,在視頻領(lǐng)域異軍突起,不僅讓內(nèi)人士在感嘆梨視頻內(nèi)容生產(chǎn)力之強(qiáng)大的同時(shí),也詫異于是誰(shuí)在為梨視頻的龐大用戶體量提供技術(shù)支撐、保證視頻流暢?
今天就和大家分享梨視頻如何基于阿里云快速搭建一個(gè)套推薦系統(tǒng)。
以下案例分享全部基于實(shí)戰(zhàn)——梨視頻第一代推薦系統(tǒng)。
梨視頻在上線初期用戶量增長(zhǎng)很快,基于阿里云搭建的推薦系統(tǒng)扛住了流量的壓力也很出色的完成了初期用戶興趣視頻推薦功能。
推薦系統(tǒng)脫離不開(kāi)數(shù)據(jù)收集處理系統(tǒng),數(shù)據(jù)既是推薦數(shù)據(jù)來(lái)源,也是驗(yàn)證推薦系統(tǒng)重要依據(jù)。
選型
對(duì)梨視頻這樣的創(chuàng)業(yè)公司來(lái)說(shuō),技術(shù)選型需要考慮的是:快速構(gòu)建系統(tǒng),實(shí)現(xiàn)業(yè)務(wù)的快速落地。
我們核心策略是積極擁抱云平臺(tái),使用開(kāi)源系統(tǒng)。
購(gòu)置物理機(jī),意味著有較大的一次性投入,使用云平臺(tái)則可以逐漸投入基礎(chǔ)IT資源。
對(duì)于基礎(chǔ)的組件,首選的是開(kāi)源系統(tǒng),再次看國(guó)內(nèi)大公司是否有使用。
最終,我們選擇的是阿里云的E-MapReduce開(kāi)源大數(shù)據(jù)平臺(tái)(以下簡(jiǎn)稱EMR)。
這個(gè)產(chǎn)品在提供開(kāi)源組件(Hadoop、Spark、HBase)的同時(shí),也提供了非常有價(jià)值的運(yùn)維服務(wù)及作業(yè)流等基礎(chǔ)服務(wù),特別是無(wú)縫結(jié)合OSS及Logservice,能快速構(gòu)建數(shù)據(jù)中心。
梨視頻的數(shù)據(jù)包含兩大部分: 用戶使用的習(xí)慣 和 在梨視頻中發(fā)布的內(nèi)容。
用戶使用習(xí)慣主要分布在用戶使用的客戶端,需要應(yīng)用一定方式進(jìn)行收集。
后臺(tái)拍客和編輯生成的內(nèi)容等結(jié)構(gòu)化數(shù)據(jù)也需要定時(shí)推送到數(shù)據(jù)處理中心和用戶使用習(xí)慣一起被清洗,分析,形成各種模型和數(shù)據(jù)。
梨視頻數(shù)據(jù)中心基于阿里云E-MapReduce 集群進(jìn)行搭建。
用了它,梨視頻可以很方便地通過(guò)阿里云控制臺(tái)新建EMR集群,集群提供了HDFS,Hadoop, Spark,Sqoop,HBase,Hive等等基本的大數(shù)據(jù)處理套件,而且和OSS存儲(chǔ)也是無(wú)縫打通, 存儲(chǔ)在OSS上數(shù)據(jù)可以使用EMR集群進(jìn)行分析,使用起來(lái)非常方便。
日志收集
梨視頻日志收集在APP端進(jìn)行壓縮然后定時(shí)上傳,壓縮為了減少用戶的流量使用,定時(shí)是為了減少上傳次數(shù),避免過(guò)多的網(wǎng)絡(luò)鏈接,加重App的負(fù)擔(dān)。
服務(wù)器端基于ECS搭建Nginx服務(wù)器,并結(jié)合lua腳本對(duì)日志內(nèi)容進(jìn)行解壓。
日志推送到LogStore。在阿里云服務(wù)中有日志服務(wù),logstore是日志服務(wù)中的存儲(chǔ)單元。下圖展示了logstore的全貌
創(chuàng)建logstore, 這里可以制定shard數(shù)量,在logstore存儲(chǔ)的時(shí)長(zhǎng)等參數(shù)。
同時(shí)logstore提供日志短時(shí)存儲(chǔ),查詢索引等功能,可以選擇使用,比較方便。
只要是阿里云ECS機(jī)器上產(chǎn)生的本地文件都可以發(fā)送到logstore中進(jìn)行存儲(chǔ),轉(zhuǎn)儲(chǔ)。
創(chuàng)建過(guò)程中,還可以指定原始日志的格式,可以指定每個(gè)字段在logstore中的名字。
收集的日志可以進(jìn)行投遞,這里梨視頻的日志全部推送到oss上進(jìn)行永久存儲(chǔ)。
至此用戶適用習(xí)慣數(shù)據(jù)已經(jīng)從App客戶端推送到LogStore和OSS中,可用于后續(xù)分析。
業(yè)務(wù)數(shù)據(jù)歸集
業(yè)務(wù)數(shù)據(jù)都存儲(chǔ)在云數(shù)據(jù)庫(kù)RDS(MySQL)數(shù)據(jù)庫(kù)中,利用Sqoop腳本并配合EMR的任務(wù)調(diào)度定時(shí)將數(shù)據(jù)推送到EMR集群HIVE庫(kù)中。
Sqoop腳本
EMR任務(wù)部署
任務(wù)的定時(shí)調(diào)度由EMR平臺(tái)自動(dòng)支持,只需配置就可以方便完成任務(wù)調(diào)度。
以上是業(yè)務(wù)數(shù)據(jù)的推送到數(shù)據(jù)中心方式。
數(shù)據(jù)完成收集和歸集后,都存儲(chǔ)在EMR集群上,剩下的工作就是要對(duì)數(shù)據(jù)進(jìn)行處理。
首先會(huì)對(duì)數(shù)據(jù)進(jìn)行分層設(shè)計(jì),底層部分是日志清洗后的數(shù)據(jù)和推送到EMR的業(yè)務(wù)數(shù)據(jù),中間層是結(jié)合用戶行為和業(yè)務(wù)數(shù)據(jù)的總和視圖。最上層是各種報(bào)表和模型。
數(shù)據(jù)的處理過(guò)程全部基于EMR集群,由實(shí)時(shí)的分析,通過(guò)Spark streaming消費(fèi)logstore的實(shí)時(shí)流,將分析結(jié)果寫(xiě)入Redis供查詢,可以實(shí)時(shí)統(tǒng)計(jì)性能,用戶量等。
離線的分析主要通過(guò) Spark的離線任務(wù)進(jìn)行,可以進(jìn)行數(shù)據(jù)統(tǒng)計(jì)也可以進(jìn)行模型訓(xùn)練。
推薦系統(tǒng)
下圖為梨視頻第一期推薦系統(tǒng)的概貌
梨視頻推薦系統(tǒng)主要由三部分組成:Online、Near Online、Offline。該推薦系統(tǒng)是基于阿里云提供的組件搭建而成,主要涉及了LogStore、EMR、Redis、RDS等。
下面來(lái)具體看一下每部分的工作方式。
Online召回和排序
Online主要用于相應(yīng)用戶請(qǐng)求,其中主要包含兩大功能:召回和排序。
Online部分是采用兩個(gè)模塊實(shí)現(xiàn)的:底層是基礎(chǔ)搜索模塊,主要完成的是工作是構(gòu)建索引,依據(jù)基礎(chǔ)排序模型排序;上層是高級(jí)搜索模塊,通過(guò)響應(yīng)上層請(qǐng)求,獲取用戶畫(huà)像數(shù)據(jù),如用戶ID,標(biāo)簽,根據(jù)請(qǐng)求,將畫(huà)像數(shù)據(jù)轉(zhuǎn)化為召回條件。
高級(jí)搜索模塊將召回條件下發(fā)到基礎(chǔ)搜索模塊,基礎(chǔ)搜索模塊會(huì)提供與這才召回條件相關(guān)的內(nèi)容,返回給高級(jí)搜索模塊。高級(jí)搜索模塊獲得召回結(jié)果后,對(duì)其進(jìn)行排序,通常會(huì)根據(jù)語(yǔ)義模型排序、效果排序以及規(guī)則排序(保證多樣性)。
基礎(chǔ)搜索模塊讀取阿里云RDS DTS數(shù)據(jù)流,該數(shù)據(jù)流可以實(shí)時(shí)反饋數(shù)據(jù)庫(kù)更改,當(dāng)編輯在后臺(tái)更新了內(nèi)容數(shù)據(jù)庫(kù)后,DTS會(huì)自動(dòng)將數(shù)據(jù)流推送到基礎(chǔ)搜索模塊,然后構(gòu)建索引。
DTS 接收服務(wù)器采用主從同步,保證一臺(tái)失敗,另一臺(tái)能替代。DTS接收服務(wù)還負(fù)責(zé)向多臺(tái)基礎(chǔ)服務(wù)分發(fā)增量信息,保證每個(gè)基礎(chǔ)服務(wù)實(shí)例都能及時(shí)更新到增量信息。
Near Online部分利用EMR中Spark Streaming實(shí)時(shí)消費(fèi)日志搜集系統(tǒng)Log Store中的日志,分析的內(nèi)容分為兩個(gè)部分:
一是用戶24小時(shí)內(nèi)興趣分布的狀況,24小時(shí)以前的數(shù)據(jù)通過(guò)離線的方式按天反饋到線上,用戶24小時(shí)之內(nèi)的內(nèi)容通過(guò)實(shí)時(shí)的方式反饋,構(gòu)建成用戶興趣分布圖;
二是用戶24小時(shí)看過(guò)和不喜歡的內(nèi)容會(huì)在三到五秒內(nèi)反饋給模型,下一次推薦時(shí)不再出現(xiàn)該類內(nèi)容。
Spark Streaming的作業(yè)基于python spark 編寫(xiě), 阿里云提供了loghub.py接口, 可以非常方便的進(jìn)行streaming編寫(xiě)。
只需要指定日志服務(wù)logstore信息,定義好應(yīng)用邏輯,就可以創(chuàng)建streaming處理日志流。
Offline:用戶興趣畫(huà)像
用戶畫(huà)像是推薦系統(tǒng)中的重中之重,推薦系統(tǒng)可以根據(jù)用戶畫(huà)像給用戶推薦其可能感興趣的內(nèi)容。
新聞趨勢(shì)和其他領(lǐng)域略有不同,它是隨著時(shí)間、事件不斷變化的,如八月份的奧運(yùn)會(huì)、剛剛結(jié)束的美國(guó)大選等。
那么該如何把握新聞的趨勢(shì)呢?
一是根據(jù)自身發(fā)布的內(nèi)容,在某一趨勢(shì)到來(lái)時(shí),發(fā)布的內(nèi)容必然會(huì)偏向該趨勢(shì);
二是整站的用戶表現(xiàn),多數(shù)用戶會(huì)關(guān)注目前最火的新聞,兩者相綜合,既可以形成新聞趨勢(shì)。
另外一點(diǎn)是個(gè)人長(zhǎng)期興趣,比如長(zhǎng)期關(guān)注娛樂(lè)、體育版塊,通過(guò)分析用戶長(zhǎng)期在整站的行為,形成用戶長(zhǎng)期興趣分布。
新聞趨勢(shì)和個(gè)人長(zhǎng)期興趣通過(guò)貝葉斯模型,整體再結(jié)合時(shí)間的分布構(gòu)建出用戶長(zhǎng)期興趣模型(即用戶畫(huà)像)。
用戶畫(huà)像任務(wù)涉及到用戶行為,也涉及到內(nèi)容的信息,該任務(wù)較為復(fù)雜,阿里云EMR系統(tǒng)提供了按照計(jì)劃調(diào)度的模式, 每個(gè)計(jì)劃可以有多個(gè)任務(wù), 多任務(wù)串行執(zhí)行,可以方便完成復(fù)雜任務(wù)的調(diào)度。
offline的內(nèi)容質(zhì)量評(píng)估
在Offline部分,還需要對(duì)內(nèi)容進(jìn)行質(zhì)量評(píng)估。之所以對(duì)內(nèi)容進(jìn)行評(píng)估,是因?yàn)樵诨A(chǔ)搜索模塊需要對(duì)內(nèi)容進(jìn)行排序。
目前,梨視頻引進(jìn)了基于人類記憶遺忘模型對(duì)質(zhì)量進(jìn)行評(píng)估,該模型遵循具有以下三個(gè)原則:
時(shí)效性強(qiáng)的內(nèi)容,熱度分衰減更快;
時(shí)效性弱的內(nèi)容,熱度分衰減慢;
最近發(fā)布的內(nèi)容較歷史稿件更有優(yōu)勢(shì),更容易被用戶發(fā)現(xiàn)。
線上用戶召回排序評(píng)估
計(jì)算機(jī)領(lǐng)域會(huì)有一些策略存在,進(jìn)而會(huì)涉及到優(yōu)化問(wèn)題;而優(yōu)化的前提是必須明確現(xiàn)狀,明確現(xiàn)狀則就需要對(duì)現(xiàn)狀進(jìn)行評(píng)估。
這里主要介紹下單用戶實(shí)時(shí)評(píng)估和多用戶批量評(píng)估。
聯(lián)系客服