文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.2017.03.030
中文引用格式: 余輝,黃永峰,,胡萍. 微博輿情的Hadoop存儲(chǔ)和管理平臺設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,,2017,43(3):120-123,,131.
英文引用格式: Yu Hui,,Huang Yongfeng,Hu Ping. Design and implementation of Hadoop based storage and management platform on the Weibo public opinion[J].Application of Electronic Technique,,2017,,43(3):120-123,131.
0 引言
隨著Internet技術(shù)的迅速發(fā)展,,全球各大互聯(lián)網(wǎng)公司的網(wǎng)絡(luò)輿情監(jiān)控系統(tǒng)也蓬勃發(fā)展起來,網(wǎng)絡(luò)輿情監(jiān)控系統(tǒng)所獲得的數(shù)據(jù)量急速膨脹,。傳統(tǒng)的網(wǎng)絡(luò)計(jì)算、并行計(jì)算,、分布式計(jì)算等數(shù)據(jù)處理的方式越來越不能滿足快速查詢,、存儲(chǔ)、處理日益增長的數(shù)據(jù)的需要[1],。在此基礎(chǔ)上云計(jì)算的概念應(yīng)運(yùn)而生,。云計(jì)算的新穎之處在于它幾乎可以提供無限的廉價(jià)存儲(chǔ)和計(jì)算能力,未來存儲(chǔ)模式將改變目前的存儲(chǔ)模式,不再存放在個(gè)人計(jì)算機(jī)及服務(wù)器上,而是存放在云服務(wù)器中,同時(shí)所有的計(jì)算,、存儲(chǔ),、處理工作也將在云服務(wù)器完成,這樣給企業(yè)及各廠商帶來很多便利,節(jié)省存儲(chǔ)設(shè)備和軟件應(yīng)用的投入成本。本文將網(wǎng)絡(luò)中大量各種不同類型的存儲(chǔ)設(shè)備通過應(yīng)用軟件集合起來協(xié)同工作,,并且將關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫聯(lián)合應(yīng)用,,設(shè)計(jì)出一個(gè)快速檢索查詢、海量數(shù)據(jù)存儲(chǔ),、批量數(shù)據(jù)處理的多層體系架構(gòu)的系統(tǒng),,且對外提供數(shù)據(jù)存儲(chǔ)和業(yè)務(wù)訪問功能,保證數(shù)據(jù)的安全性,,并節(jié)約存儲(chǔ)空間[2],。
1 相關(guān)技術(shù)
基于微博輿情的Hadoop存儲(chǔ)主要包括微博的數(shù)據(jù)結(jié)構(gòu)和Hbase兩個(gè)部分。
1.1 微博數(shù)據(jù)結(jié)構(gòu)
(1)數(shù)據(jù)的語義不同,非結(jié)構(gòu)化數(shù)據(jù)內(nèi)容不一,,描述不同的問題?,F(xiàn)在對數(shù)據(jù)的非結(jié)構(gòu)化管理通常以文件形式,,保留原始的非結(jié)構(gòu)化數(shù)據(jù)非常重要,,可以針對不同的研究需求。但這導(dǎo)致對不同非結(jié)構(gòu)化數(shù)據(jù)使用不同處理方案,,最終時(shí)間會(huì)大大增加,,無法快速獲得重要信息。而且用戶一般想專注于自己的研究模塊,,不希望進(jìn)行文件的預(yù)處理工作,。
(2)數(shù)據(jù)格式不同,各網(wǎng)站基于不同的框架產(chǎn)生大量不同格式的數(shù)據(jù),從而形成大量不同的非結(jié)構(gòu)化數(shù)據(jù)。無法使用統(tǒng)一的方式來管理和使用這些數(shù)據(jù),。
1.2 Hbase
HBase是一個(gè)基于分布式文件系統(tǒng)HDFS,、面向列、開源的數(shù)據(jù)庫,。Hbase數(shù)據(jù)表由主鍵,、列族、時(shí)間戳三部分組成,。每個(gè)表都有一個(gè)主鍵,、一個(gè)或多個(gè)列簇,每個(gè)列簇可以包含任意數(shù)量的列,,且一個(gè)列族中的列名不能相同,。HBase有多種數(shù)據(jù)導(dǎo)入方式,最直接的方法是在Java程序中獲取Hbase中的HTable類執(zhí)行Hbase的客戶端API,,進(jìn)行數(shù)據(jù)的增,、刪、改,、查[3],。
在Hbase的概念中,RegionServer對應(yīng)于集群中的一個(gè)節(jié)點(diǎn),,而一個(gè)RegionServer負(fù)責(zé)管理多個(gè)Region,。一個(gè)Region代表一張表的一部分?jǐn)?shù)據(jù),所以在Hbase中的一張表可能會(huì)需要很多個(gè)Region來存儲(chǔ)其數(shù)據(jù),,但是每個(gè)Region中的數(shù)據(jù)并不是雜亂無章的,,Hbase在管理Region時(shí)會(huì)給每個(gè)Region定義一個(gè)Rowkey的范圍,落在特定范圍內(nèi)的數(shù)據(jù)將交給特定的Region,,從而將負(fù)載分?jǐn)偟蕉鄠€(gè)節(jié)點(diǎn)上,,充分利用分布式的優(yōu)點(diǎn)[4]。另外,,Hbase會(huì)自動(dòng)的調(diào)節(jié)Region處在的位置,,如果一個(gè)RegionServer變得Hot(大量的請求落在這個(gè)Server管理的Region上),Hbase就會(huì)把Region移動(dòng)到相對空閑的節(jié)點(diǎn),,依次保證集群環(huán)境被充分利用,。
2 基于Hadoop的微博數(shù)據(jù)存儲(chǔ)管理平臺的體系結(jié)構(gòu)設(shè)計(jì)
本文根據(jù)微博數(shù)據(jù)的特點(diǎn),采用Hadoop技術(shù),,建立了多層結(jié)構(gòu)的存儲(chǔ)和管理架構(gòu),,如圖1所示?;贖adoop的微博數(shù)據(jù)存儲(chǔ)管理平臺的體系結(jié)構(gòu)主要由五個(gè)層面組成:原始數(shù)據(jù)層,、數(shù)據(jù)預(yù)處理層,、數(shù)據(jù)存儲(chǔ)層、NewSQL轉(zhuǎn)換層,、數(shù)據(jù)應(yīng)用層,。
(1)原始數(shù)據(jù)層:該主要是采集與保存新浪、搜狐,、網(wǎng)易和騰訊等主流微博網(wǎng)站的原始數(shù)據(jù),。為保證微博數(shù)據(jù)的實(shí)時(shí)性,采用實(shí)時(shí)數(shù)據(jù)獲取工具每個(gè)小時(shí)自動(dòng)對微博網(wǎng)址進(jìn)行爬取,,獲取前一個(gè)小時(shí)數(shù)據(jù),。
(2)數(shù)據(jù)預(yù)處理層:該層主要功能包括兩部分工作。一是數(shù)據(jù)抽取,,利用數(shù)據(jù)挖掘技術(shù)從原始數(shù)據(jù)中抽取出有效的信息,,包括用戶信息、微博信息以及用戶微博之間的相互關(guān)系等,;二是進(jìn)行數(shù)據(jù)清洗,,主要將一些采集過程中出現(xiàn)的錯(cuò)誤數(shù)據(jù)和不一致性數(shù)據(jù)過濾。
(3)數(shù)據(jù)存儲(chǔ)層:該層主要是用來存儲(chǔ)結(jié)構(gòu)化數(shù)據(jù)和元數(shù)據(jù),。因此,,在該層引入了Mysql和Hbase兩個(gè)數(shù)據(jù)庫。對清洗后的微博數(shù)據(jù)進(jìn)行分析設(shè)計(jì),,采用分割,、建立索引等方法成功加載進(jìn)Hbase和Mysql數(shù)據(jù)庫。在具體實(shí)現(xiàn)中,,使用HBase作為原始數(shù)據(jù)庫,,而Mysql作為元數(shù)據(jù)。通過Mysql中的用戶信息和微博信息,,快速獲取Hbase對應(yīng)的用戶屬性,、用戶關(guān)系、微博屬性,、微博關(guān)系,。能在毫秒中提取相關(guān)信息,從而實(shí)現(xiàn)高效的實(shí)時(shí)查詢,。
(4)NewSQL層:該層主要為Hbase的客戶端API和二級索引,。NewSQL層是Hbase和Mysql的SQL引擎層,在此層實(shí)現(xiàn)Mysql查詢Hbase數(shù)據(jù)的映射與轉(zhuǎn)換工作,。具體來講在此層實(shí)現(xiàn)了兩種功能:一是Mysql的數(shù)據(jù)庫的獨(dú)立查詢,,查詢微博總數(shù)、用戶總數(shù),、微博內(nèi)容等基本信息,;二是Mysql的數(shù)據(jù)庫和Hbase的數(shù)據(jù)庫聯(lián)合查詢,通過查詢MySql中字段信息,,調(diào)用Hbase的API查詢HBase數(shù)據(jù)庫,,進(jìn)行實(shí)時(shí)訪問。通過此層對外提供各類包括用戶屬性,、微博屬性查詢,,以及用戶間轉(zhuǎn)發(fā)回復(fù)評論等關(guān)系在內(nèi)的查詢接口,實(shí)現(xiàn)數(shù)據(jù)查詢的易用性目標(biāo)[5],。
3 微博關(guān)系數(shù)據(jù)的存儲(chǔ)表的設(shè)計(jì)與實(shí)現(xiàn)
Hadoop存儲(chǔ)和管理平臺采用了NewSQL存儲(chǔ)結(jié)構(gòu),,它將傳統(tǒng)關(guān)系型數(shù)據(jù)庫Mysql和非關(guān)系型數(shù)據(jù)庫Hbase相結(jié)合,這種存儲(chǔ)結(jié)構(gòu)不僅獲得了關(guān)系型數(shù)據(jù)庫的查詢速率快,、支持復(fù)雜類查詢同時(shí)支持事務(wù)處理等優(yōu)點(diǎn),,也獲得非關(guān)系型的優(yōu)點(diǎn),即極大的擴(kuò)展性,,可擴(kuò)展到數(shù)十PB,,以及建設(shè)成本低、數(shù)據(jù)安全的優(yōu)點(diǎn),。
Mysql的設(shè)計(jì)上面采用分表存儲(chǔ),,每一百萬條記錄存儲(chǔ)到一張表中且建立索引,提升查詢速率,。Hbase的設(shè)計(jì)上面采用RowKey的MD5加密且分區(qū),,使數(shù)據(jù)平均的分布在每臺RegionServer上面,防止數(shù)據(jù)傾斜到一臺RegionServer,。
最后,,考慮到需要快速查找用戶信息、用戶之間的關(guān)系,、微博信息,、微博之間的關(guān)系,從而建立關(guān)鍵字索引表,、用戶屬性表,、用戶關(guān)系表、微博屬性表,、微博關(guān)系表,。
3.1 關(guān)鍵字索引表
表1為關(guān)鍵字索引表。采用Mysql設(shè)計(jì),,存儲(chǔ)用戶的微博主要內(nèi)容,。通過關(guān)鍵字查詢用戶感興趣的內(nèi)容,可以快速提取博文內(nèi)容以及用戶信息,。
3.2 用戶屬性表
表2為用戶屬性表,。采用Hbase設(shè)計(jì),,存儲(chǔ)用戶的基本屬性。其中包括:1個(gè)Rowkey和2個(gè)列族,,Rowkey為用戶的唯一id,,兩個(gè)列族分別為用戶屬性列族、關(guān)系屬性列族,。
3.3 用戶關(guān)系表
表3為用戶關(guān)系表,。采用Hbase設(shè)計(jì),存儲(chǔ)用戶之間關(guān)系狀態(tài),。關(guān)注關(guān)系分為兩種:單向的關(guān)注關(guān)系和雙向的好友關(guān)系,。比如兩個(gè)用戶A和B之間,如果A關(guān)注B,,而B沒有關(guān)注A,,這就是一種單向的關(guān)注關(guān)系;如果A關(guān)注了B,,同時(shí)B也關(guān)注了A,,那么雙方是一種雙向的好友關(guān)系。其中包括:1個(gè)Rowkey和1個(gè)列族,,Rowkey為用戶的唯一id,,一個(gè)列族為用戶關(guān)系屬性列族。
3.4 微博屬性表
表4為微博屬性表,。采用Hbase設(shè)計(jì),,存儲(chǔ)微博文章的基本信息。其中包括:1個(gè)Rowkey和2個(gè)列族,,Rowkey為微博URL作為唯一id,,兩個(gè)列族即微博屬性列族和關(guān)系屬性列族。
3.5 微博關(guān)系表
表5為微博關(guān)系表,。采用Hbase設(shè)計(jì),,存儲(chǔ)用戶使用微博的發(fā)文、評論,、轉(zhuǎn)發(fā),、回復(fù)信息。其中包括:1個(gè)Rowkey和1個(gè)列族,,Rowkey為用戶的id,,列族即微博關(guān)系屬性列族。
4 存儲(chǔ)管理平臺的性能測試與分析
本節(jié)將搭建Apache版本Hadoop2.6分布式集群環(huán)境,,對本平臺系統(tǒng)性能進(jìn)行實(shí)驗(yàn)測試和評估,,通過SQL語句驗(yàn)證其實(shí)際應(yīng)用中的性能。
4.1 實(shí)驗(yàn)環(huán)境及軟件配置
表6為服務(wù)器集群環(huán)境及軟件配置表,。用7個(gè)服務(wù)器使用Apache版本Hadoop2.6分布式集群部署,,其中一臺服務(wù)器作為主節(jié)點(diǎn)Master,,其余6臺作為平臺的數(shù)據(jù)節(jié)點(diǎn)Data,系統(tǒng)軟硬件配置見表6,。
4.2 實(shí)驗(yàn)數(shù)據(jù)
實(shí)驗(yàn)采用的是通過爬蟲技術(shù)從新浪,、網(wǎng)易,、搜狐等主流微博獲取的真實(shí)微博數(shù)據(jù),。通過去噪清洗,將一些采集過程中出現(xiàn)的錯(cuò)誤和不一致性數(shù)據(jù)過濾并進(jìn)行結(jié)構(gòu)化處理后,,獲得用戶節(jié)點(diǎn)數(shù)6 015萬,,用戶關(guān)系數(shù)13 953萬,微博節(jié)點(diǎn)數(shù)53 413萬,用戶微博關(guān)系數(shù)為44 012萬,。
表7為數(shù)據(jù)平臺常用API查詢用時(shí),。根據(jù)需求選取6 000萬個(gè)重要人物在平臺上對項(xiàng)目常用的API(用戶節(jié)點(diǎn)查詢、用戶屬性查詢,、用戶關(guān)系查詢,、微博節(jié)點(diǎn)查詢、微博屬性查詢,、微博關(guān)系查詢)進(jìn)行SQL查詢用時(shí)測試,。由于數(shù)據(jù)需多次測試,且在Hbase查詢中blockcache命中率對讀性能影響十分大,,對此將分開啟和關(guān)閉緩存兩組進(jìn)行測試,。
由表7可知,在已有數(shù)據(jù)下,,項(xiàng)目常用API的利用SQL語句查詢50%分位值用時(shí)皆在16 ms以內(nèi),,99%分位值也均在20 ms以內(nèi),能夠很好地滿足平臺的實(shí)時(shí)性要求,。由圖2數(shù)據(jù)可知,,隨著數(shù)據(jù)規(guī)模的增大,存儲(chǔ)平臺的數(shù)據(jù)查詢用時(shí)并不出現(xiàn)顯著增長,。即使在用戶節(jié)點(diǎn)數(shù)達(dá)到6 000萬的規(guī)模下,,不開啟緩存也能保持功能查詢平均用時(shí)在14 ms以內(nèi)。特別是對指定重點(diǎn)人物的多次查詢,,在緩存命中的情況下能保持用時(shí)在8 ms以內(nèi),。由于本存儲(chǔ)系統(tǒng)基于HDFS文件系統(tǒng)搭建,其分布式架構(gòu)本身具有良好的擴(kuò)展性與可靠性,。故本存儲(chǔ)平臺能夠成功地滿足實(shí)時(shí)性,、可擴(kuò)展性和易用性等要求。
5 結(jié)論
本文建立了一套面向微博輿情分析的Hadoop存儲(chǔ)和管理系統(tǒng),。本系統(tǒng)可以安全,、海量存儲(chǔ)微博數(shù)據(jù),,通過關(guān)系型數(shù)據(jù)庫Mysql和非關(guān)系型數(shù)據(jù)庫Hbase兩者的優(yōu)點(diǎn)進(jìn)行SQL交互,實(shí)現(xiàn)海量數(shù)據(jù)存儲(chǔ),、實(shí)時(shí)數(shù)據(jù)查詢,、快速檢索響應(yīng)、可橫向擴(kuò)展等優(yōu)點(diǎn),,有效解決了傳統(tǒng)關(guān)系型數(shù)據(jù)庫在存儲(chǔ)數(shù)據(jù)單一,、存儲(chǔ)空間受限、不可橫向擴(kuò)展存儲(chǔ)空間等缺點(diǎn),。
參考文獻(xiàn)
[1] SULLIVAN J.China′s Weibo:Is faster different?[J].New Media & Society,,2014,16(1):24-37.
[2] CHANG F,,DEAN J,,GHEMAWAT S,et al.Bigtable:A distributed storage system for structured data[J].ACM Transactions on Computer Systems(TOCS),,2008,,26(2):4.
[3] 潘夢云,李國玉,,李燕.基于Hadoop云計(jì)算平臺的數(shù)據(jù)處理系統(tǒng)的研究與設(shè)計(jì)[J].通訊世界:下半月,,2015(7):224-225.
[4] 萬川梅.基于大數(shù)據(jù)下的NOSQL和Mysql融合的數(shù)據(jù)存儲(chǔ)模型研究[J].數(shù)字技術(shù)與應(yīng)用,2014,,2(2):96-96.
[5] LEE C H,,ZHENG Y L.Automatic SQL-to-NoSQL schema transformation over the MySQL and HBase databases[C].IEEE International Conference on Consumer Electronicstaiwan,,2015:426-427.
作者信息:
余 輝1,,黃永峰2,胡 萍3
(1.中國科學(xué)院大學(xué),,北京100043,;2.清華大學(xué) 電子工程系,北京100084,;
3.清華大學(xué) 網(wǎng)絡(luò)科學(xué)與網(wǎng)絡(luò)空間研究院,,北京100084)