亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Redis實現(xiàn)HBase二級索引的方法

        2016-12-15 02:47:14史金鑫
        軟件 2016年11期
        關(guān)鍵詞:協(xié)處理器數(shù)據(jù)表海量

        崔 丹,史金鑫

        (1. 北京郵電大學(xué)網(wǎng)絡(luò)技術(shù)研究院,北京市 100876;2. 上海欣方智能系統(tǒng)有限公司北京分公司,北京市 100085)

        基于Redis實現(xiàn)HBase二級索引的方法

        崔 丹1,史金鑫2

        (1. 北京郵電大學(xué)網(wǎng)絡(luò)技術(shù)研究院,北京市 100876;2. 上海欣方智能系統(tǒng)有限公司北京分公司,北京市 100085)

        隨著大數(shù)據(jù)時代的到來,海量數(shù)據(jù)對傳統(tǒng)數(shù)據(jù)庫技術(shù)提出了存儲和檢索性能的挑戰(zhàn)。HBase是開源NoSQL數(shù)據(jù)庫,適合于各種非結(jié)構(gòu)化和半結(jié)構(gòu)化的松散數(shù)據(jù)的存儲和管理,目前已經(jīng)被很多大型企業(yè)用于處理海量數(shù)據(jù)。它基于rowkey的有序存儲,對rowkey支持毫秒級的快速檢索。然而,隨著HBase應(yīng)用的不斷深入,單一的通過rowkey檢索數(shù)據(jù)的方式不再滿足需求,在實際應(yīng)用中,經(jīng)常需要根據(jù)指定字段,或者幾個字段進(jìn)行組合檢索。針對該問題,本文提出了一種基于Redis創(chuàng)建HBase 二級索引的方法,使得在實際應(yīng)用中,支持多條件查詢,提升查詢的效率和性能。

        大數(shù)據(jù);HBase;二級索引;rowkey;Redis

        本文著錄格式:崔丹,史金鑫. 基于Redis實現(xiàn)HBase二級索引的方法[J]. 軟件,2016,37(11):64-67

        0 引言

        隨著信息技術(shù)的發(fā)展,網(wǎng)絡(luò)己經(jīng)成為人們交流、娛樂等活動的主要工具,互聯(lián)網(wǎng)的內(nèi)容越來越豐富,數(shù)據(jù)規(guī)模也愈加龐大[1]。一些國內(nèi)外著名的社交網(wǎng)站Facebook、Twitter、LinkedIn,搜索網(wǎng)站Coogle、Yahoo、Baidu、Sougo,購物網(wǎng)站Amazon、Taobao等大型網(wǎng)站,它們的用戶規(guī)模龐大,網(wǎng)絡(luò)請求并發(fā)性高,需要處理甚至級的數(shù)據(jù)[2]。大數(shù)據(jù)時代的到來,對傳統(tǒng)關(guān)系型數(shù)據(jù)庫的存儲和檢索性能提出了挑戰(zhàn),無法滿足這么大規(guī)模數(shù)據(jù)的高效存儲與高并發(fā)讀寫需求。為了解決這個問題,一些公司、研究結(jié)構(gòu)紛紛開發(fā)云上的數(shù)據(jù)庫系統(tǒng),它們統(tǒng)稱為NoSQL。NoSQL是指用于存儲和處理大規(guī)模結(jié)構(gòu)化或非結(jié)構(gòu)化數(shù)據(jù),能夠隨著數(shù)據(jù)規(guī)模增大而擴展的數(shù)據(jù)庫系統(tǒng)[3]。

        HBase(Hadoop Database,Hadoop數(shù)據(jù)庫)是參照Google Bigtable實現(xiàn)的開源NoSQL數(shù)據(jù)庫,它具有強一致性、高性能隨機寫、面向字段且可動態(tài)修改、可水平伸縮的特性,適合于各種非結(jié)構(gòu)化和半結(jié)構(gòu)化的松散數(shù)據(jù)的存儲和管理,目前已經(jīng)被很多大型企業(yè)用于處理海量數(shù)據(jù)[4]。然而,它本身還存在著一些問題, 如僅支持主索引結(jié)構(gòu),不支持跨行事務(wù)等,這些問題都嚴(yán)重制約著HBase的進(jìn)一步發(fā)展。針對該問題,本文提出了一種基于Redis實現(xiàn)HBase二級索引的方法,對HBase表中涉及條

        件過濾的字段和rowkey在Redis中建立索引,通過Redis的多條件查詢快速獲得符合過濾條件的rowkey,之后在HBase中通過獲得的rowkey進(jìn)行查詢,提升多條件查詢的效率和性能。

        1 HBase二級索引技術(shù)研究

        隨著大數(shù)據(jù)時代的到來,海量數(shù)據(jù)的規(guī)模超過常規(guī)數(shù)據(jù)庫工具獲取存儲管理和分析能力。大數(shù)據(jù)具有5V1C的特征:數(shù)據(jù)量巨大(Volume)、數(shù)據(jù)類型繁多(Variety)、生成速度快(Velocity)、數(shù)據(jù)易變化(Variability)、數(shù)據(jù)真實性(Veracity)、數(shù)據(jù)復(fù)雜性(Complexity)[5]。HBase數(shù)據(jù)庫在存儲大數(shù)據(jù)方面性能較好,但是需要進(jìn)一步優(yōu)化對海量數(shù)據(jù)的結(jié)構(gòu)化查詢。由于HBase基于rowkey的有序存儲,對基于rowkey的查詢十分高效,然而進(jìn)行關(guān)系型數(shù)據(jù)庫那樣可以隨意組合的多條件查詢、查詢總記錄數(shù)、分頁查詢等表現(xiàn)不佳。目前,可通過以下兩種方法解決該問題。第一種方法是使用HBase提供的過濾器,該過濾器可以對HBase中的數(shù)據(jù)在多個維度上進(jìn)行檢索操作。該方法使用起來簡單,但局限性較大,過濾器直接掃描HBase表,如果數(shù)據(jù)表范圍很大,會導(dǎo)致查詢速度很慢。第二種方法是實現(xiàn)HBase二級索引,通過查詢二級索引獲得符合條件的rowkey,然后再通過rowkey查詢HBase數(shù)據(jù)。該方法適用范圍比較廣泛。

        二級索引方案類似于關(guān)系數(shù)據(jù)庫中的二級索引,為了實現(xiàn)對非rowkey的查詢,需要為每一個索引列構(gòu)建一個索引表,實現(xiàn)索引列與原有rowkey的映射[6]。目前實現(xiàn)HBase二級索引的方法主要是以下兩種:

        第一種方法通過HBase協(xié)處理器生成并訪問索引數(shù)據(jù),將索引數(shù)據(jù)單獨存儲為一張表。該方法的缺點是數(shù)據(jù)表與索引表的數(shù)據(jù)一致性很難保證,訪問兩張不同的表也會增加遠(yuǎn)程調(diào)用的次數(shù)和IO開銷。

        第二種方法是將數(shù)據(jù)和索引數(shù)據(jù)存儲在相同的分區(qū)里,將索引數(shù)據(jù)定義為一個單獨的字段族,也是需要通過協(xié)處理器來生成并訪問二級索引數(shù)據(jù)。該方法中,單表的數(shù)據(jù)容量會急劇增加,對多個字段族進(jìn)行拆分或合并等操作時可能會造成數(shù)據(jù)丟失或不一致。

        2 基于Redis實現(xiàn)HBase二級索引方法

        Redis是一個開源的使用ANSIC語言編寫、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、高性能的Key-Value數(shù)據(jù)庫[7]。根據(jù)官方的bench-mark數(shù)據(jù),測試完成50個并發(fā)執(zhí)行100000個請求,設(shè)置和獲取的值是一個256字節(jié)字符串時讀的速度可達(dá)到110000次/s,寫的速度可達(dá)到81000次/s。它支持存儲的數(shù)據(jù)類型包括字符串、鏈表、集合、有序集合和哈希類型。通過使用集合和有序集合實現(xiàn)對非rowkey的精確查詢和范圍查詢創(chuàng)建不同的二級索引,以提升多條件查詢的效率和性能。

        圖1 基于Redis實現(xiàn)HBase二級索引的組成結(jié)構(gòu)Fig.1 the structure of achieving the HBase secondary index based on Redis

        如圖1所示,基于Redis實現(xiàn)HBase二級索引的系統(tǒng)組成主要包括客戶端、數(shù)據(jù)處理模塊、二級索引模塊。客戶端發(fā)出數(shù)據(jù)更新、查詢、刪除請求,數(shù)據(jù)處理模塊對請求進(jìn)行分別處理,進(jìn)行數(shù)據(jù)的更新、查詢和刪除,相應(yīng)地,二級索引模塊根據(jù)客戶端的請求進(jìn)行二級索引的更新、查詢和刪除。基于Redis實現(xiàn)HBase二級索引時,協(xié)處理器相當(dāng)于一個回調(diào)函數(shù)。協(xié)處理器通過配置可以實現(xiàn)作用到HBase中所有表,也可以單獨指定作用到一張表。當(dāng)用戶操作get/put/delete 數(shù)據(jù)的時候,HBase的regionserver會在 get/put/delete 方法的時候,回調(diào)一個實現(xiàn)協(xié)處理器類中的方法,方法中可以獲得你get/put/delete的數(shù)據(jù),從而實現(xiàn)構(gòu)建二級索引的操作。

        HBase在對非rowkey進(jìn)行檢索的過程如圖2所示。將HBase表中涉及條件過濾的字段和rowkey在Redis中建立索引,通過Redis的多條件查詢快速獲得符合過濾條件的rowkey值,再根據(jù)獲得的rowkey在HBase中通過rowkey進(jìn)行查詢,進(jìn)而提高查詢的效率。

        3 HBase二級索引數(shù)據(jù)結(jié)構(gòu)設(shè)計

        在實際應(yīng)用中,對HBase數(shù)據(jù)的查詢包括兩種,一是基于rowkey條件查詢,此時不需要對HBase表中數(shù)據(jù)建立二級索引便可獲得較高的查詢速度;二是基于非rowkey的條件查詢,包括精確查詢和范圍查詢,此時可通過Redis的set和sorted set實現(xiàn)

        二級索引,進(jìn)而獲得較高的檢索效率。set和sorted set類型極為相似,它們都是字符串的集合,都不允許重復(fù)的成員出現(xiàn)在一個set中。它們之間的主要差別是sorted set中的每一個成員都會有一個分?jǐn)?shù)(score)與之關(guān)聯(lián),Redis正是通過分?jǐn)?shù)來為集合中的成員進(jìn)行從小到大的排序。然而需要額外指出的是,盡管Sorted-Sets中的成員必須是唯一的,但是score)是可以重復(fù)的。

        以HBase中數(shù)據(jù)表為例,如表1,對age建立二級索引:

        圖2 基于Redis實現(xiàn)HBase非rowkey查詢過程Fig.2 the process for HBase non-rowkey query based on Redis

        表1 HBase數(shù)據(jù)表Tab.1 a data table of HBase

        基于非rowkey的精確條件查詢,建立的二級索引結(jié)構(gòu)為key-value,key為列名_值,value為rowkey。使用Redis的set類型進(jìn)行存儲,sadd(key,value)添加二級索引,生成的二級索引如表2所示下:

        表2 Redis中set存儲二級索引Tab.2 the secondary index stored in Redis set

        基于非rowkey的范圍條件查詢,建立的二級索引結(jié)構(gòu)為key-score-value,key為列名,score為列值,value為列值_rowkey。使用redis的sorted set類型進(jìn)行存儲,方法zadd(key,score,value)添加二級索引,score是按序存儲的。生成的二級索引如下:

        表3 Redis中sorted set存儲的二級索引Tab.3 the secondary index stored in Redis sorted set

        4 HBase二級索引數(shù)據(jù)結(jié)構(gòu)設(shè)計

        本文在Centos 6.5上部署分布式HBase和Redis系統(tǒng),安裝的軟件版本是JDK1.7.0_55,Hadoop 1.1.2,HBase 0.96.2,Redis 3.2.1。在對HBase建立二級索引之后,分別對HBase系統(tǒng)進(jìn)行了插入和查詢數(shù)據(jù)兩方面的性能測試。

        本文使用插入語句進(jìn)行測試,分別在插入語句條數(shù)為1 W、10 W和100 W的時候進(jìn)行測試,并針對列足否有索引的情況分別進(jìn)行測試。為了減少測試誤差,采用多次測試然后取平均值的方法進(jìn)行測試。插入性能的測試結(jié)果如表4所示:

        表4 HBase的插入性能測試結(jié)果Tab.4 the results of testing for HBase insert performance

        根據(jù)測試結(jié)果可知,在實現(xiàn)二級索引的情況下,插入數(shù)據(jù)需要耗費更多的時間。這是因為,在HBase中插入數(shù)據(jù)后,還需要觸發(fā)協(xié)處理器創(chuàng)建相應(yīng)的二級索引存入Redis。在有索引和無索引的時插入數(shù)據(jù),會隨著入庫數(shù)據(jù)的條數(shù)增加而增加。這兩種情況下在HBase插入操作都是根據(jù)rowkey進(jìn)行插入的,而數(shù)據(jù)表是按照rowkey順序分布式存儲的,因此在需要建立二級索引的情況下多花費的時間即為寫入Redis的時間。

        本文使用查詢語句對HBase查詢性能進(jìn)行測試,分別在查詢語句條數(shù)為1 W、10 W和100 W進(jìn)行測試。查詢性能的測試結(jié)果如表5所示:

        表5 HBase的查詢性能測試結(jié)果Tab.5 the results of testing for HBase select performance

        根據(jù)測試結(jié)果可知,在實現(xiàn)二級索引的情況下,HBase查詢性能極大提升。這是因為HBase在執(zhí)行基于rowkey的查詢時,查詢速率很高,而在建立二級索引的情況,系統(tǒng)會將對非rowkey的查詢,通過查詢Redis中的二級索引獲得符合條件的rowkey,再通過rowkey在HBase中獲得數(shù)據(jù)集,間接地將基于非rowkey的查詢轉(zhuǎn)化為基于rowkey的查詢,獲得較高的查詢效率。

        本文對上述所有測試結(jié)果進(jìn)行綜合分析,得出如下結(jié)論。釆用二級索引能夠極大提高數(shù)據(jù)査詢的效率,實現(xiàn)海量數(shù)據(jù)旳實時查詢。通過二級索引進(jìn)行數(shù)據(jù)查詢、更新和刪除操作時,都是先對索引表按rowkey查詢?nèi)〉盟饕龜?shù)據(jù),再根據(jù)HBase表的rowkey進(jìn)行相應(yīng)操作。按照rowkey順序進(jìn)行存儲,根據(jù)rowkey進(jìn)行查詢操作的效率很高。

        5 結(jié)論

        本文提出了一種基于Redis實現(xiàn)HBase二級索引的方法,當(dāng)客戶端向HBase中寫數(shù)據(jù)時,觸發(fā)協(xié)處理器,根據(jù)當(dāng)前表的索引規(guī)則在Redis中創(chuàng)建二級索引。在創(chuàng)建二級索引的過程中使用了數(shù)據(jù)庫連接池,減少了由于不斷創(chuàng)建新連接的開銷,實現(xiàn)快速構(gòu)建二級索引。在該方法中,實現(xiàn)了多表對應(yīng)一個協(xié)處理器的機制;可對索引字段進(jìn)行靈活配置,以滿足精確查詢和范圍查詢的需求;實現(xiàn)基于內(nèi)存數(shù)據(jù)庫的二級索引存儲機制,將HBase數(shù)據(jù)表生成的二級索引存儲在Redis內(nèi)存數(shù)據(jù)庫。當(dāng)客戶端發(fā)出查詢請求時,可以快速查詢二級索引,大幅提升訪問效率。

        [1] 李國杰, 程學(xué)旗. 大數(shù)據(jù)研究: 未來科技及經(jīng)濟(jì)社會發(fā)展的重大戰(zhàn)略領(lǐng)域——大數(shù)據(jù)的研究現(xiàn)狀與科學(xué)思考[J]. 中國科學(xué)院院刊, 2012, 27(6): 647-657. LI G J, CHENG X Q, XUE W W. Big Data Research: Major Strategic Fields for Future Technology and Economic and Social Development-Research Status and Scientific Thinking of Big Data[J]. Chinese Academy of Sciences, 2012, 27(6): 647-657. (in Chinese)

        [2] 王珊, 王會舉, 覃雄派等. 架構(gòu)大數(shù)據(jù): 挑戰(zhàn)、現(xiàn)狀與展望[J]. 計算機學(xué)報, 2011, 34(10): 1741-1752. WANG S, WANG H J, QIN X P, et al. Architectural Big Data: Challenges, Status Quo and Prospects[J]. Chinese Journal of Computers, 2011, 34(10): 1741-1752. (in Chinese)

        [3] 盧益陽. NoSQL數(shù)據(jù)管理系統(tǒng)綜述[J]. 企業(yè)科技與發(fā)展, 2011, (17): 31-33. LU Y Y. A Survey of NoSQL Data Management System[J]. Enterprise Science Technology and Development, 2011, (17): 31-33. (in Chinese)

        [4] 卓海藝. 基于HBase的海量數(shù)據(jù)實時查詢系統(tǒng)設(shè)計與實現(xiàn)[D]. 北京:北京郵電大學(xué),2013. ZHUO H Y. Design and Implementation of Real - time Query System Based on HBase for Massive Data[D]. Beijing: Beijing University of Posts and Telecommunications, 2013. (in Chinese)

        [5] 孟小峰, 慈祥. 大數(shù)據(jù)管理: 概念、技術(shù)與挑戰(zhàn)[J]. 計算機研究與發(fā)展, 2013, 50(1): 146-169. MENG X F, CI X. Big Data Management: Concepts, Technologies and Challenges[J]. Computer Research and Development, 2013, 50(1): 146-169. (in Chinese)

        [6] 馬友忠, 孟小峰. 云數(shù)據(jù)管理索引技術(shù)研究[J]. 軟件學(xué)報, 2015, 26(1): 145-166. MA Y Z, MENG X F. Research on Cloud Data Management Index Technology[J]. Journal of Software, 2015, 26(1): 145-166. (in Chinese)

        [7] 曾超宇, 李金香. Redis在高速緩存系統(tǒng)中的應(yīng)用[J]. 微型機與應(yīng)用, 2013, 32(12): 11-13. ZENG C Y, LI J X. Application of Redis in Caching System[J]. Microcomputer and Its Applications, 2013, 32(12): 11-13. (in Chinese)

        Implementation of HBase Secondary Index Based on Redis

        CUI Dan1, SHI Jin-xin2
        (1. Network Technology Research Institute, Beijing University of Posts and Telecommunications, Beijing 100876, China; 2. Shanghai Cintel Intelligent System Co., Ltd. Beijing Branch, Beijing 100085, China)

        With the arrival of the big data era, these massive data challenges traditional storage and retrieval performance for traditional database technologies. HBase is open source NoSQL database, suitable for a variety of unstructured and semi-structured data storage and management of the loose, and has been used by many large enterprises to deal with massive data. It is based on the rowkey of the orderly storage, supporting millisecond-level rapid retrieval based on rowkey. However, with the deepening of HBase applications, a single rowkey retrieval of data by no longer meet the needs of more applications. The practical applications often need to specify the field, or a combination of several fields to retrieve. To solve this problem, this paper proposes a method of creating HBase secondary index based on Redis, which can support multi-conditional query and improve query efficiency and performance in practical application.【Key words】: Bid data; HBase; Secondary index; Rowkey; Redis

        TP311

        A

        10.3969/j.issn.1003-6970.2016.11.015

        崔丹(1990-),女,碩士研究生,主要研究方向為數(shù)據(jù)庫集群中間件負(fù)載均衡技術(shù)

        猜你喜歡
        協(xié)處理器數(shù)據(jù)表海量
        一種傅里葉域海量數(shù)據(jù)高速譜聚類方法
        基于HBase分布式數(shù)據(jù)庫海量數(shù)據(jù)序列存儲優(yōu)化
        湖北省新冠肺炎疫情數(shù)據(jù)表
        黨員生活(2020年2期)2020-04-17 09:56:30
        基于HBase分布式數(shù)據(jù)庫海量數(shù)據(jù)序列存儲優(yōu)化
        海量快遞垃圾正在“圍城”——“綠色快遞”勢在必行
        基于列控工程數(shù)據(jù)表建立線路拓?fù)潢P(guān)系的研究
        HBase分布式二級索引通用方案研究
        一個圖形所蘊含的“海量”巧題
        圖表
        基于VSL的動態(tài)數(shù)據(jù)表應(yīng)用研究
        河南科技(2014年24期)2014-02-27 14:19:25
        国产麻豆剧传媒精品国产av| 亚洲精品国产字幕久久vr| 国产精品久久久亚洲第一牛牛| 亚洲国产一区二区三区亚瑟| 亚洲欧洲日产国码久在线| 久久久精品网站免费观看| 久久久久亚洲精品无码系列| 国产综合久久久久| 国产无套视频在线观看香蕉| 91青青草视频在线播放| 日本一区二区三级在线观看| 精品av熟女一区二区偷窥海滩| 一本色道久久综合亚洲精品不卡| 日本五月天婷久久网站| 麻豆久久久国内精品| 亚洲av日韩专区在线观看| 日韩精品久久无码中文字幕| 日韩精品无码一区二区三区免费| 亚洲日产AV中文字幕无码偷拍| 亚洲女人的天堂网av| 无码国产精品一区二区免费式直播| 三级网址在线| 成人精品国产亚洲av久久| 亚洲综合一区中文字幕| 中文字幕精品久久久久人妻红杏ⅰ| 亚洲国产A∨无码影院| 亚洲av中文字字幕乱码软件| 亚洲av色欲色欲www| 精品福利视频一区二区三区 | 亚洲tv精品一区二区三区| 久久久国产精品三级av| 99久久精品免费看国产一区二区三区| 毛茸茸的中国女bbw| 中文字幕一区韩国三级| 日韩一区二区三区久久精品| 午夜视频在线在免费| 91精品国产福利尤物免费| 亚洲天堂男人的av天堂| 91九色成人蝌蚪首页| 亚洲精品午夜无码电影网| 亚洲欧美日韩中文v在线|