盧建麗楊 軒
1.2.內(nèi)蒙古新聞出版廣電局841臺(tái) 內(nèi)蒙古 呼和浩特市 010050
基于Hadoop技術(shù)的廣電大數(shù)據(jù)平臺(tái)構(gòu)建
盧建麗1楊 軒2
1.2.內(nèi)蒙古新聞出版廣電局841臺(tái) 內(nèi)蒙古 呼和浩特市 010050
隨著互聯(lián)網(wǎng)時(shí)代傳播載體和傳播內(nèi)容的快速增長(zhǎng),特別是網(wǎng)絡(luò)電視和視頻網(wǎng)站的快速發(fā)展,廣播電視體系受到了強(qiáng)烈的沖擊。在大數(shù)據(jù)時(shí)代背景下,如何利用大數(shù)據(jù)為用戶提供更加優(yōu)質(zhì)的服務(wù),成為擺在廣電人面前的一個(gè)新課題。本文就如何基于Hadoop技術(shù)構(gòu)建廣電大數(shù)據(jù)平臺(tái),通過挖掘海量數(shù)據(jù),為用戶提供個(gè)性化服務(wù),增強(qiáng)廣電行業(yè)的核心競(jìng)爭(zhēng)力,提出建議。
Hadoop技術(shù) 大數(shù)據(jù) 廣電網(wǎng)絡(luò)
隨著大數(shù)據(jù)時(shí)代的來臨,網(wǎng)絡(luò)電視和視頻網(wǎng)站蓬勃發(fā)展,受此沖擊廣電媒體的受眾、開機(jī)率和廣告份額均出現(xiàn)下滑。廣電媒體受限于傳統(tǒng)媒體播送形式,“不知道用戶在哪里,也不知道用戶的需求是什么”。為提高在大數(shù)據(jù)時(shí)代的競(jìng)爭(zhēng)力,廣電媒體加快了大數(shù)據(jù)技術(shù)應(yīng)用的腳步,開始積累海量用戶數(shù)據(jù),以提供更加人性化、更加優(yōu)質(zhì)的服務(wù)。
本文將探討如何基于Hadoop技術(shù)構(gòu)建廣電大數(shù)據(jù)分析平臺(tái),邏輯上包含:數(shù)據(jù)采集模塊、數(shù)據(jù)存儲(chǔ)模塊、數(shù)據(jù)分析模塊、數(shù)據(jù)應(yīng)用模塊四個(gè)主要部分,利用數(shù)據(jù)挖掘算法,為廣電用戶提供更優(yōu)質(zhì)的服務(wù),提升廣電媒體的市場(chǎng)競(jìng)爭(zhēng)力。
廣電用戶每天產(chǎn)生大量的數(shù)據(jù),例如,觀看節(jié)目時(shí)間、廣告時(shí)段、調(diào)臺(tái)頻率等,針對(duì)這些海量數(shù)據(jù),我們選擇全部采集記錄,全量數(shù)據(jù)分析,這符合大數(shù)據(jù)特點(diǎn)。數(shù)據(jù)采集后進(jìn)入由Hadoop技術(shù)架構(gòu)支撐的存儲(chǔ)模塊,對(duì)采集到的數(shù)據(jù)進(jìn)行預(yù)處理,并存儲(chǔ)在HBase數(shù)據(jù)庫(kù)。HBase是一個(gè)在HDFS上開發(fā)的面向列的分布式數(shù)據(jù)庫(kù)。分析模塊將對(duì)存儲(chǔ)的數(shù)據(jù)進(jìn)行數(shù)據(jù)挖掘,借助諸如聚類分析、分類器等算法,對(duì)海量數(shù)據(jù)中有價(jià)值的數(shù)據(jù)進(jìn)行挖掘分析。應(yīng)用模塊是頂層模塊,提供諸如視頻推薦、廣告精準(zhǔn)投放、節(jié)目動(dòng)態(tài)調(diào)整等高端應(yīng)用。如圖1所示:
圖1 廣電大數(shù)據(jù)分析平臺(tái)架構(gòu)
2.1 Hadoop部署
Hadoop技術(shù)提供了可靠的共享存儲(chǔ)和分析系統(tǒng),其核心是HDFS和MapReduce。HDFS實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ),MapReduce實(shí)現(xiàn)數(shù)據(jù)的分析和處理。
HDFS即Hadoop Distributed File System,是一個(gè)分布式文件系統(tǒng),特點(diǎn)為:(1)適用于對(duì)幾百TB甚至PB級(jí)數(shù)據(jù)的存儲(chǔ),(2)采用流式數(shù)據(jù)訪問模式,即一次寫入,多次讀取,是最高效的訪問模式,(3)不需要在專用服務(wù)器上運(yùn)行,可以在普通服務(wù)器上運(yùn)行。
MapReduce是一個(gè)軟件架構(gòu),用于大規(guī)模數(shù)據(jù)集的并行運(yùn)算。一個(gè)大數(shù)據(jù)若可分為具有同樣計(jì)算過程的數(shù)據(jù)塊,并且這些數(shù)據(jù)塊之間不存在數(shù)據(jù)依賴關(guān)系,則提高處理速度的最好辦法就是并行計(jì)算?!癕ap(映射)”和“Reduce(規(guī)約)”借鑒函數(shù)式編程語(yǔ)言,指定一個(gè)Map(映射)函數(shù),用來把一組鍵值對(duì)映射成一組新的鍵值對(duì),指定并發(fā)的Reduce(規(guī)約)函數(shù),用來保證所有映射的鍵值對(duì)中的每一個(gè)共享相同的鍵組。Map函數(shù)對(duì)所劃分的數(shù)據(jù)并行處理,從不同的輸入數(shù)據(jù)產(chǎn)生不同的中間結(jié)果輸出。同樣,Reduce各自并行計(jì)算,各自負(fù)責(zé)處理不同的中間結(jié)果數(shù)據(jù)集合進(jìn)行reduce處理之前,必須等到所有的map函數(shù)做完。因此,在進(jìn)入reduce前需要有一個(gè)同步障(barrier),這個(gè)階段也負(fù)責(zé)對(duì)map的中間結(jié)果數(shù)據(jù)進(jìn)行收集整理(aggregation&shuffle)處理,以便reduce更有效地計(jì)算最終結(jié)果。最終匯總所有reduce的輸出結(jié)果,即可獲得最終結(jié)果。
目前,Hadoop僅支持Linux作為產(chǎn)品平臺(tái),Windows僅限于作為開發(fā)平臺(tái),但需要借助其他軟件。本文以Linux平臺(tái)為例,介紹Hadoop及相關(guān)軟件的安裝部署。Hadoop以Java語(yǔ)言編寫,因此,部署Hadoop需要先安裝Java 6或更新版本。
2.2 Hadoop安裝
從http://hadoop.apache.org/releases.html頁(yè)面可以下載Hadoop發(fā)布包。
本文下載文件為:hadoop-2.7.2.tar.gz,% tar xcf hadoop-2.7.2.tar.gz
將Hadoop的安裝目錄添加到環(huán)境變量中,本文中Hadoop解壓到/usr/software下,將環(huán)境變量添加到/etc/profile文件中。保存后,在命令行輸入source profile以執(zhí)行操作:
% exportHADOOP_INSTALL=/usr/software/ hadoop-2.7.2
%export PATH=$PATH:$HADOOP_INSTALL/ bin:$HADOOP_INSTALL/sbin
%source./profile
可通過輸入以下指令來判斷Hadoop是否工作:
%hadoop version
Hadoop 2.7.2
Subversion https://git-wip-us.apache.org/repos/asf/ hadoop.git-r b165c4fec792ce23f546c64604acf0e41
Compiled by jenkins on 2016-01-26T00:08Z
2.3 Hadoop配置
Hadoop各個(gè)組件均可利用XML文件進(jìn)行配置。在hadoop-2.7.2/conf目錄下,有core.site.xml文件用于配置通用屬性,hdfs-site.xml文件用于配置HDFS屬性,mapred-site.xml文件用于配置MapReduce屬性。
Hadoop有三種運(yùn)行模式:(1)獨(dú)立模式:無需運(yùn)行任何守護(hù)進(jìn)程,所有程序都在同一個(gè)JVM上執(zhí)行。在獨(dú)立模式下測(cè)試和調(diào)試MapReduce程序很方便,因此該模式適合于開發(fā)階段;(2)偽分布模式:Hadoop守護(hù)進(jìn)程運(yùn)行在本地機(jī)器上,模擬一個(gè)小規(guī)模的集群。(3)全分布模式:Hadoop守護(hù)進(jìn)程運(yùn)行在一個(gè)集群上。不同模式下的關(guān)鍵配置屬性,如表1所示。
(1)配置SSH
本文采用偽分布模式。在偽分布模式下工作必須啟動(dòng)守護(hù)進(jìn)程,而啟動(dòng)守護(hù)進(jìn)程的前提是已經(jīng)成功安裝SSH。同時(shí),需要確保用戶能夠遠(yuǎn)程登錄到本機(jī),并且可以不輸入密碼登錄。在命令行中輸入:
%sudo apt-get install ssh——安裝ssh
之后,需要基于空口令創(chuàng)建一個(gè)SSH秘鑰,以實(shí)現(xiàn)無密碼登錄。
%ssh-keygen-t rsa——?jiǎng)?chuàng)建一個(gè)以rsa算法加密的秘鑰。
輸入命令后,系統(tǒng)會(huì)連續(xù)提問,全部選擇默認(rèn)值,就可以創(chuàng)建空口令的SSH秘鑰。
之后,輸入%cat~./ssh/id_rsa.pub>>~/.ssh/ authorized_keys——將id_rsa.pub文件內(nèi)容添加到authorized_keys文件末尾,且不刪除文件中的原有信息,用以下命令測(cè)試:
%ssh localhost
Welcome to Ubuntu 14.04.4 LTS(GNU/Linux 3.16.0-71-generic x86_64)
Last login:web Jun 22 16:00:18 2016 from localhost
表示SSH安裝配置成功
(2)格式化HDFS文件系統(tǒng)
在使用Hadoop前必須格式化生成一個(gè)全新的HDFS系統(tǒng)。該過程創(chuàng)建一個(gè)空文件系統(tǒng),僅包含存儲(chǔ)目錄和namenode的初始版本。由于namenode管理文件系統(tǒng)的元數(shù)據(jù),并且datanode可以動(dòng)態(tài)地加入或離開集群。因此,這個(gè)格式化過程不針對(duì)datanode。
表1 不同模式下的關(guān)鍵配置屬性
在命令行中輸入:
%hadoop namenode-format
(3)啟動(dòng)守護(hù)進(jìn)程
為啟動(dòng)HDFS和MapReduce守護(hù)進(jìn)程,輸入如下命令:
%start-dfs.sh
%start-mapred.sh
本地計(jì)算機(jī)將啟動(dòng)以下守護(hù)進(jìn)程:一個(gè)namenode,一個(gè)輔助namenode,一個(gè)datanode,一個(gè)jobtracker和一個(gè)tasktracker??梢酝ㄟ^Web界面查看:在 http://localhost:50030/查看 jobtracker或在http://localhost:50070/查看namenode。
以上Hadoop部署完畢。Hbase分布式數(shù)據(jù)庫(kù)和Zookeeper分布式協(xié)調(diào)服務(wù)的安裝與Hadoop安裝類似,這里不再贅述。安裝完Hbase和Zookeeper,就完成了廣電大數(shù)據(jù)分析平臺(tái)的框架搭建工作。接下來將在這個(gè)框架基礎(chǔ)上進(jìn)行數(shù)據(jù)分析。
大數(shù)據(jù)的核心在于對(duì)擁有的數(shù)據(jù)進(jìn)行數(shù)據(jù)挖掘。數(shù)據(jù)挖掘是指從大量數(shù)據(jù)中挖掘模式和獲取知識(shí)的過程。數(shù)據(jù)挖掘的一般流程包括:數(shù)據(jù)準(zhǔn)備、信息挖掘、結(jié)果表達(dá)三個(gè)處理階段。數(shù)據(jù)準(zhǔn)備是指從相關(guān)的數(shù)據(jù)源中選取所需的數(shù)據(jù)樣本,將其整合成用于數(shù)據(jù)分析的樣本集。信息挖掘是指利用各種數(shù)據(jù)挖掘算法,將所得的樣本集中包含的規(guī)律信息或潛在模式挖掘出來。結(jié)果表達(dá)是指盡可能以用戶可理解的方式,將找出的規(guī)律或模式表示出來。
雖然在邏輯上將廣電大數(shù)據(jù)分析平臺(tái)分為數(shù)據(jù)分析和數(shù)據(jù)應(yīng)用,但在實(shí)際應(yīng)用中,數(shù)據(jù)分析與數(shù)據(jù)應(yīng)用往往是相互聯(lián)系的,本文以視頻推薦系統(tǒng)為例,詳細(xì)介紹如何使用算法對(duì)Hadoop中的大數(shù)據(jù)進(jìn)行分析。視頻推薦系統(tǒng)根據(jù)用戶的歷史行為數(shù)據(jù)和視頻的內(nèi)容特征數(shù)據(jù)進(jìn)行挖掘和分析,構(gòu)建出用戶畫像和視頻的物品畫像,同時(shí),利用各種上下文信息,做出對(duì)用戶未來選擇行為的預(yù)測(cè),完成對(duì)特定用戶的推薦。如果你喜歡一件東西X,而另一個(gè)東西Y與之十分相似,就很可能喜歡Y,這就是基于物品的協(xié)同過濾算法思想。本文重點(diǎn)闡述基于物品的協(xié)同過濾算法ItemCF。
3.1 基于物品的協(xié)同過濾算法ItemCF
基于物品的協(xié)同過濾,是指通過用戶對(duì)不同物品的評(píng)分來評(píng)測(cè)物品之間的相似性,并基于物品之間的相似性做出推薦。簡(jiǎn)單來講就是:給用戶推薦和他之前喜歡的物品相似的物品。如表2所示:
表2 基于物品的協(xié)同過濾算法
基于物品的視頻推薦算法流程,如圖2所示:
假設(shè)用戶為Ui(i=1,2,3,...,n),視頻 Mj(j=1,2,3,...,m),Ui對(duì)Mj的評(píng)分為。以物品Ij為例,基于物品的協(xié)同過濾算法可分為兩步:
圖2 基于物品的視頻推薦算法流程
(1)對(duì)于目標(biāo)用戶及其待評(píng)分的視頻,根據(jù)用戶對(duì)視頻的歷史偏好數(shù)據(jù),計(jì)算視頻與其他已評(píng)分視頻之間的相似度Sim(j,i),找到與視頻相似度高的視頻集合N(u)。
(2)根據(jù)所有視頻N(u)的評(píng)分情況,選出N(u)中目標(biāo)用戶Ui可能喜歡的且沒有看過的項(xiàng)目進(jìn)行推薦,并預(yù)測(cè)評(píng)分。
視頻間的相似度一般采用修正后的余弦度計(jì)算公式Sim(j,i)
公式中,表示用戶u對(duì)視頻i的評(píng)分,表示用戶u對(duì)他所看過的視頻的平均打分。
用戶對(duì)視頻的喜好程度用以下公式表示:
公式中,表示用戶u對(duì)視頻j的喜好程度,視頻i是用戶看得較多的視頻,表示用戶u對(duì)視頻i的偏好程度,之后根據(jù)來對(duì)候選的視頻進(jìn)行排序,為用戶推薦分值高的視頻。
3.2 Mahout的安裝配置
Mahout開源項(xiàng)目,是一個(gè)分布式機(jī)器學(xué)習(xí)算法的集合,它基于Hadoop實(shí)現(xiàn),把很多運(yùn)行于單機(jī)上的算法,轉(zhuǎn)化為MapReduce模式,大大提升了算法可處理的數(shù)據(jù)量和處理性能。
3.2.1 下載Mahout
http://archive.apache.org/dist/mahout/
3.2.2 解壓
tar-zxvf apache-mahout-distribution-0.12.2.tar. gz
3.2.3 配置環(huán)境變量
配置Mahout環(huán)境變量
#set mahout environment export
MAHOUT_HOME=/usr/software/mahout/mahoutdistribution-0.12.2
export MAHOUT_CONF_DIR=$MAHOUT_ HOME/conf
export PATH=$MAHOUT_HOME/conf:$MA HOUT_HOME/bin:$PATH
執(zhí)行命令mahout。若列出一些算法,則表示安裝成功。
我們可以利用開源的mahout實(shí)現(xiàn)基于物品的視頻推薦算法。這里僅舉例視頻推薦系統(tǒng),還可以根據(jù)實(shí)際業(yè)務(wù)需要來擴(kuò)展廣電大數(shù)據(jù)平臺(tái)的分析和應(yīng)用模塊,做到服務(wù)于實(shí)際工作。
本文探討了廣電大數(shù)據(jù)分析平臺(tái)的總體建設(shè)思想,介紹了如何搭建Hadoop數(shù)據(jù)平臺(tái)。隨著大數(shù)據(jù)Hadoop的不斷完善和廣電在互聯(lián)網(wǎng)業(yè)務(wù)上的持續(xù)發(fā)力,基于Hadoop的大數(shù)據(jù)分析應(yīng)用平臺(tái)必將發(fā)揮越來越重要的作用。
[1]Tom Wbite.Hadoop權(quán)威指南[M].北京:清華大學(xué)出版社,2015:3-4
[2]Jiawei Han Michelime Kamber Jian Pei.數(shù)據(jù)挖掘概念與技術(shù)[M].北京:機(jī)械工業(yè)出版社,2012:6.
[3]牛溫佳,劉吉強(qiáng),石川.用戶網(wǎng)絡(luò)行為畫像——大數(shù)據(jù)中的用戶網(wǎng)絡(luò)行為畫像分析與內(nèi)容推薦應(yīng)用[M].北京:電子工業(yè)出版社,2016:8
審稿人:魏朝輝 內(nèi)蒙古新聞出版廣電局監(jiān)管中心正高級(jí)工程師
責(zé)任編輯:王學(xué)敏
TP312
B
2096-0751(2017)02-0016-05
盧建麗 內(nèi)蒙古新聞出版廣電局841臺(tái) 工程師
楊 軒 內(nèi)蒙古新聞出版廣電局841臺(tái) 助理工程師