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