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