• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于協(xié)處理器的HBase內(nèi)存索引機(jī)制的研究

    2020-01-06 02:11:14朱松杰婁淵勝
    關(guān)鍵詞:協(xié)處理器數(shù)據(jù)表內(nèi)存

    朱松杰,婁淵勝,葉 楓,,李 凌,陳 勇

    1.河海大學(xué) 計(jì)算機(jī)與信息學(xué)院,南京211100

    2.南京龍淵微電子科技有限公司 博后工作站,南京211106

    1 引言

    隨著大數(shù)據(jù)時(shí)代的到來,傳統(tǒng)的關(guān)系型數(shù)據(jù)庫難以處理無規(guī)范模式的數(shù)據(jù)集,并且隨著數(shù)據(jù)集規(guī)模的增大,不能提供高效的存儲(chǔ)和查詢服務(wù),也不能滿足系統(tǒng)的新需求?;ヂ?lián)網(wǎng)先驅(qū)不得不重新設(shè)計(jì)數(shù)據(jù)庫,大數(shù)據(jù)系統(tǒng)和NoSQL(Not-Only-SQL即非關(guān)系型數(shù)據(jù)庫)越來越多地被開發(fā)出來,例如Facebook的Cassandra、Amazon的Dynamo 以及支持高效數(shù)據(jù)查詢的內(nèi)存數(shù)據(jù)存儲(chǔ)系統(tǒng)Redis等[1]。這些數(shù)據(jù)庫的數(shù)據(jù)存儲(chǔ)都采用了key-value數(shù)據(jù)模型,HBase 便是key-value 數(shù)據(jù)庫中使用最為廣泛的[2]。

    在Google 的BigTable 論文的發(fā)表后,Cafarella 在Hadoop 上面實(shí)現(xiàn)了BigTable 的一個(gè)開源版本,被稱為HBase[3]。HBase由多個(gè)軟件子系統(tǒng)組成,主要包括客戶端、HMaster、HRegionServer、Zookeeper 等,這些子系統(tǒng)共同組成一個(gè)分布式應(yīng)用系統(tǒng),它具有開源、分布式、可擴(kuò)展及面向列存儲(chǔ)的特點(diǎn),能夠?yàn)榇髷?shù)據(jù)提供隨機(jī)、實(shí)時(shí)的讀寫訪問功能。如何從海量數(shù)據(jù)中快速獲得所需數(shù)據(jù)是使用HBase 等NoSQL 數(shù)據(jù)庫的一個(gè)重要原因,HBase在其主鍵上建立了B+樹索引,在使用主鍵進(jìn)行查詢時(shí)效率很高[4]。但是,在進(jìn)行非主鍵的條件查詢時(shí),由于缺少主鍵的支撐,HBase 必須進(jìn)行全表掃描,導(dǎo)致查詢效率低下,無法滿足上述要求。對(duì)此,本文在借鑒關(guān)系型數(shù)據(jù)庫解決方案的基礎(chǔ)上,提出了一種基于二級(jí)索引的查詢機(jī)制,并將索引數(shù)據(jù)存儲(chǔ)在內(nèi)存數(shù)據(jù)庫中,通過內(nèi)存進(jìn)行二級(jí)索引檢索,進(jìn)一步提高了對(duì)大數(shù)據(jù)的實(shí)時(shí)查詢響應(yīng)。

    2 相關(guān)工作

    HBase 是一個(gè)構(gòu)建在HDFS 之上,用于海量數(shù)據(jù)存儲(chǔ)分布式列存儲(chǔ)系統(tǒng)[5]。HBase 表的每行都是按照RowKey 的字典序排序存儲(chǔ),每行數(shù)據(jù)是按照RowKey區(qū)間進(jìn)行分割存儲(chǔ)成多個(gè)Region。HBase 只針對(duì)行健的索引,在原生產(chǎn)品中訪問HBase表中的行只能通過行健訪問,行健區(qū)間訪問和全表掃描三種。

    當(dāng)前,國內(nèi)許多使用HBase的企業(yè)或者個(gè)人都會(huì)對(duì)其建立索引來提高性能,比較常見的有基于Coprocessor方案,如華為的HIndex方案和Apache Phoenix方案[6]。其支持自定義數(shù)據(jù)處理邏輯,采用數(shù)據(jù)“雙寫”(dual-write)策略,在有數(shù)據(jù)寫入時(shí)同時(shí)同步到二級(jí)索引表。相比于華為的HIndex,Apache Phoenix 的版本迭代情況較好,支持和兼容多個(gè)HBase版本,二級(jí)索引只是其中一塊功能[6]。同時(shí),二級(jí)索引的創(chuàng)建和管理直接有SQL語法的支持,使用簡(jiǎn)單。王文賢等人[7]實(shí)現(xiàn)了一種基于Solr 的HBase海量數(shù)據(jù)二級(jí)索引方案,該方案主要對(duì)華為Hindex進(jìn)行改進(jìn),其基于數(shù)據(jù)存儲(chǔ)和索引分離的思想,將Solr 檢索與HBase 的大數(shù)據(jù)存儲(chǔ)結(jié)合起來,具有一定的通用性。丁飛等人[4]實(shí)現(xiàn)了基于協(xié)處理器的HBase區(qū)域級(jí)服務(wù)端區(qū)域級(jí)第二索引擴(kuò)展功能,索引存儲(chǔ)格式選HBase自身的數(shù)據(jù)組織方式,即HFile文件格式。利用HFile高效的IO性能保證索引查詢的效率。周偉等人[8]對(duì)HBase分布式二級(jí)索引通用方案進(jìn)行研究,引入分布式索引機(jī)制,在SolrCloud中完成對(duì)索引的管理,借助協(xié)處理器提供的索引功能為HBase記錄創(chuàng)建、存儲(chǔ)索引,其中HBase負(fù)責(zé)存儲(chǔ)數(shù)據(jù),Solr負(fù)責(zé)索引數(shù)據(jù)和檢索。

    許多研究者已經(jīng)使用Coprocessor 來構(gòu)建HBase 二級(jí)索引,具體有兩種解決方案:一種是直接存儲(chǔ)到數(shù)據(jù)庫或文件中實(shí)現(xiàn)索引持久化,但這種方法的索引檢索效率較低,另一種是通過構(gòu)建內(nèi)存索引,并存儲(chǔ)到特定環(huán)境中實(shí)現(xiàn)持久化。從開發(fā)設(shè)計(jì)的角度看,把很多對(duì)二級(jí)索引管理的細(xì)節(jié)都封裝在的Coprocessor具體實(shí)現(xiàn)類里面,這些細(xì)節(jié)對(duì)外面讀寫的人是無感知的,簡(jiǎn)化了數(shù)據(jù)訪問者的使用。雖然具有一定的入侵性,會(huì)對(duì)Region-Server性能產(chǎn)生一定影響。

    對(duì)于非Coprocessor方案,不基于Coprocessor開發(fā),而是自行在外部構(gòu)建和維護(hù)索引關(guān)系。常見的是采用底層基于Apache Lucene 的Elasticsearch[9],來構(gòu)建強(qiáng)大的索引能力、搜索能力,例如支持模糊查詢、全文檢索、組合查詢、排序等。LilyHBase Indexer(也簡(jiǎn)稱HBase Indexer)是國外的NGDATA公司開源的基于solr的索引構(gòu)建工具,特色是其基于HBase 的備份機(jī)制,開發(fā)了一個(gè)叫SEP工具,通過監(jiān)控HBase的WAL日志(Put/Delete操作),來觸發(fā)對(duì)solr 集群索引的異步更新,基本對(duì)HBase無侵入性[10]。葛微等人[3]提出了名為HiBase的二級(jí)索引,它是一種基于分層式索引的設(shè)計(jì)方案,其將熱點(diǎn)索引進(jìn)行緩存,并建立高效的緩存替換策略來提高二級(jí)索引的查詢速度。Zou 等提出了互補(bǔ)聚簇式索引(Complemental Clustering Index,CCIndex),該方案把數(shù)據(jù)的詳細(xì)信息也存放在索引表中,不需要通過獲取的行鍵再到原表中去查找數(shù)據(jù)。使用非Coprocessor方案時(shí),如存儲(chǔ)開銷比較大,尤其是當(dāng)索引列比較多的時(shí)候,空間開銷會(huì)更大。索引更新代價(jià)比較高,會(huì)影響系統(tǒng)的吞吐量,索引創(chuàng)建以后,不能夠動(dòng)態(tài)增加或修改。

    綜上,本文使用基于觀察者模式的Coprocessor 方法實(shí)現(xiàn)二級(jí)索引功能,并通過分布式存儲(chǔ)保證二級(jí)索引的高可用和高容錯(cuò)性。提出了基于Coprocessor的索引構(gòu)建方案,并且針對(duì)協(xié)處理器索引檢索速度問題,構(gòu)建了內(nèi)存索引,意圖是提高索引檢索速度。

    3 所提出的索引機(jī)制

    所提機(jī)制的總體結(jié)構(gòu)如圖1所示。其中,索引管理模塊是框架核心,在用戶對(duì)數(shù)據(jù)表進(jìn)行更新操作時(shí),協(xié)處理器Coprocessor 會(huì)對(duì)這些請(qǐng)求進(jìn)行攔截,并對(duì)索引表進(jìn)行相應(yīng)操作,包括插入、刪除和更新索引的元數(shù)據(jù)(記錄用戶表對(duì)應(yīng)的索引表名稱、索引列等信息)。執(zhí)行查詢操作時(shí),系統(tǒng)會(huì)在緩存中尋找對(duì)應(yīng)索引位置,提高了索引檢索速度,當(dāng)緩存中的索引更新時(shí),索引管理模塊也會(huì)對(duì)索引進(jìn)行更新。索引持久化管理模塊主要對(duì)緩存索引進(jìn)行持久化操作,提供索引表和值表的持久化存儲(chǔ),HBase為持久化存儲(chǔ)數(shù)據(jù)提供可擴(kuò)展性和容錯(cuò)性。

    圖1 系統(tǒng)總體結(jié)構(gòu)圖

    3.1 Coprocessor基本概念

    由于HBase無法定制服務(wù)端邏輯,使得用戶無法在服務(wù)端實(shí)現(xiàn)自己需求的二級(jí)索引方案,HBase在0.92版本中引入了協(xié)處理器Coprocessor 機(jī)制,它受啟發(fā)于Google 的Bigtable 的協(xié)處理器,為實(shí)現(xiàn)建立二次索引、復(fù)雜過濾器(謂詞下推)以及訪問控制等提供了一種很好的解決方案[11]。協(xié)處理器是一種服務(wù)端組件,類似于輕量級(jí)的MapReduce,它的主要思想是通過將集群內(nèi)的數(shù)據(jù)移動(dòng)取代為計(jì)算移動(dòng)來減少計(jì)算代價(jià),提高效率。其可理解為服務(wù)端的攔截器,可根據(jù)需求確定攔截點(diǎn),再重寫這些攔截點(diǎn)對(duì)應(yīng)的方法。協(xié)處理器允許在Region服務(wù)器上運(yùn)行自己的代碼,更準(zhǔn)確地說是允許用戶執(zhí)行Region級(jí)的操作,并且可以使用與RDBMS中觸發(fā)器(trigger)類似的功能。

    Coprocessor可以分為兩大類:Observer Coprocessors(觀察者)和EndPoint Coprocessor(終端)。Observer Coprocessor在一個(gè)特定的事件發(fā)生前或發(fā)生后觸發(fā),其工作過程如圖2所示。

    圖2 協(xié)處理器工作過程

    Observer Coprocessor使用場(chǎng)景如下。

    (1)安全性:在執(zhí)行Get 或Put 操作前,通過preGet或prePut方法檢查是否允許該操作。

    (2)引用完整性約束:HBase 并不直接支持關(guān)系型數(shù)據(jù)庫中的引用完整性約束概念,即通常所說的外鍵。但是,可以使用Coprocessor增強(qiáng)這種約束。

    (3)二級(jí)索引:可以使用Coprocessor 來維持一個(gè)二級(jí)索引。

    Endpoint協(xié)處理器類似傳統(tǒng)數(shù)據(jù)庫中的存儲(chǔ)過程,客戶端可以調(diào)用這些Endpoint協(xié)處理器執(zhí)行一段Server端代碼,并將Server 端代碼的結(jié)果返回給客戶端進(jìn)一步處理[12]。利用Coprocessor,用戶可以將代碼部署到HBase Server 端,HBase 將利用底層cluster 的多個(gè)節(jié)點(diǎn)并發(fā)執(zhí)行。Endpoint 不僅能與客戶端通信,而且能與Observer 進(jìn)行通信。Observer 可以在回調(diào)方法里通知Endpoint,執(zhí)行一定的事件響應(yīng)邏輯。兩種處理器的共同協(xié)作可以定制功能強(qiáng)大的HBase應(yīng)用,既可以實(shí)現(xiàn)對(duì)集群中每個(gè)Region數(shù)據(jù)變更的監(jiān)控,又可以通過Endpoint將處理結(jié)果返回給客戶端。

    3.2 Coprocessor二級(jí)索引實(shí)現(xiàn)

    協(xié)處理器機(jī)制支持用戶根據(jù)業(yè)務(wù)要求,重寫Endpoint和Observer代碼,本文使用Observer協(xié)處理器來進(jìn)行索引的構(gòu)建。Observer 協(xié)處理器類似于關(guān)系型數(shù)據(jù)庫中的觸發(fā)器,當(dāng)對(duì)數(shù)據(jù)庫進(jìn)行增刪改查操作時(shí),Observer會(huì)對(duì)這些請(qǐng)求進(jìn)行攔截,并根據(jù)這些請(qǐng)求,實(shí)時(shí)更新索引表。二級(jí)索引的整體架構(gòu)圖如圖3所示。

    圖3 二級(jí)索引架構(gòu)圖

    建立的索引結(jié)構(gòu)如圖3 所示,采用了倒排的方法,將數(shù)據(jù)表的值與主鍵進(jìn)行交換,原本的值充當(dāng)主鍵,原本的主鍵放在值的位置,一個(gè)最基本的索引表即構(gòu)建完畢。在未建立索引前,HBase的數(shù)據(jù)模型可形式化表示為:

    其中行健為R,列族為C ,列限定符為CQ,時(shí)間戳為T ,值為V 。則二級(jí)索引的形式化表示為:Vi→{Ci→{CQi→{Ti|R}}},i=0,1,2,…,n。

    框架保證了索引文件和主表在同一個(gè)Regionserver上,這樣可以保證在需要使用索引文件時(shí)只需與Region-Server建立一次連接就可以完成,提高了速度。在此架構(gòu)中,用戶首先在配置文件(hbase-site.xml)中設(shè)定索引的細(xì)節(jié),主服務(wù)器從配置文件中獲取需要建立的索引信息,然后在對(duì)應(yīng)的RegionServer中的IndexingCoprocessor中建立索引同時(shí)管理二級(jí)索引數(shù)據(jù)。每個(gè)節(jié)點(diǎn)上都部署了協(xié)處理器Coprocessor,部署之后RegionServer端中的每個(gè)區(qū)域Region 上都會(huì)自動(dòng)創(chuàng)建一個(gè)區(qū)域協(xié)處理RegionCoprocessorHost實(shí)例,它的主要功能是用來維護(hù)系統(tǒng)級(jí)或表級(jí)的區(qū)域觀察者協(xié)處理RegionObserver。每當(dāng)RegionObserver啟動(dòng)時(shí)會(huì)將RegionCoprocessorHost初始化,初始化的過程中,RegionCoprocessorHost 會(huì)加載當(dāng)前服務(wù)端所有的RegionObserver。索引管理由擴(kuò)展的RegionObserver 實(shí)例(IndexRegionObserver)完成。IndexRegionObserver主要的擴(kuò)展接口如表1所示。

    表1 IndexRegionObserver主要擴(kuò)展接口

    下面以Put攔截器舉例說明索引表的更新過程:

    如圖4所示,在數(shù)據(jù)表進(jìn)行Put操作時(shí),數(shù)據(jù)表會(huì)監(jiān)測(cè)插入數(shù)據(jù)的Rowkey,并由此定位到RegionServer 上的Region,該事件在Put 操作之前被CoprocessorHost攔截,并自動(dòng)調(diào)用此Region 上進(jìn)行監(jiān)聽的Observer 的prePut 方法。用戶可以根據(jù)自己的需求對(duì)這個(gè)方法重寫,更新索引。在索引更新完成后,即Put方法執(zhí)行完成后,Put之后的事件會(huì)再次被CoprocessorHost攔截,并調(diào)用監(jiān)聽器Observer 的postPut 方法,同樣,該方法支持用戶的重寫,以實(shí)現(xiàn)在Put 操作完成后的索引邏輯。由此可以看出,在Put操作未完成時(shí),監(jiān)聽器將監(jiān)聽到這一事件,從而不會(huì)調(diào)用postPut 方法,索引邏輯將無法完成,保證了索引與原數(shù)據(jù)表的一致性與事件性,不會(huì)出現(xiàn)索引與原數(shù)據(jù)表無法匹配的情況。

    圖4 索引表更新過程

    索引的使用:在構(gòu)建完索引表后,當(dāng)進(jìn)行索引查詢時(shí),客戶端需要進(jìn)行Scan操作,此操作將會(huì)被協(xié)處理器攔截,將檢索條件截取,并從索引表中找出符合條件的索引項(xiàng),返回原數(shù)據(jù)表的Rowkey,數(shù)據(jù)表根據(jù)Rowkey查詢即可。

    3.3 內(nèi)存索引構(gòu)建

    Coprocessor 構(gòu)建的索引只是在邏輯上實(shí)現(xiàn)了索引結(jié)構(gòu),為了提高檢索Coprocessor 索引速度,需要對(duì)Coprocessor 構(gòu)建的索引進(jìn)行特定結(jié)構(gòu)設(shè)計(jì),內(nèi)存索引設(shè)計(jì)即可完成上述目標(biāo)。內(nèi)存的索引相較于傳統(tǒng)位于磁盤的索引在設(shè)計(jì)和架構(gòu)上都大不相同,基于內(nèi)存的索引在查詢效率上得到了極大提升。廣泛采用的內(nèi)存索引有T 樹、基于緩存敏感的CSS/CSB+樹和改進(jìn)的Hash 索引等[13]。使用了HT 樹構(gòu)建內(nèi)存索引,其結(jié)構(gòu)如圖5所示。

    圖5 HT樹的結(jié)構(gòu)

    如圖5所示,每個(gè)葉子節(jié)點(diǎn)有4個(gè)哈希表,每個(gè)哈希表中有3個(gè)哈希桶,在使用HT構(gòu)建內(nèi)存索引時(shí),需要通過查找算法查找到關(guān)鍵字可以插入的哈希表,然后通過計(jì)算,找到關(guān)鍵字可插入的哈希桶,判斷哈希桶是否已滿,若已滿則分裂該節(jié)點(diǎn),將該關(guān)鍵字插入,若未滿則直接插入哈希桶。

    內(nèi)存索引工作流程與一般索引的使用過程有所不同,具體流程如下:

    (1)內(nèi)存索引初始化

    當(dāng)向數(shù)據(jù)表的構(gòu)建過程中,需要同步進(jìn)行內(nèi)存索引的建立,對(duì)外提供檢索服務(wù)。在第一次請(qǐng)求索引檢索時(shí),系統(tǒng)會(huì)檢查內(nèi)存索引是否為空,如果為空,則進(jìn)行索引的初始化操作,建立內(nèi)存索引。

    (2)Put操作過程

    Put 操作在HBase 中相當(dāng)于插入操作,當(dāng)HBase 執(zhí)行這個(gè)操作時(shí),當(dāng)前操作發(fā)生的Region上的Observer會(huì)攔截這個(gè)事件,向內(nèi)存索引中插入一條對(duì)應(yīng)的索引項(xiàng)。

    (3)Delete操作過程

    和Put 操作相似,當(dāng)客戶端執(zhí)行Delete 操作時(shí),HBase將從表中刪除一條記錄,當(dāng)前操作發(fā)生的Region上的Observer會(huì)攔截這個(gè)事件,在內(nèi)存索引中刪除一條對(duì)應(yīng)的索引項(xiàng)。

    (4)查詢操作過程

    該機(jī)制中,為了提高查詢效率,盡量將數(shù)據(jù)處理過程本地化。在協(xié)處理器攔截到查詢請(qǐng)求后,將會(huì)構(gòu)建檢索條件,根據(jù)條件在內(nèi)存索引中進(jìn)行多線程檢索。得到滿足檢索條件的Rowkey 后,返回?cái)?shù)據(jù)表中查詢?cè)紨?shù)據(jù),將結(jié)果返回客戶端。在內(nèi)存中檢索的過程如下:

    在進(jìn)行內(nèi)存索引查詢時(shí),首先在哈希表中進(jìn)行查找,定位關(guān)鍵字所在桶,繼續(xù)在桶中查找,若找到,則指針指向所需記錄。當(dāng)關(guān)鍵字處于內(nèi)部節(jié)點(diǎn),且它的鍵為K1,K2,…,Kn。如果key <K1,則為第一個(gè)子節(jié)點(diǎn);如果K1≤key <K2,則為第二個(gè)子節(jié)點(diǎn)。依此類推,在該子節(jié)點(diǎn)上遞歸運(yùn)用查找過程。對(duì)于范圍查詢,在實(shí)際情況下使用頻率較高,下面給出算法進(jìn)行說明。

    算法1 內(nèi)存索引查找算法

    輸入 查詢范圍[ks,ke]的關(guān)鍵字ks,ke。輸出 行鍵集合RQ。

    RQ ←[?]// 結(jié)果集合設(shè)為空

    Hs←T .Get Hash(ks)//通過樹形索引查找ks所在的哈希表

    He←T .Get Hash(ke)

    H ←Hs

    while next[H]≠Hsdo

    H ←next[H]

    RQ ∪all Value[H] //將哈希表中所有值并入結(jié)果集合中

    end while

    for each map M in Hsdo //遍歷哈希表

    if key [M]>ksthen //當(dāng)遍歷映射的鍵大于范圍開始的關(guān)鍵字時(shí)

    RQ ∪value[M] //將映射的值并入結(jié)果集合中

    end if

    end for

    for each map M in Hedo if key [M]<kethen //當(dāng)遍歷映射的鍵小于范圍結(jié)束的關(guān)鍵字時(shí)

    RQ ∪value[M]

    end if

    end for

    end for

    (5)Region分片過程

    Region分片主要為了解決在數(shù)據(jù)表數(shù)據(jù)增加時(shí),數(shù)據(jù)行超出預(yù)設(shè)分片大小的情況。當(dāng)數(shù)據(jù)表發(fā)生分片過程即Split操作時(shí),對(duì)應(yīng)的內(nèi)存索引對(duì)象也會(huì)隨之發(fā)生變化[14]。分片時(shí),Region 將會(huì)從一個(gè)變?yōu)閮蓚€(gè),數(shù)據(jù)表的也會(huì)一分為二,分別存于兩個(gè)Region 中,此時(shí)Observer會(huì)監(jiān)測(cè)到Split事件,通知Endpoint重新構(gòu)建索引表。如圖6所示。

    圖6 分片時(shí)表變化

    數(shù)據(jù)表從第三項(xiàng)分裂成兩張表,協(xié)處理器在原索引表第一行構(gòu)建索引游標(biāo),以此標(biāo)記向后檢索并在Region的數(shù)據(jù)表中尋找是否有此條記錄,若存在則保留數(shù)據(jù)記錄,否則刪除,索引表由此更新完成。內(nèi)存索引構(gòu)建在索引表主鍵之上,由于索引主鍵結(jié)構(gòu)的改變,原索引結(jié)構(gòu)需要初始化操作,即步驟一操作。新分片的內(nèi)存索引對(duì)象存儲(chǔ)在新的Region協(xié)處理器中。

    3.4 內(nèi)存索引持久化

    由于內(nèi)存索引的維護(hù)都由協(xié)處理器完成,因此,內(nèi)存持久化的操作主要為了保證內(nèi)外存數(shù)據(jù)的一致性,保證主機(jī)斷電時(shí)不用重新構(gòu)建索引,不涉及對(duì)索引創(chuàng)建操作。提出了內(nèi)存索引持久化方法,將建立的內(nèi)存索引從內(nèi)存中映射到外存中,用于持久化內(nèi)存索引的外存區(qū)域索引文件由存儲(chǔ)索引信息的索引頭和索引結(jié)構(gòu)組成,索引文件與內(nèi)存空間采用內(nèi)存映射技術(shù)mmap 保持一致性[15],映射時(shí)會(huì)使用地址轉(zhuǎn)換表,將索引文件中的地址轉(zhuǎn)換為內(nèi)存中地址,并一一對(duì)應(yīng)。在對(duì)內(nèi)存索引結(jié)構(gòu)進(jìn)行修改時(shí),外存索引文件也會(huì)自動(dòng)更新。具體的內(nèi)存持久化流程如圖7所示。

    圖7 內(nèi)存持久化流程

    在上述流程圖中,一個(gè)重要的步驟即如何將索引文件映射入內(nèi)存,索引文件映射入內(nèi)存后返回的是虛擬地址,索引結(jié)構(gòu)數(shù)據(jù)沒有進(jìn)入內(nèi)存中。為了保證索引結(jié)構(gòu)完全處于內(nèi)存中,要使用相應(yīng)的方法將索引結(jié)構(gòu)逐步導(dǎo)入內(nèi)存,采用了層次遍歷的方法,將索引樹完全遍歷,所有索引結(jié)構(gòu)便處于內(nèi)存中。

    4 實(shí)驗(yàn)與結(jié)果分析

    4.1 實(shí)驗(yàn)環(huán)境與數(shù)據(jù)

    為評(píng)估本文提出的基于協(xié)處理器的內(nèi)存索引方案,驗(yàn)證在構(gòu)建二級(jí)索引時(shí)對(duì)數(shù)據(jù)庫寫入性能的影響和在構(gòu)建了二級(jí)索引時(shí)對(duì)查詢性能有怎樣的提升。同時(shí),實(shí)驗(yàn)同樣基于協(xié)處理器但使用內(nèi)存構(gòu)建索引(本文方案)與使用solr構(gòu)建索引在查詢性能上的表現(xiàn),測(cè)試了數(shù)據(jù)擴(kuò)展性與集群擴(kuò)展性。本文在主機(jī)上搭建了Hadoop集群、Zookeeper集群和HBase集群,為了與同樣基于協(xié)處理器的solr 方案和HiBase 方案進(jìn)行比較,還搭建了solr集群。實(shí)驗(yàn)環(huán)境如表2所示。

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

    實(shí)驗(yàn)所用數(shù)據(jù)為某河流近3 年各站點(diǎn)水位觀測(cè)記錄,屬性包括ID、站點(diǎn)(STCD)、水位(RZ)、地區(qū)(RFROM)和時(shí)間(TM),共3 000萬條數(shù)據(jù)。

    4.2 插入性能對(duì)比

    實(shí)驗(yàn)在分布式環(huán)境下進(jìn)行,通過3臺(tái)客戶端同時(shí)向HBase 表中插入數(shù)據(jù),并在3 臺(tái)客戶端上統(tǒng)計(jì)每500 萬數(shù)據(jù)的Put 時(shí)間,為了保證實(shí)驗(yàn)的準(zhǔn)確性,進(jìn)行30 次重復(fù)測(cè)試,并將結(jié)果累加求得均值。實(shí)驗(yàn)分別測(cè)試了無索引、基于solr 的索引、HiBase 和本文提出的基于協(xié)處理器與內(nèi)存的索引方案在相同條件下的Put 時(shí)間,結(jié)果如圖8所示。

    圖8 插入實(shí)驗(yàn)結(jié)果

    從實(shí)驗(yàn)結(jié)果可以看出,Put 效率執(zhí)行最高的是無索引方案,這是因?yàn)樵谶M(jìn)行Put操作時(shí),無索引方案無需分配資源進(jìn)行索引的構(gòu)建,而其他需構(gòu)建二級(jí)索引的方案在將數(shù)據(jù)放入數(shù)據(jù)表的同時(shí),會(huì)觸發(fā)協(xié)處理器對(duì)Put 操作進(jìn)行攔截,并調(diào)用用戶自定義的方法開始構(gòu)建二級(jí)索引。同時(shí)也可得出,在前對(duì)500 萬條數(shù)據(jù)進(jìn)行Put 操作時(shí),各方案的性能差距較小,但在到達(dá)1 000 萬數(shù)量級(jí)時(shí),無索引的方案明顯優(yōu)于其他有索引方案。這是因?yàn)殡S著數(shù)據(jù)量的增加,索引數(shù)據(jù)也越來越多,在進(jìn)行索引插入時(shí)也會(huì)相較500 萬條記錄時(shí)更加困難。HiBase 和本方案都是基于內(nèi)存索引,在構(gòu)建內(nèi)存索引時(shí),需要在協(xié)處理器中構(gòu)建適合內(nèi)存存儲(chǔ)的索引結(jié)構(gòu),會(huì)消耗額外的計(jì)算資源。而基于solr的方案只需要在solr中構(gòu)建二級(jí)索引,不需要在程序中進(jìn)行額外計(jì)算。因此,HiBase和本方案相較基于solr的方案稍有劣勢(shì),但在一個(gè)可接受的范圍之內(nèi)。

    4.3 查詢性能對(duì)比

    實(shí)驗(yàn)在一臺(tái)客戶端上進(jìn)行,數(shù)據(jù)源仍然是3 000 萬條數(shù)據(jù),本次實(shí)驗(yàn)設(shè)置了4 個(gè)測(cè)試用例。詳情如下:查詢河流站點(diǎn)水位值(STCD)在一定范圍內(nèi)的記錄條數(shù),對(duì)水位值范圍更改后即可得到不同的數(shù)據(jù)量。在水位值屬性上以建立HT 樹內(nèi)存索引,對(duì)水位值進(jìn)行范圍查詢,圖9 所示橫坐標(biāo)數(shù)據(jù)是4 次測(cè)試用例所查詢到的所有結(jié)果數(shù)據(jù)量。進(jìn)行30 次測(cè)試,求得各數(shù)據(jù)庫查詢時(shí)間的平均值,結(jié)果如圖9所示。

    圖9 查詢實(shí)驗(yàn)結(jié)果

    如圖9所示,無索引的方案與其他有索引的方案性能相比有很大差距,原因是,在原生的數(shù)據(jù)庫中搜尋一個(gè)特定值時(shí),只能通過Scan的方式進(jìn)行全表的掃描,效率極低,在數(shù)據(jù)量大時(shí),這種查詢方式可達(dá)幾十個(gè)小時(shí),無法進(jìn)行實(shí)際使用。同時(shí),可以發(fā)現(xiàn),無論查詢出的結(jié)果為多少,無索引的查詢速度都在110 min 左右。排除誤差影響,這是因?yàn)椋瑹o論結(jié)果如何,無索引的方案都要全表掃描,在每次掃描的數(shù)據(jù)量相同時(shí),查詢時(shí)間變化不大。而本方案相比于同樣構(gòu)建了二級(jí)索引的基于solr的方案,性能有較明顯的提升,數(shù)據(jù)量大時(shí),查詢速度為其3.5 倍左右,與未構(gòu)建索引的查詢效率相比速度是其50 倍左右,與同樣基于內(nèi)存索引的HiBase 方案提升了10%左右。本方案不僅在性能上優(yōu)勢(shì)巨大,隨著查詢結(jié)果的增大時(shí),查詢所需的時(shí)間變化也較小,因?yàn)橥ㄟ^內(nèi)存進(jìn)行計(jì)算,計(jì)算速度快,并且都在索引上建立了索引樹結(jié)構(gòu),在關(guān)鍵字搜索時(shí)根據(jù)樹結(jié)構(gòu)搜索可以快速定位,數(shù)據(jù)量增大時(shí),對(duì)速度影響也較小。

    4.4 擴(kuò)展性實(shí)驗(yàn)

    測(cè)試了基于協(xié)處理器的內(nèi)存索引在不同規(guī)模數(shù)據(jù)下均勻與非均勻分布數(shù)據(jù)集查詢性能。均勻分布數(shù)據(jù)集使用3 000 萬條水文數(shù)據(jù),單值查詢河流站點(diǎn)水位值(STCD)為62.20和范圍查詢水位值在60到65之間的記錄條數(shù),結(jié)果如圖10所示。

    圖10 均勻數(shù)據(jù)集查詢性能

    可以看到,當(dāng)數(shù)據(jù)的規(guī)模從0 持續(xù)變化到3 000 萬級(jí)別時(shí),查詢的時(shí)間保持了線性增長(zhǎng),這也驗(yàn)證了基于內(nèi)存方案在數(shù)據(jù)的可擴(kuò)展性方面有著良好的表現(xiàn),查詢響應(yīng)時(shí)間和結(jié)果集大小成正比。因?yàn)樵诓樵冺憫?yīng)時(shí)間中,主要開銷是對(duì)查詢結(jié)果集的訪問,在數(shù)據(jù)集中,數(shù)據(jù)是符合均勻分布的,隨著數(shù)據(jù)行總數(shù)的增長(zhǎng),查詢結(jié)果集也隨之增加,因此,查詢響應(yīng)時(shí)間會(huì)與數(shù)據(jù)行總數(shù)大小成正比。

    同時(shí),本文選用了UCI數(shù)據(jù)集Abalone數(shù)據(jù)集,該數(shù)據(jù)集符合非均勻分布,數(shù)據(jù)集可分為6類,并滿足22.69%、27.53%、25.33%、19.46%、2.31%和2.68%的數(shù)據(jù)分布規(guī)律,同時(shí)長(zhǎng)度數(shù)據(jù)也滿足非均勻分布性。為了滿足大數(shù)據(jù)測(cè)試要求,將數(shù)據(jù)量以同等倍數(shù)增加,保證數(shù)據(jù)分布的不變性,查詢數(shù)據(jù)集中Length 為130 和Length 大于110小于130的數(shù)據(jù),兩種查詢結(jié)果如圖11所示。

    圖11 非均勻數(shù)據(jù)集查詢性能

    由圖11 可以看出,當(dāng)數(shù)據(jù)量從0 增加到600 萬時(shí),由于數(shù)據(jù)的非均勻分布性,并未出現(xiàn)像均勻分布數(shù)據(jù)集中的線性增長(zhǎng)趨勢(shì)。這是由于單值查詢和范圍查詢查詢的目標(biāo)數(shù)值普遍分布于數(shù)據(jù)表的前半段,在查詢開始時(shí)查詢所得結(jié)果集較多,因此,查詢時(shí)間增加較快。查詢數(shù)據(jù)量增多時(shí),滿足查詢條件的記錄條數(shù)減少,查詢?cè)黾訒r(shí)間也隨之變少,這也驗(yàn)證了內(nèi)存索引方案良好的可擴(kuò)展性。

    同時(shí),在3 000萬條數(shù)據(jù)的基礎(chǔ)上,通過增加節(jié)點(diǎn)的數(shù)量進(jìn)行集群擴(kuò)展性實(shí)驗(yàn),由于節(jié)點(diǎn)的變化對(duì)單值查詢的性能影響可以忽略。因此,實(shí)驗(yàn)只對(duì)范圍查詢進(jìn)行,實(shí)驗(yàn)結(jié)果如圖12所示。

    圖12 節(jié)點(diǎn)數(shù)量變化對(duì)查詢時(shí)間影響

    可以看出,隨著節(jié)點(diǎn)數(shù)量的增加,查詢響應(yīng)時(shí)間逐漸減少。在進(jìn)行范圍查詢時(shí),會(huì)向所有節(jié)點(diǎn)發(fā)送查詢請(qǐng)求,因此,當(dāng)節(jié)點(diǎn)數(shù)量增加時(shí),相應(yīng)的查詢時(shí)間就會(huì)變短。

    5 結(jié)束語

    為了提高HBase的查詢性能,本文提出了基于協(xié)處理器Coprocessor的方案,實(shí)現(xiàn)了內(nèi)存索引的構(gòu)建,并將構(gòu)建的內(nèi)存索引持久化存儲(chǔ)在外存中,通過實(shí)驗(yàn)達(dá)到了預(yù)期目標(biāo)。其核心的思想為:通過協(xié)處理器構(gòu)建內(nèi)存索引,具體的內(nèi)存索引結(jié)構(gòu)為HT樹索引,它可以極大提高索引的檢索速度。同時(shí),使數(shù)據(jù)表與索引文件協(xié)同分布,托管于同一臺(tái)Region Server,保證了數(shù)據(jù)表和索引文件同時(shí)分布于集群中的同一臺(tái)服務(wù)器上,在需要用到索引文件時(shí),直接將索引文件映射入內(nèi)存,節(jié)約了時(shí)間。

    但本文還有一些不足,為了查詢的簡(jiǎn)易性,對(duì)每一個(gè)列值都創(chuàng)建了索引,這導(dǎo)致了構(gòu)建的索引文件較為龐大,降低了索引效率。同時(shí),在內(nèi)存中構(gòu)建索引對(duì)象需要付出巨大的內(nèi)存開銷,當(dāng)數(shù)量過大或索引內(nèi)容過多時(shí),集群中各服務(wù)器的內(nèi)存會(huì)急劇消耗,有可能出現(xiàn)系統(tǒng)癱瘓。

    綜上所述,本文提出的索引方案實(shí)現(xiàn)了HBase檢索速度的提高,性能和穩(wěn)定性也得到了充分的保證,但面對(duì)大數(shù)據(jù)環(huán)境下各種各樣的挑戰(zhàn),仍需要更多的努力去完善HBase的大數(shù)據(jù)處理方案。

    猜你喜歡
    協(xié)處理器數(shù)據(jù)表內(nèi)存
    基于HBase分布式數(shù)據(jù)庫海量數(shù)據(jù)序列存儲(chǔ)優(yōu)化
    湖北省新冠肺炎疫情數(shù)據(jù)表
    黨員生活(2020年2期)2020-04-17 09:56:30
    基于HBase分布式數(shù)據(jù)庫海量數(shù)據(jù)序列存儲(chǔ)優(yōu)化
    “春夏秋冬”的內(nèi)存
    基于列控工程數(shù)據(jù)表建立線路拓?fù)潢P(guān)系的研究
    HBase分布式二級(jí)索引通用方案研究
    圖表
    基于VSL的動(dòng)態(tài)數(shù)據(jù)表應(yīng)用研究
    河南科技(2014年24期)2014-02-27 14:19:25
    基于內(nèi)存的地理信息訪問技術(shù)
    上網(wǎng)本為什么只有1GB?
    亚洲熟女毛片儿| 99国产极品粉嫩在线观看| 欧美亚洲日本最大视频资源| 久久亚洲精品不卡| 露出奶头的视频| av电影中文网址| 色综合婷婷激情| 色综合亚洲欧美另类图片| 亚洲一区二区三区色噜噜| 黄网站色视频无遮挡免费观看| 999久久久精品免费观看国产| 欧美精品啪啪一区二区三区| 亚洲男人的天堂狠狠| 男女下面进入的视频免费午夜 | 国产伦一二天堂av在线观看| tocl精华| 91精品三级在线观看| 国产一区二区三区视频了| 国产成人欧美在线观看| 亚洲精品中文字幕一二三四区| 亚洲精品一区av在线观看| 又黄又粗又硬又大视频| 日韩欧美国产在线观看| 国产成人系列免费观看| 国产熟女午夜一区二区三区| 男人舔女人的私密视频| 色婷婷久久久亚洲欧美| 国产精品电影一区二区三区| 女人被狂操c到高潮| 18美女黄网站色大片免费观看| 黄色成人免费大全| 麻豆久久精品国产亚洲av| 久久精品国产亚洲av高清一级| 亚洲欧美精品综合一区二区三区| 别揉我奶头~嗯~啊~动态视频| av有码第一页| 很黄的视频免费| 日本精品一区二区三区蜜桃| 丰满的人妻完整版| 国产xxxxx性猛交| 伦理电影免费视频| 夜夜爽天天搞| 久久精品国产清高在天天线| 老汉色∧v一级毛片| 国产精品一区二区免费欧美| 给我免费播放毛片高清在线观看| 亚洲美女黄片视频| 久久 成人 亚洲| 男女之事视频高清在线观看| 精品一区二区三区视频在线观看免费| 国产99久久九九免费精品| 黄色片一级片一级黄色片| 香蕉丝袜av| 色综合亚洲欧美另类图片| 一卡2卡三卡四卡精品乱码亚洲| 免费高清在线观看日韩| 国产成人系列免费观看| 伊人久久大香线蕉亚洲五| av中文乱码字幕在线| 91在线观看av| 国产在线精品亚洲第一网站| www.熟女人妻精品国产| 好男人电影高清在线观看| 免费看十八禁软件| 久久精品91蜜桃| 三级毛片av免费| 国产成人精品久久二区二区91| а√天堂www在线а√下载| 18禁国产床啪视频网站| 国产熟女xx| 亚洲成a人片在线一区二区| 搡老熟女国产l中国老女人| 精品熟女少妇八av免费久了| 欧美成人性av电影在线观看| 叶爱在线成人免费视频播放| 日韩欧美一区二区三区在线观看| 国产成人av激情在线播放| 亚洲九九香蕉| 亚洲激情在线av| 日本五十路高清| 一本大道久久a久久精品| 9191精品国产免费久久| 男女下面插进去视频免费观看| 91精品三级在线观看| 亚洲国产精品sss在线观看| 亚洲欧美激情在线| 精品久久久精品久久久| 多毛熟女@视频| 99久久国产精品久久久| 黄色视频,在线免费观看| 精品一品国产午夜福利视频| 每晚都被弄得嗷嗷叫到高潮| 亚洲自偷自拍图片 自拍| 精品久久久久久久久久免费视频| 婷婷丁香在线五月| 亚洲av成人不卡在线观看播放网| 动漫黄色视频在线观看| 成人av一区二区三区在线看| 纯流量卡能插随身wifi吗| 亚洲av成人不卡在线观看播放网| 久久亚洲精品不卡| 国产精品香港三级国产av潘金莲| 日本欧美视频一区| 午夜免费观看网址| 久久久久亚洲av毛片大全| 女生性感内裤真人,穿戴方法视频| 亚洲电影在线观看av| 91精品国产国语对白视频| 真人一进一出gif抽搐免费| 最好的美女福利视频网| 国产亚洲精品综合一区在线观看 | 欧美人与性动交α欧美精品济南到| 99香蕉大伊视频| 美女 人体艺术 gogo| 在线观看免费视频日本深夜| 国产熟女xx| 脱女人内裤的视频| 高清在线国产一区| 好男人在线观看高清免费视频 | 精品一品国产午夜福利视频| 好男人电影高清在线观看| 久久精品亚洲精品国产色婷小说| 黑人欧美特级aaaaaa片| 国产97色在线日韩免费| 亚洲av日韩精品久久久久久密| 日韩中文字幕欧美一区二区| 可以在线观看毛片的网站| 久久国产亚洲av麻豆专区| 91老司机精品| 精品国产乱子伦一区二区三区| 色播在线永久视频| 久久精品亚洲熟妇少妇任你| 久久精品亚洲精品国产色婷小说| 97超级碰碰碰精品色视频在线观看| 国产精品日韩av在线免费观看 | 久久久久久久精品吃奶| 久久久久久久精品吃奶| 国产一卡二卡三卡精品| 看黄色毛片网站| 美女 人体艺术 gogo| 亚洲精品在线观看二区| 午夜福利18| 最近最新中文字幕大全电影3 | 精品日产1卡2卡| 少妇裸体淫交视频免费看高清 | 一进一出好大好爽视频| av中文乱码字幕在线| 国产精品久久久久久精品电影 | 一区福利在线观看| 99国产综合亚洲精品| 69精品国产乱码久久久| 美女扒开内裤让男人捅视频| 手机成人av网站| 国产男靠女视频免费网站| 婷婷六月久久综合丁香| 国产精品av久久久久免费| 人人妻人人澡人人看| 一级毛片精品| 老熟妇仑乱视频hdxx| 亚洲av成人av| 亚洲av电影在线进入| 如日韩欧美国产精品一区二区三区| 精品久久久久久成人av| 脱女人内裤的视频| 亚洲狠狠婷婷综合久久图片| 免费人成视频x8x8入口观看| 在线观看日韩欧美| 最新美女视频免费是黄的| 亚洲一区中文字幕在线| 自线自在国产av| 免费在线观看完整版高清| 欧美成人免费av一区二区三区| 最近最新免费中文字幕在线| 欧美人与性动交α欧美精品济南到| 久久草成人影院| 国内久久婷婷六月综合欲色啪| 国产人伦9x9x在线观看| 精品不卡国产一区二区三区| 老汉色∧v一级毛片| 午夜福利高清视频| 18禁国产床啪视频网站| 久久精品国产亚洲av高清一级| 国产97色在线日韩免费| 色播在线永久视频| 757午夜福利合集在线观看| 欧美一级a爱片免费观看看 | 久久人人爽av亚洲精品天堂| 日本在线视频免费播放| 99久久综合精品五月天人人| 桃色一区二区三区在线观看| 桃色一区二区三区在线观看| 亚洲国产精品成人综合色| av免费在线观看网站| 亚洲精品国产一区二区精华液| 国产伦人伦偷精品视频| 久久人人精品亚洲av| 欧美最黄视频在线播放免费| 麻豆国产av国片精品| 亚洲精品粉嫩美女一区| 丰满的人妻完整版| 一区二区三区高清视频在线| 在线播放国产精品三级| 国产精品 欧美亚洲| 精品国产乱子伦一区二区三区| 欧美精品啪啪一区二区三区| 成人国产一区最新在线观看| 国产高清激情床上av| 淫秽高清视频在线观看| 两性夫妻黄色片| 精品午夜福利视频在线观看一区| 国产成人免费无遮挡视频| 九色亚洲精品在线播放| 97碰自拍视频| 男女做爰动态图高潮gif福利片 | 波多野结衣巨乳人妻| 国产伦一二天堂av在线观看| 亚洲精品一卡2卡三卡4卡5卡| 乱人伦中国视频| 国产精品免费一区二区三区在线| 丝袜美腿诱惑在线| 亚洲av日韩精品久久久久久密| 免费看美女性在线毛片视频| 香蕉国产在线看| av片东京热男人的天堂| 桃色一区二区三区在线观看| 久久久久久久久免费视频了| 免费无遮挡裸体视频| 国产精品久久久久久亚洲av鲁大| 丰满的人妻完整版| 亚洲精品国产精品久久久不卡| 亚洲狠狠婷婷综合久久图片| 国产三级黄色录像| or卡值多少钱| 免费观看人在逋| 国产精品久久久久久人妻精品电影| 99国产精品一区二区蜜桃av| 香蕉丝袜av| 操美女的视频在线观看| 法律面前人人平等表现在哪些方面| 国产单亲对白刺激| 高清在线国产一区| 国产免费男女视频| 精品人妻1区二区| 久久精品影院6| 一区二区三区精品91| 欧美日韩亚洲国产一区二区在线观看| 亚洲av成人一区二区三| www.自偷自拍.com| 久久精品影院6| 两性夫妻黄色片| 欧美人与性动交α欧美精品济南到| 亚洲人成伊人成综合网2020| 亚洲第一欧美日韩一区二区三区| 亚洲av片天天在线观看| 一区二区三区激情视频| 国产真人三级小视频在线观看| 97人妻天天添夜夜摸| 露出奶头的视频| 国产精品一区二区免费欧美| 国产精品乱码一区二三区的特点 | 曰老女人黄片| 91字幕亚洲| 日韩免费av在线播放| 亚洲国产日韩欧美精品在线观看 | 俄罗斯特黄特色一大片| 波多野结衣av一区二区av| av免费在线观看网站| 精品国产亚洲在线| 亚洲三区欧美一区| 欧美精品亚洲一区二区| 亚洲av五月六月丁香网| 欧美一级毛片孕妇| 一边摸一边抽搐一进一小说| 欧美日韩中文字幕国产精品一区二区三区 | 国产高清激情床上av| 欧美精品亚洲一区二区| 日日爽夜夜爽网站| 国产亚洲精品av在线| 免费在线观看视频国产中文字幕亚洲| 国产乱人伦免费视频| 亚洲成人久久性| 巨乳人妻的诱惑在线观看| 岛国视频午夜一区免费看| 亚洲狠狠婷婷综合久久图片| 国产高清有码在线观看视频 | 在线av久久热| 亚洲 欧美一区二区三区| 91在线观看av| 搞女人的毛片| 国产精品亚洲一级av第二区| 婷婷六月久久综合丁香| 满18在线观看网站| 十分钟在线观看高清视频www| netflix在线观看网站| 嫩草影视91久久| 视频区欧美日本亚洲| 一进一出抽搐动态| 十分钟在线观看高清视频www| 亚洲一区二区三区不卡视频| 亚洲一区中文字幕在线| 女人高潮潮喷娇喘18禁视频| 精品久久久久久久毛片微露脸| 极品人妻少妇av视频| 91精品国产国语对白视频| 999久久久精品免费观看国产| 免费av毛片视频| 国产一区二区激情短视频| 日韩欧美免费精品| 久99久视频精品免费| 色尼玛亚洲综合影院| 啦啦啦观看免费观看视频高清 | 婷婷六月久久综合丁香| 91成年电影在线观看| 一级片免费观看大全| 18禁黄网站禁片午夜丰满| 欧美国产日韩亚洲一区| av有码第一页| 国内毛片毛片毛片毛片毛片| 禁无遮挡网站| 久久精品国产99精品国产亚洲性色 | 久久久久九九精品影院| 十分钟在线观看高清视频www| 午夜免费鲁丝| 国产乱人伦免费视频| 精品人妻1区二区| 岛国视频午夜一区免费看| 亚洲aⅴ乱码一区二区在线播放 | 精品国产国语对白av| 妹子高潮喷水视频| 国产91精品成人一区二区三区| 这个男人来自地球电影免费观看| 最新美女视频免费是黄的| 久久香蕉精品热| 黄片小视频在线播放| 色播亚洲综合网| 色尼玛亚洲综合影院| 欧美成人午夜精品| 91精品三级在线观看| 国产色视频综合| 亚洲免费av在线视频| 最新美女视频免费是黄的| 曰老女人黄片| 深夜精品福利| 操出白浆在线播放| 色综合婷婷激情| 日韩欧美国产一区二区入口| 亚洲视频免费观看视频| 亚洲久久久国产精品| 天堂动漫精品| 精品免费久久久久久久清纯| 亚洲精品国产精品久久久不卡| 啦啦啦 在线观看视频| 视频区欧美日本亚洲| 电影成人av| 老司机午夜十八禁免费视频| 中出人妻视频一区二区| 国产精品电影一区二区三区| 757午夜福利合集在线观看| 一二三四在线观看免费中文在| 国产免费男女视频| 黑人操中国人逼视频| 午夜免费鲁丝| 两个人看的免费小视频| 正在播放国产对白刺激| 757午夜福利合集在线观看| 韩国精品一区二区三区| 午夜福利18| 亚洲无线在线观看| 国产av又大| 正在播放国产对白刺激| 亚洲色图av天堂| 日本欧美视频一区| 免费观看人在逋| 亚洲成a人片在线一区二区| 男男h啪啪无遮挡| 久久久久久人人人人人| 国产精品一区二区三区四区久久 | 亚洲成人久久性| 中文字幕人妻丝袜一区二区| 国产熟女午夜一区二区三区| 色综合欧美亚洲国产小说| 亚洲国产欧美网| 欧美日本亚洲视频在线播放| 国产伦人伦偷精品视频| 国产aⅴ精品一区二区三区波| 悠悠久久av| 女性生殖器流出的白浆| 国产单亲对白刺激| 久久国产精品影院| 国产一区二区三区综合在线观看| av片东京热男人的天堂| 国产精品国产高清国产av| av中文乱码字幕在线| АⅤ资源中文在线天堂| 少妇裸体淫交视频免费看高清 | 欧美国产日韩亚洲一区| 欧美亚洲日本最大视频资源| 国产又色又爽无遮挡免费看| 国产精品av久久久久免费| 熟女少妇亚洲综合色aaa.| 一区二区三区国产精品乱码| 亚洲专区中文字幕在线| 精品久久久精品久久久| 国产97色在线日韩免费| 国产高清videossex| 九色亚洲精品在线播放| 在线观看一区二区三区| 色精品久久人妻99蜜桃| 日韩大尺度精品在线看网址 | 精品免费久久久久久久清纯| www.熟女人妻精品国产| 少妇粗大呻吟视频| 国内毛片毛片毛片毛片毛片| 在线播放国产精品三级| 亚洲成人久久性| 国产午夜精品久久久久久| 操美女的视频在线观看| 精品久久久久久久人妻蜜臀av | 成人亚洲精品一区在线观看| 色综合欧美亚洲国产小说| 国产精品免费一区二区三区在线| 51午夜福利影视在线观看| 在线av久久热| 一二三四在线观看免费中文在| 99热只有精品国产| 操美女的视频在线观看| 精品国产国语对白av| 亚洲少妇的诱惑av| 视频区欧美日本亚洲| 国产成人av教育| 中文字幕精品免费在线观看视频| 国产精品久久久久久精品电影 | 亚洲人成77777在线视频| 国产欧美日韩综合在线一区二区| 国产精品野战在线观看| 纯流量卡能插随身wifi吗| 日韩欧美三级三区| 麻豆国产av国片精品| 中文字幕最新亚洲高清| 欧美日韩黄片免| 亚洲无线在线观看| 成人国语在线视频| 国产精品国产高清国产av| 免费不卡黄色视频| 午夜免费成人在线视频| 大陆偷拍与自拍| 亚洲精品国产一区二区精华液| 日韩免费av在线播放| 长腿黑丝高跟| 精品午夜福利视频在线观看一区| 欧美成人午夜精品| 久久香蕉国产精品| 欧美黄色淫秽网站| 国产午夜福利久久久久久| 女生性感内裤真人,穿戴方法视频| 极品人妻少妇av视频| 国产精品乱码一区二三区的特点 | 波多野结衣一区麻豆| 国产亚洲精品综合一区在线观看 | 波多野结衣一区麻豆| 亚洲av片天天在线观看| 国产精品久久久av美女十八| 亚洲精华国产精华精| 人妻丰满熟妇av一区二区三区| 男人舔女人的私密视频| 制服丝袜大香蕉在线| 香蕉久久夜色| 国产一区二区在线av高清观看| 九色国产91popny在线| 黄色女人牲交| 成人三级做爰电影| 午夜精品国产一区二区电影| 久久精品成人免费网站| 欧美激情久久久久久爽电影 | 怎么达到女性高潮| 女人高潮潮喷娇喘18禁视频| 久久亚洲真实| 亚洲一区二区三区不卡视频| 午夜福利,免费看| 美女 人体艺术 gogo| 欧美日本视频| av视频免费观看在线观看| 国产av又大| 欧美乱色亚洲激情| 亚洲成人国产一区在线观看| 国产国语露脸激情在线看| 欧美激情久久久久久爽电影 | 国产99久久九九免费精品| 人人妻人人澡欧美一区二区 | 免费观看精品视频网站| 久久中文看片网| 最好的美女福利视频网| 久久久久久久久久久久大奶| 欧美一级毛片孕妇| 女人爽到高潮嗷嗷叫在线视频| 在线观看一区二区三区| 欧美人与性动交α欧美精品济南到| 变态另类成人亚洲欧美熟女 | 日韩大尺度精品在线看网址 | 日本在线视频免费播放| 亚洲国产毛片av蜜桃av| 热99re8久久精品国产| 99久久久亚洲精品蜜臀av| а√天堂www在线а√下载| 黑人操中国人逼视频| 99在线人妻在线中文字幕| 成人亚洲精品av一区二区| 此物有八面人人有两片| 非洲黑人性xxxx精品又粗又长| 亚洲国产欧美日韩在线播放| 给我免费播放毛片高清在线观看| 午夜两性在线视频| 视频在线观看一区二区三区| 香蕉久久夜色| 亚洲狠狠婷婷综合久久图片| 丁香六月欧美| 久久香蕉国产精品| 脱女人内裤的视频| 日韩欧美三级三区| 成人18禁在线播放| 中文字幕人成人乱码亚洲影| 亚洲一卡2卡3卡4卡5卡精品中文| 国产视频一区二区在线看| 色播亚洲综合网| 搞女人的毛片| 国内毛片毛片毛片毛片毛片| 校园春色视频在线观看| 99re在线观看精品视频| 成人亚洲精品av一区二区| 久久人人精品亚洲av| 国产熟女午夜一区二区三区| 欧美亚洲日本最大视频资源| 成年人黄色毛片网站| 久久久久久免费高清国产稀缺| 久久性视频一级片| 少妇 在线观看| 国产高清有码在线观看视频 | 国产男靠女视频免费网站| 亚洲人成电影免费在线| 每晚都被弄得嗷嗷叫到高潮| 亚洲色图 男人天堂 中文字幕| 亚洲三区欧美一区| 久久精品成人免费网站| 一级黄色大片毛片| 中文字幕人妻丝袜一区二区| 久久午夜综合久久蜜桃| 久久精品aⅴ一区二区三区四区| 首页视频小说图片口味搜索| 亚洲伊人色综图| 美女 人体艺术 gogo| 日韩免费av在线播放| 大香蕉久久成人网| 国产精品1区2区在线观看.| 日本免费a在线| 国产亚洲精品一区二区www| 久久久国产精品麻豆| 日日爽夜夜爽网站| 亚洲成人国产一区在线观看| 一卡2卡三卡四卡精品乱码亚洲| 国产成人系列免费观看| www国产在线视频色| 91成人精品电影| 国产精品美女特级片免费视频播放器 | 18禁裸乳无遮挡免费网站照片 | 亚洲色图 男人天堂 中文字幕| 国产乱人伦免费视频| 少妇裸体淫交视频免费看高清 | 亚洲专区国产一区二区| 中文字幕另类日韩欧美亚洲嫩草| 窝窝影院91人妻| 亚洲av美国av| 亚洲精品国产色婷婷电影| 亚洲国产看品久久| 亚洲一区高清亚洲精品| 日韩精品青青久久久久久| 久久久国产成人免费| 久久香蕉精品热| 日本 欧美在线| 天天一区二区日本电影三级 | 国内精品久久久久精免费| 国产一区二区在线av高清观看| 看黄色毛片网站| 国产伦人伦偷精品视频| 久热爱精品视频在线9| 精品欧美国产一区二区三| 国产精品影院久久| www国产在线视频色| 日韩欧美一区二区三区在线观看| 黄色女人牲交| 亚洲成人免费电影在线观看| av超薄肉色丝袜交足视频| 欧美精品啪啪一区二区三区| 精品国产乱码久久久久久男人| 午夜免费鲁丝| 久久久久国内视频| 成人三级黄色视频| 国产成人系列免费观看| 一级黄色大片毛片| 国产午夜精品久久久久久| 久久国产精品人妻蜜桃| 午夜a级毛片| 日韩有码中文字幕| 一二三四在线观看免费中文在| 国产主播在线观看一区二区| 色综合站精品国产| 精品第一国产精品| 亚洲欧美日韩高清在线视频| 久久中文看片网| 国内久久婷婷六月综合欲色啪| 欧美成人午夜精品| 男女下面插进去视频免费观看| 一本大道久久a久久精品| 国产黄a三级三级三级人| 成人精品一区二区免费| 亚洲人成77777在线视频|