《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 微博輿情的Hadoop存儲和管理平臺設(shè)計與實現(xiàn)
微博輿情的Hadoop存儲和管理平臺設(shè)計與實現(xiàn)
2017年電子技術(shù)應(yīng)用第3期
余 輝1,黃永峰2,胡 萍3
1.中國科學(xué)院大學(xué),北京100043;2.清華大學(xué) 電子工程系,北京100084; 3.清華大學(xué) 網(wǎng)絡(luò)科學(xué)與網(wǎng)絡(luò)空間研究院,北京100084
摘要: 隨著Internet技術(shù)的迅速發(fā)展,網(wǎng)絡(luò)輿情監(jiān)控系統(tǒng)正在得到廣泛應(yīng)用。網(wǎng)絡(luò)輿情監(jiān)控系統(tǒng)的數(shù)據(jù)量也急速膨脹,如何高效地存儲和管理這些海量的非結(jié)構(gòu)或半結(jié)構(gòu)化數(shù)據(jù)成為網(wǎng)絡(luò)輿情系統(tǒng)研發(fā)中的挑戰(zhàn)課題。傳統(tǒng)的關(guān)系數(shù)據(jù)庫和分布式計算等數(shù)據(jù)處理的方式也越來越不能適應(yīng)日益增長網(wǎng)絡(luò)大數(shù)據(jù)。針對微博數(shù)據(jù)的特點(diǎn)建立了一種面向微博輿情應(yīng)用的Hadoop存儲平臺的多層體系架構(gòu),并采用列數(shù)據(jù)庫設(shè)計多種微博結(jié)構(gòu)化數(shù)據(jù)的表結(jié)構(gòu),以及表之間的關(guān)系模型。測試結(jié)果表明,設(shè)計的存儲管理平臺具有檢索響應(yīng)速度快、可擴(kuò)展性好等特點(diǎn)。
中圖分類號: TP399
文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.2017.03.030
中文引用格式: 余輝,黃永峰,胡萍. 微博輿情的Hadoop存儲和管理平臺設(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.
Design and implementation of Hadoop based storage and management platform on the Weibo public opinion
Yu Hui1,Huang Yongfeng2,Hu Ping3
1.University of Chinese Academy of Sciences,Beijing 100043,China; 2.Department of Electronic Engineer,Tsinghua University,Beijing 100084,China; 3.Institute for Science and Network Space Sciences,Tsinghua University,Beijing 100084,China
Abstract: Along with the rapid development of Internet technology continuously, the network public opinion monitor system has been widely used. The amount data of Network public opinion monitoring system has been rapidly expanding, resulting in how to efficiently store and manage the vast amounts of unstructured or semi-structured data become challenge subject in network public opinion system research and development. Traditional relational database and distributed computing and data processing have been becoming more and more not suitable to the increasing network data. This paper establishs a multi-layer architecture based on Hadoop storage platform of Weibo public opinion application according to the characteristics of Weibo data, and uses column database to design a variety of the table structure of Weibo structured data, and the model of the relationships between tables. Test result shows that the designed storage management platform has the charactistics of the rapid reaction rate of retrieve and good scalability, etc.
Key words : opinion analysis;Hadoop;Hbase;cloud storage;cloud computing

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ò)計算、并行計算、分布式計算等數(shù)據(jù)處理的方式越來越不能滿足快速查詢、存儲、處理日益增長的數(shù)據(jù)的需要[1]。在此基礎(chǔ)上云計算的概念應(yīng)運(yùn)而生。云計算的新穎之處在于它幾乎可以提供無限的廉價存儲和計算能力,未來存儲模式將改變目前的存儲模式,不再存放在個人計算機(jī)及服務(wù)器上,而是存放在云服務(wù)器中,同時所有的計算、存儲、處理工作也將在云服務(wù)器完成,這樣給企業(yè)及各廠商帶來很多便利,節(jié)省存儲設(shè)備和軟件應(yīng)用的投入成本。本文將網(wǎng)絡(luò)中大量各種不同類型的存儲設(shè)備通過應(yīng)用軟件集合起來協(xié)同工作,并且將關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫聯(lián)合應(yīng)用,設(shè)計出一個快速檢索查詢、海量數(shù)據(jù)存儲、批量數(shù)據(jù)處理的多層體系架構(gòu)的系統(tǒng),且對外提供數(shù)據(jù)存儲和業(yè)務(wù)訪問功能,保證數(shù)據(jù)的安全性,并節(jié)約存儲空間[2]。

1 相關(guān)技術(shù)

    基于微博輿情的Hadoop存儲主要包括微博的數(shù)據(jù)結(jié)構(gòu)和Hbase兩個部分。

1.1 微博數(shù)據(jù)結(jié)構(gòu)

    (1)數(shù)據(jù)的語義不同,非結(jié)構(gòu)化數(shù)據(jù)內(nèi)容不一,描述不同的問題。現(xiàn)在對數(shù)據(jù)的非結(jié)構(gòu)化管理通常以文件形式,保留原始的非結(jié)構(gòu)化數(shù)據(jù)非常重要,可以針對不同的研究需求。但這導(dǎo)致對不同非結(jié)構(gòu)化數(shù)據(jù)使用不同處理方案,最終時間會大大增加,無法快速獲得重要信息。而且用戶一般想專注于自己的研究模塊,不希望進(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是一個基于分布式文件系統(tǒng)HDFS、面向列、開源的數(shù)據(jù)庫。Hbase數(shù)據(jù)表由主鍵、列族、時間戳三部分組成。每個表都有一個主鍵、一個或多個列簇,每個列簇可以包含任意數(shù)量的列,且一個列族中的列名不能相同。HBase有多種數(shù)據(jù)導(dǎo)入方式,最直接的方法是在Java程序中獲取Hbase中的HTable類執(zhí)行Hbase的客戶端API,進(jìn)行數(shù)據(jù)的增、刪、改、查[3]。

    在Hbase的概念中,RegionServer對應(yīng)于集群中的一個節(jié)點(diǎn),而一個RegionServer負(fù)責(zé)管理多個Region。一個Region代表一張表的一部分?jǐn)?shù)據(jù),所以在Hbase中的一張表可能會需要很多個Region來存儲其數(shù)據(jù),但是每個Region中的數(shù)據(jù)并不是雜亂無章的,Hbase在管理Region時會給每個Region定義一個Rowkey的范圍,落在特定范圍內(nèi)的數(shù)據(jù)將交給特定的Region,從而將負(fù)載分?jǐn)偟蕉鄠€節(jié)點(diǎn)上,充分利用分布式的優(yōu)點(diǎn)[4]。另外,Hbase會自動的調(diào)節(jié)Region處在的位置,如果一個RegionServer變得Hot(大量的請求落在這個Server管理的Region上),Hbase就會把Region移動到相對空閑的節(jié)點(diǎn),依次保證集群環(huán)境被充分利用。

2 基于Hadoop的微博數(shù)據(jù)存儲管理平臺的體系結(jié)構(gòu)設(shè)計

    本文根據(jù)微博數(shù)據(jù)的特點(diǎn),采用Hadoop技術(shù),建立了多層結(jié)構(gòu)的存儲和管理架構(gòu),如圖1所示?;贖adoop的微博數(shù)據(jù)存儲管理平臺的體系結(jié)構(gòu)主要由五個層面組成:原始數(shù)據(jù)層、數(shù)據(jù)預(yù)處理層、數(shù)據(jù)存儲層、NewSQL轉(zhuǎn)換層、數(shù)據(jù)應(yīng)用層。

jsj3-t1.gif

    (1)原始數(shù)據(jù)層:該主要是采集與保存新浪、搜狐、網(wǎng)易和騰訊等主流微博網(wǎng)站的原始數(shù)據(jù)。為保證微博數(shù)據(jù)的實時性,采用實時數(shù)據(jù)獲取工具每個小時自動對微博網(wǎng)址進(jìn)行爬取,獲取前一個小時數(shù)據(jù)。

    (2)數(shù)據(jù)預(yù)處理層:該層主要功能包括兩部分工作。一是數(shù)據(jù)抽取,利用數(shù)據(jù)挖掘技術(shù)從原始數(shù)據(jù)中抽取出有效的信息,包括用戶信息、微博信息以及用戶微博之間的相互關(guān)系等;二是進(jìn)行數(shù)據(jù)清洗,主要將一些采集過程中出現(xiàn)的錯誤數(shù)據(jù)和不一致性數(shù)據(jù)過濾。

    (3)數(shù)據(jù)存儲層:該層主要是用來存儲結(jié)構(gòu)化數(shù)據(jù)和元數(shù)據(jù)。因此,在該層引入了Mysql和Hbase兩個數(shù)據(jù)庫。對清洗后的微博數(shù)據(jù)進(jìn)行分析設(shè)計,采用分割、建立索引等方法成功加載進(jìn)Hbase和Mysql數(shù)據(jù)庫。在具體實現(xiàn)中,使用HBase作為原始數(shù)據(jù)庫,而Mysql作為元數(shù)據(jù)。通過Mysql中的用戶信息和微博信息,快速獲取Hbase對應(yīng)的用戶屬性、用戶關(guān)系、微博屬性、微博關(guān)系。能在毫秒中提取相關(guān)信息,從而實現(xiàn)高效的實時查詢。

    (4)NewSQL層:該層主要為Hbase的客戶端API和二級索引。NewSQL層是Hbase和Mysql的SQL引擎層,在此層實現(xiàn)Mysql查詢Hbase數(shù)據(jù)的映射與轉(zhuǎn)換工作。具體來講在此層實現(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)行實時訪問。通過此層對外提供各類包括用戶屬性、微博屬性查詢,以及用戶間轉(zhuǎn)發(fā)回復(fù)評論等關(guān)系在內(nèi)的查詢接口,實現(xiàn)數(shù)據(jù)查詢的易用性目標(biāo)[5]

3 微博關(guān)系數(shù)據(jù)的存儲表的設(shè)計與實現(xiàn)

    Hadoop存儲和管理平臺采用了NewSQL存儲結(jié)構(gòu),它將傳統(tǒng)關(guān)系型數(shù)據(jù)庫Mysql和非關(guān)系型數(shù)據(jù)庫Hbase相結(jié)合,這種存儲結(jié)構(gòu)不僅獲得了關(guān)系型數(shù)據(jù)庫的查詢速率快、支持復(fù)雜類查詢同時支持事務(wù)處理等優(yōu)點(diǎn),也獲得非關(guān)系型的優(yōu)點(diǎn),即極大的擴(kuò)展性,可擴(kuò)展到數(shù)十PB,以及建設(shè)成本低、數(shù)據(jù)安全的優(yōu)點(diǎn)。

    Mysql的設(shè)計上面采用分表存儲,每一百萬條記錄存儲到一張表中且建立索引,提升查詢速率。Hbase的設(shè)計上面采用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è)計,存儲用戶的微博主要內(nèi)容。通過關(guān)鍵字查詢用戶感興趣的內(nèi)容,可以快速提取博文內(nèi)容以及用戶信息。

jsj3-b1.gif

3.2 用戶屬性表

    表2為用戶屬性表。采用Hbase設(shè)計,存儲用戶的基本屬性。其中包括:1個Rowkey和2個列族,Rowkey為用戶的唯一id,兩個列族分別為用戶屬性列族、關(guān)系屬性列族。

jsj3-b2.gif

3.3 用戶關(guān)系表

    表3為用戶關(guān)系表。采用Hbase設(shè)計,存儲用戶之間關(guān)系狀態(tài)。關(guān)注關(guān)系分為兩種:單向的關(guān)注關(guān)系和雙向的好友關(guān)系。比如兩個用戶A和B之間,如果A關(guān)注B,而B沒有關(guān)注A,這就是一種單向的關(guān)注關(guān)系;如果A關(guān)注了B,同時B也關(guān)注了A,那么雙方是一種雙向的好友關(guān)系。其中包括:1個Rowkey和1個列族,Rowkey為用戶的唯一id,一個列族為用戶關(guān)系屬性列族。

jsj3-b3.gif

3.4 微博屬性表

    表4為微博屬性表。采用Hbase設(shè)計,存儲微博文章的基本信息。其中包括:1個Rowkey和2個列族,Rowkey為微博URL作為唯一id,兩個列族即微博屬性列族和關(guān)系屬性列族。

jsj3-b4.gif

3.5 微博關(guān)系表

    表5為微博關(guān)系表。采用Hbase設(shè)計,存儲用戶使用微博的發(fā)文、評論、轉(zhuǎn)發(fā)、回復(fù)信息。其中包括:1個Rowkey和1個列族,Rowkey為用戶的id,列族即微博關(guān)系屬性列族。

jsj3-b5.gif

4 存儲管理平臺的性能測試與分析

    本節(jié)將搭建Apache版本Hadoop2.6分布式集群環(huán)境,對本平臺系統(tǒng)性能進(jìn)行實驗測試和評估,通過SQL語句驗證其實際應(yīng)用中的性能。

4.1 實驗環(huán)境及軟件配置

    表6為服務(wù)器集群環(huán)境及軟件配置表。用7個服務(wù)器使用Apache版本Hadoop2.6分布式集群部署,其中一臺服務(wù)器作為主節(jié)點(diǎn)Master,其余6臺作為平臺的數(shù)據(jù)節(jié)點(diǎn)Data,系統(tǒng)軟硬件配置見表6。

jsj3-b6.gif

4.2 實驗數(shù)據(jù)

    實驗采用的是通過爬蟲技術(shù)從新浪、網(wǎng)易、搜狐等主流微博獲取的真實微博數(shù)據(jù)。通過去噪清洗,將一些采集過程中出現(xiàn)的錯誤和不一致性數(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查詢用時。根據(jù)需求選取6 000萬個重要人物在平臺上對項目常用的API(用戶節(jié)點(diǎn)查詢、用戶屬性查詢、用戶關(guān)系查詢、微博節(jié)點(diǎn)查詢、微博屬性查詢、微博關(guān)系查詢)進(jìn)行SQL查詢用時測試。由于數(shù)據(jù)需多次測試,且在Hbase查詢中blockcache命中率對讀性能影響十分大,對此將分開啟和關(guān)閉緩存兩組進(jìn)行測試。

jsj3-b7.gif

    由表7可知,在已有數(shù)據(jù)下,項目常用API的利用SQL語句查詢50%分位值用時皆在16 ms以內(nèi),99%分位值也均在20 ms以內(nèi),能夠很好地滿足平臺的實時性要求。由圖2數(shù)據(jù)可知,隨著數(shù)據(jù)規(guī)模的增大,存儲平臺的數(shù)據(jù)查詢用時并不出現(xiàn)顯著增長。即使在用戶節(jié)點(diǎn)數(shù)達(dá)到6 000萬的規(guī)模下,不開啟緩存也能保持功能查詢平均用時在14 ms以內(nèi)。特別是對指定重點(diǎn)人物的多次查詢,在緩存命中的情況下能保持用時在8 ms以內(nèi)。由于本存儲系統(tǒng)基于HDFS文件系統(tǒng)搭建,其分布式架構(gòu)本身具有良好的擴(kuò)展性與可靠性。故本存儲平臺能夠成功地滿足實時性、可擴(kuò)展性和易用性等要求。

jsj3-t2.gif

5 結(jié)論

    本文建立了一套面向微博輿情分析的Hadoop存儲和管理系統(tǒng)。本系統(tǒng)可以安全、海量存儲微博數(shù)據(jù),通過關(guān)系型數(shù)據(jù)庫Mysql和非關(guān)系型數(shù)據(jù)庫Hbase兩者的優(yōu)點(diǎn)進(jìn)行SQL交互,實現(xiàn)海量數(shù)據(jù)存儲、實時數(shù)據(jù)查詢、快速檢索響應(yīng)、可橫向擴(kuò)展等優(yōu)點(diǎn),有效解決了傳統(tǒng)關(guān)系型數(shù)據(jù)庫在存儲數(shù)據(jù)單一、存儲空間受限、不可橫向擴(kuò)展存儲空間等缺點(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云計算平臺的數(shù)據(jù)處理系統(tǒng)的研究與設(shè)計[J].通訊世界:下半月,2015(7):224-225.

[4] 萬川梅.基于大數(shù)據(jù)下的NOSQL和Mysql融合的數(shù)據(jù)存儲模型研究[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)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。