• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于HBase整合Hive的查詢性能研究

      2021-09-30 01:26:04李雅楠
      關(guān)鍵詞:配置文件數(shù)據(jù)表數(shù)據(jù)量

      李雅楠 龐 慧,2,*

      (1.河北建筑工程學(xué)院,河北 張家口 075300;2.張家口市大數(shù)據(jù)技術(shù)創(chuàng)新中心,河北 張家口 075000)

      0 引 言

      HBase是面向列的非關(guān)系型數(shù)據(jù)庫,外加其具有高可靠、高性能、高可用以及可伸縮的特點(diǎn),被廣泛應(yīng)用.HBase的文件存儲系統(tǒng)是HDFS,利用Hadoop MapReduce來處理HBase中的海量數(shù)據(jù)[1].HBase面向列的特點(diǎn)也使其具有先天的劣勢.HBase在查詢的時(shí)候只能夠以rowkey為主鍵來進(jìn)行,每次查詢都需要掃描全表,這樣的方式浪費(fèi)資源且查詢效率比較低.

      Hive是比較典型的數(shù)據(jù)倉庫工具,可以被用來進(jìn)行ETL,其進(jìn)行查詢時(shí)也需要借助Hadoop MapReduce.現(xiàn)將HBase與Hive進(jìn)行整合,實(shí)現(xiàn)“HBase存儲+Hive查詢”的整合方案.HiveQL語句與最基礎(chǔ)的sql語句十分相似,且Hive Shell的操作相較于HBase Shell簡單易上手.因此,該整合方案也可以省略操作上的繁瑣步驟.

      1 HBase與Hive相關(guān)理論

      1.1 HBase

      HBase的表數(shù)據(jù)存放在Region中.每個(gè)表一開始只有一個(gè)Region,隨著數(shù)據(jù)量不斷增加,Region增大,當(dāng)達(dá)到一個(gè)閾值時(shí),Region就會被RegionServer水平切分成兩個(gè)新的Region[2].以此類推,隨著數(shù)據(jù)越來越多,對應(yīng)的Region也越來越多.Region由RegionServer進(jìn)行管理,通常情況下,一個(gè)RegionServer可以管理多個(gè)Region.

      HBase的功能組件包含以下三個(gè):(1)可以鏈接到每個(gè)客戶端的庫函數(shù);(2)Region:HBase中包含多個(gè)Region服務(wù)器;(3)Master主服務(wù)器,僅有一個(gè).若客戶端發(fā)送請求,由Region服務(wù)器來處理.除此之外,Region服務(wù)器被用來維護(hù)并存儲系統(tǒng)分配的Region.HBase中表的分區(qū)信息,由Master來負(fù)責(zé),主要擔(dān)任管理和維護(hù)的工作.

      HBase保存Region位置信息的方式和B+樹的三層結(jié)構(gòu)十分類似.第一層是Zookeeper文件,它主要是用來記錄-ROOT-表的位置信息;-ROOT-表就是第二層,這層也叫根數(shù)據(jù)表,-ROOT-表中記錄的是.META.表的Region的位置信息[3].另外,根數(shù)據(jù)表只有一個(gè)Region,并且通過它就可以訪問元數(shù)據(jù)表中的數(shù)據(jù);第三層是.META.表,即元數(shù)據(jù)表,用來記錄數(shù)據(jù)表的Region位置信息,且可以包含多個(gè)Region.

      1.2 Hive

      傳統(tǒng)數(shù)據(jù)倉庫大都是基于Oracle、MySQL這樣的關(guān)系型數(shù)據(jù)庫,擴(kuò)展成本高,面對PB級別的數(shù)據(jù)量以及各種關(guān)系數(shù)據(jù)庫、NoSQL數(shù)據(jù)庫、XML文件等數(shù)據(jù)源,其處理速度和處理效率不能夠滿足數(shù)據(jù)存儲、查詢以及融合多維度數(shù)據(jù)進(jìn)行分析的需要[4].

      Hive相當(dāng)于作業(yè)提交層,將HiveQL語句發(fā)送給中間層MapReduce來進(jìn)行計(jì)算,使用HDFS進(jìn)行存儲.Hive查詢過程中,可以通過設(shè)置合理的MapReduce的task數(shù)、小文件合并等方式來提高查詢效率[5].

      Hive的工作流程,與大眾所熟悉的關(guān)系數(shù)據(jù)庫非常相似.區(qū)別就是Hive使用的是分布式計(jì)算框架.Hive元數(shù)據(jù)存儲是需要通過Thrift來提供的.簡單的講,就是用戶要是想要修改元數(shù)據(jù),要是直接調(diào)用元數(shù)據(jù)存儲方法是行不通的,只能夠通過HiveQL來執(zhí)行,HiveQL語句和大眾熟悉的sql語句十分相似,操作比較簡單.此外,如果用戶要獲取元數(shù)據(jù),只能夠通過只讀的方式來進(jìn)行,不能夠修改.

      1.3 HBase整合Hive

      HBase與Hive都有其對外的API接口,兩者可以通過API進(jìn)行整合.Hive可以通過HBaseStorageHandler來訪問HBase中的表數(shù)據(jù),并且可以進(jìn)行創(chuàng)建、查詢等操作.

      Hive訪問HBase中表數(shù)據(jù),實(shí)質(zhì)上是通過MapReduce讀取HBase表數(shù)據(jù)[6].實(shí)現(xiàn)的第一步就是Hive通過HiveHBaseTableInputFormat在MapReduce中對HBase的數(shù)據(jù)表進(jìn)行切分,一個(gè)Region對應(yīng)一個(gè)Split,即MapReduce的Map的數(shù)量與表中Regions的數(shù)量相同.之后利用RecordReader對數(shù)據(jù)進(jìn)行讀取.Sca-nner可以被用來對全表進(jìn)行掃描,從而讀取HBase中表數(shù)據(jù),其可以調(diào)用Region-Server的next()函數(shù)來獲取表數(shù)據(jù).Filter可以實(shí)現(xiàn)過濾條件的轉(zhuǎn)化.

      以上操作全部完成之后,如果HBase和Hive中的表數(shù)據(jù)一致,且在HBase或者Hive任意平臺進(jìn)行增刪改查等操作,另一平臺的數(shù)據(jù)都可以同步,說明HBase存儲+Hive查詢框架已經(jīng)整合成功.比如:首先在Hive中查詢前十行表數(shù)據(jù),之后在HBase中查詢,所得出的結(jié)果是否一致,若結(jié)果一致,則證明HBase與Hive整合成功.

      2 實(shí)驗(yàn)與分析

      2.1 實(shí)驗(yàn)環(huán)境

      實(shí)驗(yàn)的的硬件采用的是Lenovo ThinkPad L440.

      軟件采用的是:CentOS 6.4,Hadoop 2.7.1,HBase 1.1.2,Hive 1.2.0.

      實(shí)驗(yàn)使用的數(shù)據(jù)集為美國新冠肺炎按州縣進(jìn)行統(tǒng)計(jì)的數(shù)據(jù),時(shí)間為2020.1.21-2020.5.19.其中date表示日期,county表示縣,state表示州,cases表示截止到該日期為止該縣的的累計(jì)確診病例,deaths表示截止到該日期為止該縣的死亡人數(shù).該文件為csv文件,大約共15萬行數(shù)據(jù).

      2.2 實(shí)驗(yàn)過程

      2.2.1 配置環(huán)境

      (1)拷貝lib下的jar文件:將HBase中的jar文件全部copy到Hive中.(2)拷貝HBase與Hive的通信包:Hive中包含通信包hive-hbase-handler-1.2.0.jar,將其復(fù)制到HBase目錄的lib下;(3)修改Hive的配置文件:修改conf目錄下的hive-site.xml配置文件,需要把下面的配置語句加入到該配置文件中,其中*.*.*.*是本機(jī)ip.

      2.2.2 上傳csv文件

      首先要將該csv文件上傳至HBase,具體步驟為:(1)在HBase中創(chuàng)建新表;(2)將csv文件上傳至HDFS;(3)將HDFS中的csv文件導(dǎo)入到HBase的表中,命令為:hbase org.apache.hadoop.hbase.mapreduce.ImportTsv-Dimporttsv.separator=","-Dimporttsv.columns=HBASE_ROW_KEY,info:date,info:county,info:state,info:cases,info:deaths hbase_to_hive_us1/user/us.csv.

      2.2.3 在Hive中創(chuàng)建關(guān)聯(lián)HBase的外部表

      在Hive Shell中執(zhí)行:CREATE EXTERNAL TABLE hive_to_hbase_us1(key string,date string,county string,state string,cases int,deaths int)STORED BY'org.apache.hadoop.hive.hbase.HBaseStorageHandler'WITH SERDEPROPERTIES("hbase.columns.mapping"=":key,info:date,info:county,info:state,info:cases,info:deaths")TBLPROPERTIES("hbase.table.name"="hbase_to_hive_us1").執(zhí)行成功即外部表創(chuàng)建成功.

      2.2.4 在Hive中查詢數(shù)據(jù)

      在Hive Shell中執(zhí)行:select * from hive_to_hbase_us1 limit 10;如圖1所示,查詢結(jié)果與存儲在HBase中的前十行數(shù)據(jù)吻合,說明已經(jīng)整合成功.

      圖1 hbase整合hive成功圖

      2.3 實(shí)驗(yàn)結(jié)果

      根據(jù)該數(shù)據(jù)集的特點(diǎn),本文設(shè)計(jì)如下查詢方式來驗(yàn)證查詢速率:由于新冠肺炎的確診人數(shù)是逐步增多的,時(shí)間越靠后,確診或者死亡涉及到的縣也越來越多,所以時(shí)間越靠后所涉及到的數(shù)據(jù)量是越來越大的.而對于疫情嚴(yán)重的州,累計(jì)確診病例必然也是越來越大.在這里隨機(jī)取三個(gè)州來進(jìn)行驗(yàn)證:New York,Calif-ornia,F(xiàn)lorida,這里分別使用HBase和HBase整合Hive兩種方式來統(tǒng)計(jì)以上三個(gè)州截止5月19日的總確診量.經(jīng)過查詢統(tǒng)計(jì),以上三個(gè)州截止5月19日的確診量如表1所示.

      表1 美國三個(gè)州截止5.19的累計(jì)確診人數(shù)

      查詢New York,California,F(xiàn)lorida三個(gè)州所用的時(shí)間如圖2所示.

      圖2 查詢效率對比圖

      通過對查詢Florida,California,New York三個(gè)州截止5月19日的確診量所用的時(shí)間進(jìn)行記錄,可看出使用HBase存儲+Hive查詢的整合框架的查詢性能優(yōu)于使用HBase原生訪問.并且隨著數(shù)據(jù)量的增大,兩種方案查詢性能的差距越來越明顯,用戶體驗(yàn)感也更好.不過由于硬件條件有限,所選取的數(shù)據(jù)量僅能顯示出實(shí)驗(yàn)效果,并不能看到極大的差距,還有待提高.

      3 結(jié) 語

      本文設(shè)計(jì)了HBase整合Hive的框架,并且結(jié)合美國新冠肺炎的部分?jǐn)?shù)據(jù),對該數(shù)據(jù)分別使用HBase原生訪問以及HBase存儲+Hive查詢兩種方案進(jìn)行數(shù)據(jù)分析.實(shí)驗(yàn)證明,HBase整合Hive可以在提高HBase的查詢性能.因Hive對事務(wù)弱支持,且事務(wù)執(zhí)行速度很慢,存在諸多限制和不便,不適合高并發(fā)的場景[7].本文的整合方案也可以使得Hive適用于更多應(yīng)用場景.但是由于硬件條件有限,只分析了該離線數(shù)據(jù),并且實(shí)驗(yàn)數(shù)據(jù)量也不是很大,在大量的實(shí)時(shí)數(shù)據(jù)分析中,是否可以得出同樣的結(jié)論,或者說該整合方案是否穩(wěn)定,是否需要進(jìn)一步的查詢性能的優(yōu)化,依舊值得做更深層次的研究.

      猜你喜歡
      配置文件數(shù)據(jù)表數(shù)據(jù)量
      提示用戶配置文件錯(cuò)誤 這樣解決
      基于大數(shù)據(jù)量的初至層析成像算法優(yōu)化
      計(jì)算Lyapunov指數(shù)的模糊C均值聚類小數(shù)據(jù)量法
      高刷新率不容易顯示器需求與接口標(biāo)準(zhǔn)帶寬
      湖北省新冠肺炎疫情數(shù)據(jù)表
      黨員生活(2020年2期)2020-04-17 09:56:30
      寬帶信號采集與大數(shù)據(jù)量傳輸系統(tǒng)設(shè)計(jì)與研究
      電子制作(2019年13期)2020-01-14 03:15:18
      搭建簡單的Kubernetes集群
      互不干涉混用Chromium Edge
      基于列控工程數(shù)據(jù)表建立線路拓?fù)潢P(guān)系的研究
      忘記ESXi主機(jī)root密碼怎么辦
      平湖市| 桦川县| 吴堡县| 深水埗区| 黄平县| 武邑县| 克山县| 罗田县| 江西省| 博兴县| 宝丰县| 广东省| 北海市| 荆州市| 丰县| 七台河市| 饶河县| 鄂托克旗| 青浦区| 卢龙县| 乌恰县| 涪陵区| 山东省| 西乌珠穆沁旗| 阳曲县| 台山市| 黑山县| 霍城县| 嵩明县| 文成县| 策勒县| 京山县| 武强县| 太仓市| 竹山县| 金阳县| 鄂托克前旗| 石屏县| 额尔古纳市| 镇赉县| 新邵县|