前言:想要寫出一篇引人入勝的文章?我們特意為您整理了HBase互聯(lián)網(wǎng)電視論文范文,希望能給你帶來靈感和參考,敬請閱讀。
1整體架構(gòu)
1.1hbase原有系統(tǒng)架構(gòu)
HBase是ApacheHadoop的數(shù)據(jù)庫,能夠?qū)Υ笮蛿?shù)據(jù)提供隨機、實時的讀寫訪問。HBase的目標是存儲并處理大型的數(shù)據(jù)。HBase是一個開源的、分布式的、多版本的、面向列的存儲模型,它存儲的是松散型數(shù)據(jù)。相比傳統(tǒng)的關(guān)系型數(shù)據(jù)庫,HBase具有易擴展、大數(shù)量、擴展靈活、成本低等優(yōu)勢。
1.2OTT用戶行為數(shù)據(jù)系統(tǒng)架構(gòu)圖
在OTT體系中,每個機頂盒終端就是一個用戶,有唯一的用戶標識UserID;用戶通過機頂盒來訪問和使用互聯(lián)網(wǎng)電視業(yè)務(wù),用戶在盒端系統(tǒng)上產(chǎn)生的所有行為日志都上傳給系統(tǒng)平臺(OpenApi),由系統(tǒng)平臺進行數(shù)據(jù)的處理后進行入庫,供經(jīng)分系統(tǒng)進行單用戶或批量用戶的查詢。
2數(shù)據(jù)結(jié)構(gòu)
2.1數(shù)據(jù)結(jié)構(gòu)設(shè)計
Hbase底層是基于列式存儲的,可以在不浪費存儲空間的情況下將表設(shè)計得非常稀疏。因此可以將所有的用戶行為數(shù)據(jù)存儲在一張寬的表中,消除在進行“行為間組合查詢條件”查詢時帶來的表聯(lián)開銷。由于Hbase目前并不能很好的處理兩個或者三個以上的列族,本場景中采用單列族設(shè)計,列族的大版本數(shù)(MaxVersion)設(shè)定為1。想要獲得較好的查詢效率,應(yīng)該將頻繁查詢的條件放在RowKey中,盡量保證查詢條件都在RowKey中有所體現(xiàn)。從圖3可以看出Hbase的查詢效率從高到低依次為RowKey、ColumnFamily、ColumnQualifier、TimeStamp和Value。因此想要獲得較好的查詢效率,應(yīng)該將頻繁查詢的條件放在RowKey中,盡量保證查詢條件都在RowKey中有所體現(xiàn)。本應(yīng)用場景中,需要頻繁查詢的條件依次為用戶身份標識(userID)、行為發(fā)生時間、行為類型和行為類型所包含的字段及其屬性值。根據(jù)查詢條件的頻繁度,可將RowKey設(shè)計成userID、行為發(fā)生時間和用戶行為ID的組合。同時考慮到RowKey的散列性,Key設(shè)計方案為:反轉(zhuǎn)userID+“,”+行為發(fā)生日期+“,”+用戶行為ID。由于單個用戶在特定的某一天,相同的行為類型可以發(fā)生多次(例如123456789用戶在2013年9月1日這一天可以發(fā)生多次播放行為),如果采用真實的字段名稱作為列名,后來寫入的數(shù)據(jù)會把前面寫入的數(shù)據(jù)覆蓋掉。為了保證數(shù)據(jù)的完整性,需要在原有字段名的后面加上一個當天唯一的列ID以作區(qū)分。列ID僅僅為了保證數(shù)據(jù)的完整性,無任何實際意義,可以是一個從0開始依次遞增的數(shù)字序列。
2.2數(shù)據(jù)格式
源數(shù)據(jù)部分表示由平臺產(chǎn)生的原始日志,自定義部分表示源數(shù)據(jù)經(jīng)過人工處理后的擴展屬性,行為ID為人為定義,列ID為人工生成的標識ID。列ID在一天內(nèi)的同一個行為日志中具有唯一性。由反轉(zhuǎn)userID和用戶行為發(fā)生的日期以及用戶行為ID組成RowKey,由真實的列名加上列ID組成Hbase里面的列名。
3數(shù)據(jù)處理
源數(shù)據(jù)入庫過程分為2個步驟,源數(shù)據(jù)處理和并行入庫。源數(shù)據(jù)處理部分進行源數(shù)據(jù)整理,包括日志的清洗,RowKey和列ID的生成。并行入庫過程將處理好的源數(shù)據(jù)以MapReduce方式將源數(shù)據(jù)導入到Hbase中。
3.1數(shù)據(jù)入庫
源數(shù)據(jù)處理過程負責進行數(shù)據(jù)清洗及RowKey和列ID的生成,并將生成好的數(shù)據(jù)文件拷貝到HDFS中。一種列ID的設(shè)計方案是將列ID設(shè)定為一個從0開始依次遞增的數(shù)字序列,此ID使得同一天內(nèi),同一種用戶行為類型的每一條數(shù)據(jù)都具有唯一標識。以表1中模擬的播放日志數(shù)據(jù)為例。并行入庫部分負責將處理好的源數(shù)據(jù)以MapReduce方式從HDFS導入到Hbase中。此方式通過讀取HDFS上的文件,以Put的方式在Map過程中完成數(shù)據(jù)寫入,無Reduce過程。
3.2數(shù)據(jù)查詢
進行用戶行為軌跡查詢時需要輸入userID的集合、用戶行為發(fā)生的時間區(qū)間和行為類型信息這3個參數(shù)。這3個參數(shù)限定了查詢的范圍,即指定用戶在指定時間內(nèi)發(fā)生的指定行為。通過解析userID參數(shù)可以得到RowKey的前綴部分;解析用戶行為發(fā)生的時間區(qū)間參數(shù)可以得到RowKey的中間部分;解析行為類型參數(shù)可以得到RowKey的后綴部分和各行為查詢所需要的字段。組成RowKey的全部參數(shù)集合都確定后,可以通過迭代將查詢所涉及到的RowKey全部窮舉出來,生成Get對象的列表,進行批量提交。在生成Get對象的時候,可以調(diào)用多重列前綴過濾器(MultipleColumnPrefixFilter),使查詢結(jié)果只包含所需字段,提高查詢效率。
3.2.1單用戶查詢
查詢數(shù)據(jù)時,根據(jù)上文提到的查詢邏輯,將生成的Get的列表一次性提交,獲取查詢結(jié)果。由于Hbase的設(shè)計是基于列的,想要使查詢結(jié)果按行顯示,還需進行查詢結(jié)果的解析。同時,部分在HBase中無法實現(xiàn)的數(shù)據(jù)篩選功能如“行為間組合查詢條件”、值過濾等,可在此時通過編程語言靈活實現(xiàn)。遍歷結(jié)果進行解析時,可以生成一個哈希表resultMap、resultMap的key為列ID、value為真實字段名的字符串組合。在遍歷中可以根據(jù)列ID將真實字段名所對應(yīng)的查詢值替換哈希表中value的值。遍歷完成后對resultMap的值集合進行排序,排序結(jié)果即為用戶的行為軌跡。此方法僅需對查詢結(jié)果進行一次遍歷即可完成解析。
3.2.2批量用戶查詢
批量用戶查詢時采用MapReduce方式提交查詢、解析查詢結(jié)果。由于Hbase官方提供的MapReduce接口InputFormat(TableInputFormat)只支持Scan方式來獲取數(shù)據(jù),并不適用Get方式。因此實現(xiàn)批量用戶行為軌跡的分布式提取和解析,需要自定義3個類,即PrefixInputFormat(繼承自InputFormat)、PrefixSplit(繼承自InputSplit)和PrefixRecordReader(繼承自RecordReader)。自定義這3個類的目的在于將輸入的userID參數(shù)(包含RowKey前綴信息)、日期區(qū)間參數(shù)(包含RowKey中間部分信息)和用戶行為類型參數(shù)(包含RowKey的后綴信息和查詢所需的列)傳入到PrefixInputFormat中,在PrefixInputFormat根據(jù)每個userID所在的Region將其分配到不同的PrefixSplit上,在PrefixRecordReader中根據(jù)PrefixSplit傳入的參數(shù)信息完成RowKey的組裝和Get列表的生成,并將Get列表作為VALUEIN傳遞給Mapper進行查詢和解析。
4性能對比
測試數(shù)據(jù):天翼視訊9月1日到10日之間10d的登陸、播放、訪問和訂購數(shù)據(jù),總計條數(shù)約1億條,日志文件總大小21G;任務(wù)描述:找出在9月1日到9月10日這段時間內(nèi)輸入用戶集合中同時發(fā)生播放、訂購、訪問、登陸4種行為的活躍用戶,并提取這部分用戶在這段時間內(nèi)的用戶行為軌跡。
5結(jié)論
本文通過對HBase數(shù)據(jù)架構(gòu)及數(shù)據(jù)字段設(shè)計的分析,設(shè)計了基于互聯(lián)網(wǎng)電視用戶行為分析的數(shù)據(jù)系統(tǒng)模型和數(shù)據(jù)庫表結(jié)構(gòu)。經(jīng)過實際測試發(fā)現(xiàn),在提取用戶行為軌跡的數(shù)據(jù)分析時,HBase與傳統(tǒng)的關(guān)系型數(shù)據(jù)庫相比,在讀寫性能上均具有明顯優(yōu)勢。伴隨互聯(lián)網(wǎng)電視業(yè)務(wù)發(fā)展和用戶行為數(shù)據(jù)量的增加,對用戶行為數(shù)據(jù)的查詢及分析顯得尤為重要目前,在對普通的互聯(lián)網(wǎng)電視用戶的盒端對用戶行為數(shù)據(jù)的采集方面還不夠完善,還需要繼續(xù)完善補充用戶行為字段,優(yōu)化完善基于HBase數(shù)據(jù)字段及數(shù)據(jù)庫結(jié)構(gòu),建立數(shù)據(jù)挖掘模型,通過對用戶行為數(shù)據(jù)的深層次挖掘分析來優(yōu)化完善業(yè)務(wù)和產(chǎn)品,為互聯(lián)網(wǎng)電視業(yè)務(wù)在新疆兵團的持續(xù)優(yōu)化發(fā)展和運營分析提供決策支持。
作者:廖辰瀚 王盛 李凱 王換文 孟凡德 尹春陽 單位:天翼視訊傳媒有限公司