《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 一種基于HBase的海量微博數據高效存儲方案
一種基于HBase的海量微博數據高效存儲方案
2014年微型機與應用第11期
焦冬冬,徐新國
華北計算機系統工程研究所,北京
摘要: 隨著網絡技術的快速發展,互聯網用戶激增,同時產生了海量的互聯網數據。據不完全統計,截至2012年12月底,新浪微博注冊用戶數已超過5億,每天新浪微博用戶發博量超過1億條。微博的使用人群數量基數大,狀態信息更新頻繁,信息傳播迅速,這為研究網絡用戶行為與心理提供了充足的資源,也帶來了挑戰。
關鍵詞: Hadoop HBase MapReduce 微博
Abstract:
Key words :

  摘  要: 通過分析HBase的特點,提出了一種基于HBase的海量微博數據高效存儲方案。該方案通過建立合適的數據存儲模型、預建Region,提出行關鍵字生成規則和跳過壞記錄的方法,使得數據能夠利用MapReduce模型高效且不間斷地導入HBase數據庫。實驗結果表明,該方法能夠提高海量數據導入HBase的效率。

  關鍵詞Hadoop;HBase;MapReduce;微博;行關鍵字;跳過壞記錄

  隨著網絡技術的快速發展,互聯網用戶激增,同時產生了海量的互聯網數據。據不完全統計,截至2012年12月底,新浪微博注冊用戶數已超過5億,每天新浪微博用戶發博量超過1億條。微博的使用人群數量基數大,狀態信息更新頻繁,信息傳播迅速,這為研究網絡用戶行為與心理提供了充足的資源,也帶來了挑戰。

  面對如此海量的微博數據,如何將其高效的存儲與管理,已經成為一個迫切需要解決的問題。云計算技術的出現,為解決這一問題提供了新的途徑和思路。目前谷歌、亞馬遜、微軟、IBM等知名企業紛紛推出云計算解決方案。Apache的Hadoop[1]是一個開源的云計算平臺,其核心是HDFS、MapReduce和Hbase。Hbase是一個開源的、面向列的分布式數據庫,它是基于HDFS的,可以利用集群處理大數據。

  目前已有105萬個新浪微博用戶以JSON[2]格式保存的文本數據,數據容量為8.9 TB。如此大量的數據使用單臺計算機進行結構化存儲和處理是極其耗費時間的。本文主要研究基于MapReduce模型解析JSON格式的微博數據,并將其高效地導入Hbase數據庫,為海量數據的高效存儲提供一種解決方案。

  1 HBase概述和MapReduce模型

  HBase[3]是一個基于HDFS的、開源的、面向列的分布式數據庫。HBase是基于列簇存儲的,不同的列簇對應HDFS上的不同的目錄文件,此目錄文件中存儲的是HBase底層存儲文件(HFile文件),當目錄中HFile文件數量過多時,HBase會進行compact操作,合并HFile文件。HBase的每個表都有一個或幾個列簇,每個列簇可以包含任意數量的列,且每行的列不必相同。HBase表中的每一行由行關鍵字、時間戳和列簇組成。

  HBase有多種數據導入方式,最直接的方法是在MapReduce任務中用TableOutputFormat導入或者直接使用正常的客戶端API導入。但是這些都不是最高效的方法。BulkLoad可以通過MapReduce任務直接生成HFile文件,然后導入HBase的表中,適合大數據的快速導入。因此在本文中主要針對BulkLoad方法進行改進。

  MapReduce[4]是一個處理數據的編程模型。它有兩個重要的函數:Map和Reduce。這兩個函數是順序執行的,Map執行完畢后,開始執行reduce。Map負責分解任務,Reduce負責把各Map任務的結果匯總。

  2 微博數據高效存儲方案

  2.1 微博數據的存儲模型

  HBase數據庫存儲微博用戶的信息以及微博內容信息,數據庫表設計如表1和表2所示。HBase有多種數據導入方式,最直接的方法是在MapReduce任務中用TableQutputFormat導入或者直接使用正常的客戶端API導入。但這些都不是最高效的方法。basic_info列簇存儲微博用戶的基本信息,statuses_id列簇存儲微博的id,即表2中的行關鍵字,列名“statuses_id”指的是微博的id,用列名存儲用戶發布的所有微博信息,”user_id”也是如此。sina_relationship列簇用于存儲微博用戶關系。在表2中,basic_info列簇用于存儲常用的微博內容的基本信息,other_info列簇用于存儲不常用的微博內容的信息,這樣劃分是考慮到HBase是按列簇存儲的,避免造成I/O浪費。text_info列簇存儲的是微博的文本內容。

OXGH_RFKG]R)V3L~AZCV7FR.jpg

  微博內容信息表中的basic_info:user_id和微博用戶信息表中的statuses_id:“statuses_id”形成二級索引,用于關聯兩個表。

  2.2 微博數據存儲的優化

  2.2.1 預創建Region

  HBase在建表時,默認只有一個Region。當使用BulkLoad[5]導入數據時,當數據達到一定的規模(默認是256 MB,設置為200 GB)時,Region會被分割,這將嚴重影響導入性能。

  因此可以預創建一定數量的空Region,至于Region的數量可以參考數據量、Region設定的容量和RegionServer的數量來決定。Region的數量最好是RegionServer的整數倍,這有利于HBase使用MapReduce進行數據處理。數據量除以預創建Region的數量應當小于Region的設定容量,這可以避免在數據導入時,Region進行split操作。

  運行MapReduce程序生成的每個HFile文件中的行關鍵字不屬于獨立的Region時,導入時會發生文件分割。通過實驗得知,將總大小為115 GB的HFile文件導入到有32個Region的表中,耗時130 min,而且由于分割HFile文件的過程中會生成較多的臨時文件,需要較大的額外存儲空間。

  為了解決這一問題,需要使得生成的每個HFile文件屬于單個Region,因此需要制定行關鍵字生成規則。

  2.2.2 行關鍵字生成規則

  HBase按照行關鍵字的字典序來存儲數據。Hbase提供了多種數據查詢方式:根據行關鍵字調用get接口查詢,調用scan查詢,全表掃描等。

  為了提高數據導入效率和查詢效率,提出了行關鍵字的生成規則。為了滿足HFile文件所屬Region的唯一性,需要行關鍵字有Region識別的功能,因此行關鍵字中需要包含Region識別字段。為了保證查詢效率,對于微博內容信息表,需要將同一個微博用戶的微博在HBase中連續存儲,這就要求行關鍵字中包含用戶信息字段,以保證將所需微博聚集在一起。為了保證行關鍵字的唯一性,行關鍵字需要包含微博內容的關鍵字。式(1)是微博內容信息表的行關鍵字生成規則。式(2)是微博用戶信息表的行關鍵字生成規則。

  行關鍵字=Region識別字段+微博用戶ID+微博內容ID(1)

  行關鍵字=Region識別字段+微博用戶ID(2)

  2.2.3 跳過壞記錄

  由于下載的微博數據是JSON格式的,因此首先需要對微博數據進行解析,然后導入HBase數據庫。由于數據量大,因此需要使用MapReduce編程模型來解析數據。

  MapReduce需要所有的Map任務都結束后,才能進行接下來的工作。如果有一個Map任務執行多次(默認是4次)均失敗,則整個MapReduce任務失敗,從而造成了時間和資源的浪費。例如,下載的微博數據中有損壞的,也有JSON格式不完整的,還有文件過大導致內存溢出的等,這都會導致MapReduce任務失敗。

  MapReduce有Skipipng mode,設置開啟后,可以跳過壞記錄,但是這種模式會大大影響效率,而且對于內存溢出錯誤無法處理,也不能對跳過壞記錄的文件進行標記。

[$[K3N%SOM3BJU7}({MOS[D.jpg

  為了能夠跳過程序運行過程中的錯誤,并將壞記錄所在文件保存到指定文件目錄中,提出重寫RecordReader的方法,稱之為SK-bad。由于將整個文件作為數據分片,可以在RecordReader中獲得數據分片的文件名。然后獲得任務ID,分析任務ID得出任務的執行次數,當執行次數達到一定數值時(此數值需要自己指定,且要小于任務失敗最大重復執行次數,否則不會起作用),將此文件移動到指定文件目錄,與此同時將此記錄標記為已處理,從而能夠保證跳過任何原因引起的壞記錄。核心程序代碼如下。

  public class WholdeFileRecordReader

  extends RecordReader<BytesWritable,BvtesWritable>{

  ……

  public void initialize{InputSplit split,TaskAttempt Context context)}

  ……

  String[]strtaskid=

  context.getTaskAttemptid().tostring().trim().split(“_”)

  String reindex=

  straskid[strtaskid.length-1];

  if(integer.parseitn(reidex)>4){|

  ……

  }

  ……

  }

  }

  3 實驗

  3.1 實驗環境

  利用6臺計算機作為宿主機,其中有4臺Dell OptiPlex 990,配置均為:CPU為Intel酷睿i3 2120,內存12 GB,千兆以太網卡。一臺Dell T3500,配置為:CPU為Xeon W3565,內存24 GB,千兆以太網卡。一臺浪潮NP3060,配置為:CPU為Xeon E5506,內存16 GB,集成雙千兆網卡。每臺宿主機均安裝Xen虛擬機,每臺Dell OptiPlex 990虛擬出3臺虛擬機。Dell T3500虛擬出6臺虛擬機,浪潮NP3060虛擬出4臺虛擬機??偣灿?2臺虛擬機,每臺虛擬機的操作系統均為64 bit Centos 6.2。

  每臺虛擬機安裝Hadoop 1.0.4和HBase 0.94.5,其中一臺作為Master運行NameNode,JobTracker和Hmaster,一臺運行SecondNamenode,其余20臺為Slaves運行DataNode,TaskTracker和RegionServer。

  解析JSON數據使用的是第三方工具包Jackson[6]。

  實驗使用的數據是以文本文件保存的JSON格式的微博數據,每個文件大小在100 MB~180 MB之間,含有105萬用戶的信息??偟臄祿萘繛?.9 TB。

  3.2 實驗結果及分析

  使用10 000個微博數據文件,每2 000個文件作為一次測試中MapReduce任務的輸入,共5次測試。用于測試MapReduce任務在使用SK-bad方法時任務失敗次數,同時測試MapReduce任務在未使用SK-bad方法時的失敗次數和開啟Skipping mode時的失敗次數來進行比較。引起的原因有數據過大導致內存溢出、文件不完整、錯誤的JSON格式和文件校驗碼錯誤等。實驗結果如表3所示,對于讀取文件的過程中發生的錯誤,Skipping mode無法處理,5次測試的結果表明SK-bad方法能夠保證MapReduce任務的順利執行。

  接下來的測試均使用SK-bad方法,Region最大容量設置為200 GB,預創建Region數量為120個。分別測試在未預創建Region且不使用行關鍵字生成規則的情況下(情況一),預創建Region且不使用行關鍵字生成規則的情況下(情況二)和預創建Region且使用行關鍵字生成規則情況下(情況三)的存儲性能。

  實驗結果如圖1所示,存儲9 000個用戶的數據時,在情況一下,由于數據量較小,Region不會split,所以存儲性能與情況三下的存儲性能相近。在情況二下,MapReduce任務所生成的HFile文件不屬于單個Region,且Region數量較多,因此HFile會進行多次split操作,這嚴重影響了存儲性能。在存儲30 000個用戶的數據時影響性能的因素與存儲9 000個用戶的數據時相似;在存儲60 000個用戶的數據時,對于情況一,由于數據量較大會使Region做split操作,這嚴重影響存儲性能;在存儲90 000個用戶的數據時影響性能的因素與存儲60 000個用戶的數據時相似;在存儲120 000個用戶的數據時,在情況一下,由于數據量較大會使Region再次做split操作,使得Region數量增多,這更加影響存儲性能,并且隨著用戶數據的增多,Region數量也會增加,存儲性能會隨之降低。在情況三下,由于Region不需要做split操作,且生成的每個HFile屬于唯一的Region,因此隨著數據量的增長,存儲時間接近線性增長。

  在預創建Region且使用行關鍵字生成規則的情況下,存儲所有8.9 TB共1 068 090個微博用戶的數據,耗時65 h 34 min。

  本文通過分析HBase和MapReduce模型,提出了一種通過預創建Region、行關鍵字生成規則,利用MapReduce模型將微博數據高效導入HBase數據庫的方案,并提出了能夠處理各種運行錯誤的SK-bad方法。

  未來要做的工作是優化MapReduce對HBase的訪問效率,利用HBase數據庫中的數據進行網絡用戶行為分析方面的研究。

  參考文獻

  [1] Hadoop[EB/OL]. [2013-07-01]. http://hadoop.apa-che.org/.

  [2] Introducing JSON[EB/OL]. [2005]. http://www.j-son.org/.

  [3] HBase:Bigtable-like structured storage for Hadoop HDFS[EB/OL].[2012-08-24].http://wiki.apache.o-rg /hadoop/Hbase/.

  [4] 李建江,崔健,王聃.MapReduce并行編程模型研究綜述[J].電子學報,2011,39(11):2635-2642.

  [5] GEORGE L. HBase: the definitive guide[M]. USA: O′Reilly Media, 2011.

  [6] Jackson: High-performance JSON processor[EB/OL].[2013-04-30]. http://jackson.codehaus.org.


此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          欧美三级资源在线| 亚洲影视综合| 蜜桃av噜噜一区二区三区| 欧美性猛交xxxx乱大交蜜桃| 国内精品久久久久久久97牛牛| 国产精品毛片大码女人| 欧美日韩精品一区二区在线播放| 黄色一区二区三区| 妖精成人www高清在线观看| 欧美在线视频网站| 国产欧美精品国产国产专区| 午夜久久久久久久久久一区二区| 国内一区二区在线视频观看| 欧美国产精品久久| 国产欧美视频一区二区三区| 亚洲性视频网址| 亚洲少妇中出一区| 久久免费国产精品1| 欧美刺激性大交免费视频| …久久精品99久久香蕉国产| 欧美亚洲一区在线| 欧美黑人在线观看| 国产精品免费观看在线| 久久美女艺术照精彩视频福利播放| 欧美日韩福利视频| 欧美成人影音| 欧美黑人在线观看| 久久九九国产精品怡红院| 国产乱理伦片在线观看夜一区| 欧美一级久久久| 欧美久久一区| 久久久精品一区二区三区| 性欧美长视频| 久久精品99国产精品酒店日本| 欧美日韩精品欧美日韩精品一| 国产精品亚洲一区| 久久精品欧美日韩精品| 亚洲激精日韩激精欧美精品| 久久青草欧美一区二区三区| 国产视频精品xxxx| aa级大片欧美三级| 欧美网站大全在线观看| 亚洲欧美成人一区二区在线电影| 欧美激情1区2区3区| 国内精品久久久久影院 日本资源| 欧美日韩中文字幕在线| 久久蜜桃香蕉精品一区二区三区| 国产精品久久久久久久久久免费| 欧美激情精品久久久久久变态| 国产精品国产三级国产专播精品人| 欧美体内she精视频在线观看| 久久久久青草大香线综合精品| 红杏aⅴ成人免费视频| 欧美日韩成人综合天天影院| 欧美午夜女人视频在线| 欧美三级欧美一级| 欧美精品一区二区三区蜜桃| 欧美日韩精品伦理作品在线免费观看| 国产精品老牛| 日韩亚洲欧美中文三级| 一本色道久久综合| 久久蜜桃资源一区二区老牛| 亚洲女ⅴideoshd黑人| 中文亚洲免费| 亚洲在线视频免费观看| 99ri日韩精品视频| 久久综合影音| 久久高清国产| 亚洲淫性视频| 亚洲色图综合久久| 在线电影欧美日韩一区二区私密| 亚洲综合二区| 国产午夜精品理论片a级大结局| 国产精品亚洲成人| 亚洲已满18点击进入久久| 久久久久国产一区二区| 亚洲伊人久久综合| 久久成人免费日本黄色| 亚洲最快最全在线视频| 久久国产精品99久久久久久老狼| 亚洲美女网站| 亚洲视频精选在线| 国产麻豆精品在线观看| 亚洲精品日产精品乱码不卡| 亚洲精品一区在线观看香蕉| 久久亚洲精选| 亚洲一线二线三线久久久| 欧美大尺度在线| 久久国产一区二区| 一区二区三区精品视频| 亚洲欧美一区在线| 亚洲国产一区二区视频| 久久国产乱子精品免费女| 亚洲专区免费| 欧美日韩一视频区二区| 久久久999国产| 久久婷婷国产综合尤物精品| 欧美另类久久久品| 国产日产欧美a一级在线| 欧美超级免费视 在线| 另类酷文…触手系列精品集v1小说| 亚洲国产裸拍裸体视频在线观看乱了| 亚洲欧美日韩精品在线| 国产精品盗摄一区二区三区| 欧美电影免费网站| 久久激情五月婷婷| 欧美性理论片在线观看片免费| 免费成人黄色av| 亚洲视频在线一区观看| 国产午夜精品久久| 国内精品久久久久影院薰衣草| 欧美日韩综合在线| 国产精品二区在线观看| 海角社区69精品视频| 国产精品日韩在线播放| 国产精品一区二区欧美| 国产精品视频99| 亚洲美女免费精品视频在线观看| 国产女精品视频网站免费| 欧美精品午夜视频| 欧美视频在线观看| 欧美日韩中字| 欧美亚洲日本一区| 韩日午夜在线资源一区二区| 欧美成人综合网站| 国产日韩欧美综合在线| 久久久五月婷婷| 久久成人精品电影| 今天的高清视频免费播放成人| 欧美一级在线视频| 久久久xxx| 久久综合伊人77777尤物| 国产精品高潮呻吟久久av无限| 好看的av在线不卡观看| 欧美一区二区福利在线| 韩日精品视频| 亚洲私人影院在线观看| 午夜精品免费视频| 免费欧美日韩国产三级电影| 免费在线观看成人av| 老司机免费视频久久| 欧美午夜片在线免费观看| 久久久久久999| 黑丝一区二区三区| 国产嫩草影院久久久久| 亚洲欧洲三级| 亚洲影院免费观看| 亚洲国产精品一区在线观看不卡| 久久久www| 欧美黄色一区二区| 国产精品久久久久秋霞鲁丝| 国语自产精品视频在线看8查询8| 欧美日韩国产一级| 欧美国产综合视频| 欧美日韩亚洲网| 欧美日韩精品免费观看视一区二区| 久久精品一级爱片| 激情六月婷婷久久| 亚洲欧美视频在线| 精品成人在线| 狠狠狠色丁香婷婷综合激情| 欧美福利在线观看| 欧美激情一区二区在线| 欧美手机在线| 欧美精品一区二区在线观看| 亚洲国产欧美日韩| 国产精品免费区二区三区观看| 国产日韩欧美一区在线| 亚洲欧洲一区二区三区| 欧美激情视频一区二区三区在线播放| 亚洲国产91色在线| 激情欧美日韩一区| 日韩视频在线观看一区二区| 亚洲福利视频在线| a91a精品视频在线观看| 亚洲午夜免费福利视频| 欧美日韩亚洲一区三区| 午夜精品福利电影| 亚洲精品偷拍| 久久一区激情| 亚洲欧美日韩国产精品| 亚洲欧洲综合另类| 欧美看片网站| 99国产精品视频免费观看一公开| 国产精品一区视频网站| 亚洲免费福利视频| 在线视频精品| 韩日精品在线| 欧美日韩1区2区| 欧美精品国产精品日韩精品| 国产视频一区在线| 久久久久久9999| 久久久精品一品道一区| 久久久精品动漫| 欧美精品免费在线观看| 亚洲国产精品尤物yw在线观看| 99人久久精品视频最新地址| 国产伦精品一区二区三区高清版| 免费精品99久久国产综合精品| 久久久久久成人| 亚洲高清在线播放| 欧美精品成人91久久久久久久| 国产精品亚洲视频| 欧美日韩免费在线| 亚洲高清免费视频| 欧美国产亚洲视频| 在线视频日韩精品| 国产亚洲综合精品| 欧美视频中文一区二区三区在线观看| 欧美一区二区日韩一区二区| 亚洲免费婷婷| 国产精品久久久久免费a∨大胸| 久久精品国产一区二区三| 女同一区二区| 亚洲午夜精品视频| 国产综合18久久久久久| 欧美色图一区二区三区| 亚洲蜜桃精久久久久久久| 一区二区在线观看视频在线观看| 亚洲精品少妇网址| 亚洲欧美日韩精品综合在线观看| 伊人蜜桃色噜噜激情综合| 韩国精品主播一区二区在线观看| 亚洲国产高潮在线观看| 国产一区二区三区网站| 亚洲午夜小视频| 亚洲欧美成人网| 麻豆精品一区二区综合av| 欧美1区2区视频| 亚洲午夜精品一区二区| 在线天堂一区av电影| 136国产福利精品导航网址应用| 男同欧美伦乱| 国产欧美一二三区| 欧美在线不卡| 久久九九久久九九| 国产精品久久久久91| 亚洲欧美乱综合| 国产在线欧美日韩| 亚洲一区二区三区四区中文| 国产精品女主播在线观看| 日韩亚洲成人av在线| 国产麻豆9l精品三级站| 在线观看日韩国产| 国产欧美一区二区精品性色| 午夜在线一区二区| 久久久www成人免费无遮挡大片| 国产精品久久777777毛茸茸| 国产日韩欧美制服另类| 欧美成人69av| 国产色产综合产在线视频| 久久国产一区二区| 国产欧美三级| 国产亚洲一区二区三区| 国产综合网站| 欧美视频一区二区在线观看| 在线观看欧美精品| 国产一区二区在线免费观看| 亚洲欧美激情四射在线日| 一区二区视频免费在线观看| 欧美日韩免费一区二区三区视频| 亚洲欧美大片| 国产精品久久久久久久久借妻| 久久精品亚洲一区二区三区浴池| 国模 一区 二区 三区| 欧美一区二区三区免费大片| 久久久久久亚洲精品不卡4k岛国| 欧美影院成年免费版| 亚洲美女在线一区| 国产精品99久久久久久久久| 欧美性大战久久久久| 欧美日韩一级黄| 免费黄网站欧美| 日韩视频在线免费观看| 在线日韩欧美视频| 国产日韩在线视频| 欧美日韩dvd在线观看| 亚洲高清av在线| 亚洲影院免费观看| 久久亚洲风情| 欧美成人首页| 欧美区一区二区三区| 免费亚洲网站| 免费欧美在线视频| 亚洲欧美欧美一区二区三区| 一本色道久久综合亚洲二区三区| 亚洲欧美激情视频| 黄色成人免费网站| 老司机免费视频一区二区| 影音先锋日韩资源| 麻豆成人91精品二区三区| 国产欧美精品日韩| 亚洲第一二三四五区| 亚洲色图制服丝袜| 亚洲第一页在线| 亚洲一二三区在线| 欧美精品国产一区二区| 在线激情影院一区| 国产精品爱啪在线线免费观看| 久久高清国产| 国产精品在线看| 美国成人毛片| 亚洲一二三区在线| 亚洲一区二区在线看| 欧美另类在线观看| 亚洲精品小视频在线观看| 狠狠色伊人亚洲综合成人| 亚洲视频在线观看网站| 日韩亚洲精品视频| 国产综合色一区二区三区| 精品成人一区二区| 国产午夜精品理论片a级大结局| 欧美日韩在线另类| 欧美日韩国产综合视频在线观看中文| 久久av一区二区三区亚洲| 亚洲大片在线观看| 亚洲二区免费| 亚洲另类春色国产| 欧美日韩精品伦理作品在线免费观看| 亚洲精选中文字幕| 国产精品高精视频免费| 欧美a级在线| 欧美成人r级一区二区三区| 亚洲一区二区在线播放| 欧美一级理论片| 国产自产在线视频一区| 99视频在线观看一区三区| 久久久国际精品|