2021年HBASE互聯(lián)網(wǎng)電視論文_第1頁(yè)
2021年HBASE互聯(lián)網(wǎng)電視論文_第2頁(yè)
2021年HBASE互聯(lián)網(wǎng)電視論文_第3頁(yè)
2021年HBASE互聯(lián)網(wǎng)電視論文_第4頁(yè)
2021年HBASE互聯(lián)網(wǎng)電視論文_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、HBase互聯(lián)網(wǎng)電視論文 1.1Hbase原有系統(tǒng)架構(gòu) HBase是ApacheHadoop的數(shù)據(jù)庫(kù),能夠?qū)Υ笮蛿?shù)據(jù)提供隨機(jī)、實(shí)時(shí)的讀寫(xiě)訪問(wèn)。HBase的目標(biāo)是存儲(chǔ)并處理大型的數(shù)據(jù)。HBase是一個(gè)開(kāi)源的、分布式的、多版本的、面向列的存儲(chǔ)模型,它存儲(chǔ)的是松散型數(shù)據(jù)。相比傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù),HBase具有易擴(kuò)展、大數(shù)量、擴(kuò)展靈活、成本低等優(yōu)勢(shì)。 1.2OTT用戶行為數(shù)據(jù)系統(tǒng)架構(gòu)圖 在OTT體系中,每個(gè)機(jī)頂盒終端就是一個(gè)用戶,有唯一的用戶標(biāo)識(shí)UserID;用戶通過(guò)機(jī)頂盒來(lái)訪問(wèn)和使用互聯(lián)網(wǎng)電視業(yè)務(wù),用戶在盒端系統(tǒng)上產(chǎn)生的所有行為日志都上傳給系統(tǒng)平臺(tái)(OpenApi),由系統(tǒng)平臺(tái)進(jìn)行數(shù)據(jù)的處理后進(jìn)行入

2、庫(kù),供經(jīng)分系統(tǒng)進(jìn)行單用戶或批量用戶的查詢。 2.1數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì) Hbase底層是基于列式存儲(chǔ)的,可以在不浪費(fèi)存儲(chǔ)空間的情況下將表設(shè)計(jì)得非常稀疏。因此可以將所有的用戶行為數(shù)據(jù)存儲(chǔ)在一張寬的表中,消除在進(jìn)行“行為間組合查詢條件”查詢時(shí)帶來(lái)的表聯(lián)開(kāi)銷(xiāo)。由于Hbase目前并不能很好的處理兩個(gè)或者三個(gè)以上的列族,本場(chǎng)景中采用單列族設(shè)計(jì),列族的大版本數(shù)(MaxVersion)設(shè)定為1。想要獲得較好的查詢效率,應(yīng)該將頻繁查詢的條件放在RowKey中,盡量保證查詢條件都在RowKey中有所體現(xiàn)。從圖3可以看出Hbase的查詢效率從高到低依次為RowKey、ColumnFamily、ColumnQualifie

3、r、TimeStamp和Value。因此想要獲得較好的查詢效率,應(yīng)該將頻繁查詢的條件放在RowKey中,盡量保證查詢條件都在RowKey中有所體現(xiàn)。本應(yīng)用場(chǎng)景中,需要頻繁查詢的條件依次為用戶身份標(biāo)識(shí)(userID)、行為發(fā)生時(shí)間、行為類型和行為類型所包含的字段及其屬性值。根據(jù)查詢條件的頻繁度,可將RowKey設(shè)計(jì)成userID、行為發(fā)生時(shí)間和用戶行為ID的組合。同時(shí)考慮到RowKey的散列性,Key設(shè)計(jì)方案為:反轉(zhuǎn)userID+“,”+行為發(fā)生日期+“,”+用戶行為ID。由于單個(gè)用戶在特定的某一天,相同的行為類型可以發(fā)生多次(例如1234567 _用戶在xx年9月1日這一天可以發(fā)生多次播放行為

4、),如果采用真實(shí)的字段名稱作為列名,后來(lái)寫(xiě)入的數(shù)據(jù)會(huì)把前面寫(xiě)入的數(shù)據(jù)覆蓋掉。為了保證數(shù)據(jù)的完整性,需要在原有字段名的后面加上一個(gè)當(dāng)天唯一的列ID以作區(qū)分。列ID僅僅為了保證數(shù)據(jù)的完整性,無(wú)任何實(shí)際意義,可以是一個(gè)從0開(kāi)始依次遞增的數(shù)字序列。 2.2數(shù)據(jù)格式 源數(shù)據(jù)部分表示由平臺(tái)產(chǎn)生的原始日志,自定義部分表示源數(shù)據(jù)經(jīng)過(guò)人工處理后的擴(kuò)展屬性,行為ID為人為定義,列ID為人工生成的標(biāo)識(shí)ID。列ID在一天內(nèi)的同一個(gè)行為日志中具有唯一性。由反轉(zhuǎn)userID和用戶行為發(fā)生的日期以及用戶行為ID組成RowKey,由真實(shí)的列名加上列ID組成Hbase里面的列名。 源數(shù)據(jù)入庫(kù)過(guò)程分為2個(gè)步驟,源數(shù)據(jù)處理和并行入

5、庫(kù)。源數(shù)據(jù)處理部分進(jìn)行源數(shù)據(jù),包括日志的清洗,RowKey和列ID的生成。并行入庫(kù)過(guò)程將處理好的源數(shù)據(jù)以MapRedu _方式將源數(shù)據(jù)導(dǎo)入到Hbase中。 3.1數(shù)據(jù)入庫(kù) 源數(shù)據(jù)處理過(guò)程負(fù)責(zé)進(jìn)行數(shù)據(jù)清洗及RowKey和列ID的生成,并將生成好的數(shù)據(jù)文件拷貝到HDFS中。一種列ID的設(shè)計(jì)方案是將列ID設(shè)定為一個(gè)從0開(kāi)始依次遞增的數(shù)字序列,此ID使得同一天內(nèi),同一種用戶行為類型的每一條數(shù)據(jù)都具有唯一標(biāo)識(shí)。以表1中模擬的播放日志數(shù)據(jù)為例。并行入庫(kù)部分負(fù)責(zé)將處理好的源數(shù)據(jù)以MapRedu _方式從HDFS導(dǎo)入到Hbase中。此方式通過(guò)讀取HDFS上的文件,以Put的方式在Map過(guò)程中完成數(shù)據(jù)寫(xiě)入,無(wú)R

6、edu _過(guò)程。 3.2數(shù)據(jù)查詢 進(jìn)行用戶行為軌跡查詢時(shí)需要輸入userID的 _、用戶行為發(fā)生的時(shí)間區(qū)間和行為類型信息這3個(gè)參數(shù)。這3個(gè)參數(shù)限定了查詢的范圍,即指定用戶在指定時(shí)間內(nèi)發(fā)生的指定行為。通過(guò)解析userID參數(shù)可以得到RowKey的前綴部分;解析用戶行為發(fā)生的時(shí)間區(qū)間參數(shù)可以得到RowKey的中間部分;解析行為類型參數(shù)可以得到RowKey的后綴部分和各行為查詢所需要的字段。組成RowKey的全部參數(shù) _都確定后,可以通過(guò)迭代將查詢所涉及到的RowKey全部窮舉出來(lái),生成Get對(duì)象的列表,進(jìn)行批量提交。在生成Get對(duì)象的時(shí)候,可以調(diào)用多重列前綴過(guò)濾器(MultipleColumnPr

7、efixFilter),使查詢結(jié)果只包含所需字段,提高查詢效率。 3.2.1單用戶查詢 查詢數(shù)據(jù)時(shí),根據(jù)上文提到的查詢邏輯,將生成的Get的列表一次性提交,獲取查詢結(jié)果。由于Hbase的設(shè)計(jì)是基于列的,想要使查詢結(jié)果按行顯示,還需進(jìn)行查詢結(jié)果的解析。同時(shí),部分在HBase中無(wú)法實(shí)現(xiàn)的數(shù)據(jù)篩選功能如“行為間組合查詢條件”、值過(guò)濾等,可在此時(shí)通過(guò)編程語(yǔ)言靈活實(shí)現(xiàn)。遍歷結(jié)果進(jìn)行解析時(shí),可以生成一個(gè)哈希表resultMap、resultMap的key為列ID、value為真實(shí)字段名的字符串組合。在遍歷中可以根據(jù)列ID將真實(shí)字段名所對(duì)應(yīng)的查詢值替換哈希表中value的值。遍歷完成后對(duì)resultMap的

8、值 _進(jìn)行排序,排序結(jié)果即為用戶的行為軌跡。此方法僅需對(duì)查詢結(jié)果進(jìn)行一次遍歷即可完成解析。 3.2.2批量用戶查詢 批量用戶查詢時(shí)采用MapRedu _方式提交查詢、解析查詢結(jié)果。由于Hbase _提供的MapRedu _接口InputFor _t(TableInputFor _t)只支持Scan方式來(lái)獲取數(shù)據(jù),并不適用Get方式。因此實(shí)現(xiàn)批量用戶行為軌跡的分布式提取和解析,需要自定義3個(gè)類,即PrefixInputFor _t(繼承自InputFor _t)、PrefixSplit(繼承自InputSplit)和PrefixRecordReader(繼承自RecordReader)。自定義這

9、3個(gè)類的目的在于將輸入的userID參數(shù)(包含RowKey前綴信息)、日期區(qū)間參數(shù)(包含RowKey中間部分信息)和用戶行為類型參數(shù)(包含RowKey的后綴信息和查詢所需的列)傳入到PrefixInputFor _t中,在PrefixInputFor _t根據(jù)每個(gè)userID所在的Region將其分配到不同的PrefixSplit上,在PrefixRecordReader中根據(jù)PrefixSplit傳入的參數(shù)信息完成RowKey的組裝和Get列表的生成,并將Get列表作為VALUEIN傳遞給Mapper進(jìn)行查詢和解析。 測(cè)試數(shù)據(jù):天翼視訊9月1日到10日之間10d的登陸、播放、訪問(wèn)和訂購(gòu)數(shù)據(jù),總計(jì)條數(shù)約1億條,日志文件總大小21G;任務(wù)描述:找出在9月1日到9月10日這段時(shí)間內(nèi)輸入用戶 _中同時(shí)發(fā)生播放、訂購(gòu)、訪問(wèn)、登陸4種行為的活躍用戶,并提取這部分用戶在這段時(shí)間內(nèi)的用戶行為軌跡。 本文通過(guò)對(duì)HBase數(shù)據(jù)架構(gòu)及數(shù)據(jù)字段設(shè)計(jì)的分析,設(shè)計(jì)了基于互聯(lián)網(wǎng)電視用戶行為分析的數(shù)據(jù)系統(tǒng)模型和數(shù)據(jù)庫(kù)表結(jié)構(gòu)。經(jīng)過(guò)實(shí)際測(cè)試發(fā)現(xiàn),在提取用戶行為軌跡的數(shù)據(jù)分析時(shí),HBase與傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)相比,在讀寫(xiě)性能上均具有明顯優(yōu)勢(shì)。伴隨互聯(lián)網(wǎng)電視業(yè)務(wù)發(fā)展和用戶行為數(shù)據(jù)量的增加,對(duì)用戶行為數(shù)據(jù)的查詢及分析顯得

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論