精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

HBase原理-數(shù)據(jù)讀取流程解析

大數(shù)據(jù)
HBase中更新刪除操作并不直接操作原數(shù)據(jù),而是生成一個(gè)新紀(jì)錄,那問(wèn)題來(lái)了,如何知道一條記錄到底是插入操作還是更新操作亦或是刪除操作呢?這正是KeyType和Timestamp的用武之地。

和寫(xiě)流程相比,HBase讀數(shù)據(jù)是一個(gè)更加復(fù)雜的操作流程,這主要基于兩個(gè)方面的原因:

其一是因?yàn)檎麄€(gè)HBase存儲(chǔ)引擎基于LSM-Like樹(shù)實(shí)現(xiàn),因此一次范圍查詢可能會(huì)涉及多個(gè)分片、多塊緩存甚至多個(gè)數(shù)據(jù)存儲(chǔ)文件;

其二是因?yàn)镠Base中更新操作以及刪除操作實(shí)現(xiàn)都很簡(jiǎn)單,更新操作并沒(méi)有更新原有數(shù)據(jù),而是使用時(shí)間戳屬性實(shí)現(xiàn)了多版本。

刪除操作也并沒(méi)有真正刪除原有數(shù)據(jù),只是插入了一條打上”deleted”標(biāo)簽的數(shù)據(jù),而真正的數(shù)據(jù)刪除發(fā)生在系統(tǒng)異步執(zhí)行Major_Compact的時(shí)候。很顯然,這種實(shí)現(xiàn)套路大大簡(jiǎn)化了數(shù)據(jù)更新、刪除流程,但是對(duì)于數(shù)據(jù)讀取來(lái)說(shuō)卻意味著套上了層層枷鎖,讀取過(guò)程需要根據(jù)版本進(jìn)行過(guò)濾,同時(shí)對(duì)已經(jīng)標(biāo)記刪除的數(shù)據(jù)也要進(jìn)行過(guò)濾。

總之,把這么復(fù)雜的事情講明白并不是一件簡(jiǎn)單的事情,為了更加條理化地分析整個(gè)查詢過(guò)程,接下來(lái)筆者會(huì)用兩篇文章來(lái)講解整個(gè)過(guò)程,首篇文章主要會(huì)從框架的角度粗粒度地分析scan的整體流程,并不會(huì)涉及太多的細(xì)節(jié)實(shí)現(xiàn)。大多數(shù)看客通過(guò)首篇文章基本就可以初步了解scan的工作思路;為了能夠從細(xì)節(jié)理清楚整個(gè)scan流程,接著第二篇文章將會(huì)在***篇的基礎(chǔ)上引入更多的實(shí)現(xiàn)細(xì)節(jié)以及HBase對(duì)于scan所做的基礎(chǔ)優(yōu)化。因?yàn)槔斫鈫?wèn)題可能會(huì)有紕漏,希望可以一起探討交流,歡迎拍磚~

Client-Server交互邏輯

運(yùn)維開(kāi)發(fā)了很長(zhǎng)一段時(shí)間HBase,經(jīng)常有業(yè)務(wù)同學(xué)咨詢?yōu)槭裁纯蛻舳伺渲梦募袥](méi)有配置RegionServer的地址信息,這里針對(duì)這種疑問(wèn)簡(jiǎn)單的做下解釋,客戶端與HBase系統(tǒng)的交互階段主要有如下幾個(gè)步驟:

客戶端首先會(huì)根據(jù)配置文件中zookeeper地址連接zookeeper,并讀取//meta-region-server節(jié)點(diǎn)信息,該節(jié)點(diǎn)信息存儲(chǔ)HBase元數(shù)據(jù)(hbase:meta)表所在的RegionServer地址以及訪問(wèn)端口等信息。用戶可以通過(guò)zookeeper命令(get //meta-region-server)查看該節(jié)點(diǎn)信息。

根據(jù)hbase:meta所在RegionServer的訪問(wèn)信息,客戶端會(huì)將該元數(shù)據(jù)表加載到本地并進(jìn)行緩存。然后在表中確定待檢索rowkey所在的RegionServer信息。

根據(jù)數(shù)據(jù)所在RegionServer的訪問(wèn)信息,客戶端會(huì)向該RegionServer發(fā)送真正的數(shù)據(jù)讀取請(qǐng)求。服務(wù)器端接收到該請(qǐng)求之后需要進(jìn)行復(fù)雜的處理,具體的處理流程將會(huì)是這個(gè)專題的重點(diǎn)。

通過(guò)上述對(duì)客戶端以及HBase系統(tǒng)的交互分析,可以基本明確兩點(diǎn):

客戶端只需要配置zookeeper的訪問(wèn)地址以及根目錄,就可以進(jìn)行正常的讀寫(xiě)請(qǐng)求。不需要配置集群的RegionServer地址列表。

客戶端會(huì)將hbase:meta元數(shù)據(jù)表緩存在本地,因此上述步驟中前兩步只會(huì)在客戶端***次請(qǐng)求的時(shí)候發(fā)生,之后所有請(qǐng)求都直接從緩存中加載元數(shù)據(jù)。如果集群發(fā)生某些變化導(dǎo)致hbase:meta元數(shù)據(jù)更改,客戶端再根據(jù)本地元數(shù)據(jù)表請(qǐng)求的時(shí)候就會(huì)發(fā)生異常,此時(shí)客戶端需要重新加載一份***的元數(shù)據(jù)表到本地。

RegionServer接收到客戶端的get/scan請(qǐng)求之后,先后做了兩件事情:構(gòu)建scanner體系(實(shí)際上就是做一些scan前的準(zhǔn)備工作),在此體系基礎(chǔ)上一行一行檢索。舉個(gè)不太合適但易于理解的例子,scan數(shù)據(jù)就和開(kāi)發(fā)商蓋房一樣,也是分成兩步:組建施工隊(duì)體系,明確每個(gè)工人的職責(zé);一層一層蓋樓。

構(gòu)建scanner體系-組建施工隊(duì)

scanner體系的核心在于三層scanner:RegionScanner、StoreScanner以及StoreFileScanner。三者是層級(jí)的關(guān)系,一個(gè)RegionScanner由多個(gè)StoreScanner構(gòu)成,一張表由多個(gè)列族組成,就有多少個(gè)StoreScanner負(fù)責(zé)該列族的數(shù)據(jù)掃描。一個(gè)StoreScanner又是由多個(gè)StoreFileScanner組成。每個(gè)Store的數(shù)據(jù)由內(nèi)存中的MemStore和磁盤上的StoreFile文件組成,相對(duì)應(yīng)的,StoreScanner對(duì)象會(huì)雇傭一個(gè)MemStoreScanner和N個(gè)StoreFileScanner來(lái)進(jìn)行實(shí)際的數(shù)據(jù)讀取,每個(gè)StoreFile文件對(duì)應(yīng)一個(gè)StoreFileScanner,注意:StoreFileScanner和MemstoreScanner是整個(gè)scan的最終執(zhí)行者。

對(duì)應(yīng)于建樓項(xiàng)目,一棟樓通常由好幾個(gè)單元樓構(gòu)成(每個(gè)單元樓對(duì)應(yīng)于一個(gè)Store),每個(gè)單元樓會(huì)請(qǐng)一個(gè)監(jiān)工(StoreScanner)負(fù)責(zé)該單元樓的建造。而監(jiān)工一般不做具體的事情,他負(fù)責(zé)招募很多工人(StoreFileScanner),這些工人才是建樓的主體。下圖是整個(gè)構(gòu)建流程圖:

RegionScanner會(huì)根據(jù)列族構(gòu)建StoreScanner,有多少列族就構(gòu)建多少StoreScanner,用于負(fù)責(zé)該列族的數(shù)據(jù)檢索

1.1 構(gòu)建StoreFileScanner:每個(gè)StoreScanner會(huì)為當(dāng)前該Store中每個(gè)HFile構(gòu)造一個(gè)StoreFileScanner,用于實(shí)際執(zhí)行對(duì)應(yīng)文件的檢索。同時(shí)會(huì)為對(duì)應(yīng)Memstore構(gòu)造一個(gè)MemstoreScanner,用于執(zhí)行該Store中Memstore的數(shù)據(jù)檢索。該步驟對(duì)應(yīng)于監(jiān)工在人才市場(chǎng)招募建樓所需的各種類型工匠。

1.2 過(guò)濾淘汰StoreFileScanner:根據(jù)Time Range以及RowKey Range對(duì)StoreFileScanner以及MemstoreScanner進(jìn)行過(guò)濾,淘汰肯定不存在待檢索結(jié)果的Scanner。上圖中StoreFile3因?yàn)闄z查RowKeyRange不存在待檢索Rowkey所以被淘汰。該步驟針對(duì)具體的建樓方案,裁撤掉部分不需要的工匠,比如這棟樓不需要地暖安裝,對(duì)應(yīng)的工匠就可以撤掉。

1.3 Seek rowkey:所有StoreFileScanner開(kāi)始做準(zhǔn)備工作,在負(fù)責(zé)的HFile中定位到滿足條件的起始Row。工匠也開(kāi)始準(zhǔn)備自己的建造工具,建造材料,找到自己的工作地點(diǎn),等待一聲命下。就像所有重要項(xiàng)目的準(zhǔn)備工作都很核心一樣,Seek過(guò)程(此處略過(guò)Lazy Seek優(yōu)化)也是一個(gè)很核心的步驟,它主要包含下面三步:

定位Block Offset:在Blockcache中讀取該HFile的索引樹(shù)結(jié)構(gòu),根據(jù)索引樹(shù)檢索對(duì)應(yīng)RowKey所在的Block Offset和Block Size

Load Block:根據(jù)BlockOffset首先在BlockCache中查找Data Block,如果不在緩存,再在HFile中加載

Seek Key:在Data Block內(nèi)部通過(guò)二分查找的方式定位具體的RowKey

整體流程細(xì)節(jié)參見(jiàn)《HBase原理-探索HFile索引機(jī)制》,文中詳細(xì)說(shuō)明了HFile索引結(jié)構(gòu)以及如何通過(guò)索引結(jié)構(gòu)定位具體的Block以及RowKey

1.4 StoreFileScanner合并構(gòu)建最小堆:將該Store中所有StoreFileScanner和MemstoreScanner合并形成一個(gè)heap(最小堆),所謂heap是一個(gè)優(yōu)先級(jí)隊(duì)列,隊(duì)列中元素是所有scanner,排序規(guī)則按照scanner seek到的keyvalue大小由小到大進(jìn)行排序。這里需要重點(diǎn)關(guān)注三個(gè)問(wèn)題,首先為什么這些Scanner需要由小到大排序,其次keyvalue是什么樣的結(jié)構(gòu),***,keyvalue誰(shuí)大誰(shuí)小是如何確定的:

為什么這些Scanner需要由小到大排序?

最直接的解釋是scan的結(jié)果需要由小到大輸出給用戶,當(dāng)然,這并不全面,最合理的解釋是只有由小到大排序才能使得scan效率***。舉個(gè)簡(jiǎn)單的例子,HBase支持?jǐn)?shù)據(jù)多版本,假設(shè)用戶只想獲取***版本,那只需要將這些數(shù)據(jù)由***到最舊進(jìn)行排序,然后取隊(duì)首元素返回就可以。那么,如果不排序,就只能遍歷所有元素,查看符不符合用戶查詢條件。這就是排隊(duì)的意義。

工匠們也需要排序,先做地板的排前面,做墻體的次之,***是做門窗戶的。做墻體的內(nèi)部還需要再排序,做內(nèi)墻的排前面,做外墻的排后面,這樣,假如設(shè)計(jì)師臨時(shí)決定不做外墻的話,就可以直接跳過(guò)外墻部分工作。很顯然,如果不排序的話,是沒(méi)辦法臨時(shí)做決定的,因?yàn)檫@部分工作已經(jīng)可能做掉了。

HBase中KeyValue是什么樣的結(jié)構(gòu)?

HBase中KeyValue并不是簡(jiǎn)單的KV數(shù)據(jù)對(duì),而是一個(gè)具有復(fù)雜元素的結(jié)構(gòu)體,其中Key由RowKey,ColumnFamily,Qualifier ,TimeStamp,KeyType等多部分組成,Value是一個(gè)簡(jiǎn)單的二進(jìn)制數(shù)據(jù)。Key中元素KeyType表示該KeyValue的類型,取值分別為Put/Delete/Delete Column/Delete Family四種。KeyValue可以表示為如下圖所示:

[[179930]]

了解了KeyValue的邏輯結(jié)構(gòu)后,我們不妨再進(jìn)一步從原理的角度想想HBase的開(kāi)發(fā)者們?yōu)槭裁慈绱藢?duì)其設(shè)計(jì)。這個(gè)就得從HBase所支持的數(shù)據(jù)操作說(shuō)起了,HBase支持四種主要的數(shù)據(jù)操作,分別是Get/Scan/Put/Delete,其中Get和Scan代表數(shù)據(jù)查詢,Put操作代表數(shù)據(jù)插入或更新(如果Put的RowKey不存在則為插入操作、否則為更新操作),特別需要注意的是HBase中更新操作并不是直接覆蓋修改原數(shù)據(jù),而是生成新的數(shù)據(jù),新數(shù)據(jù)和原數(shù)據(jù)具有不同的版本(時(shí)間戳);Delete操作執(zhí)行數(shù)據(jù)刪除,和數(shù)據(jù)更新操作相同,HBase執(zhí)行數(shù)據(jù)刪除并不會(huì)馬上將數(shù)據(jù)從數(shù)據(jù)庫(kù)中***刪除,而只是生成一條刪除記錄,***在系統(tǒng)執(zhí)行文件合并的時(shí)候再統(tǒng)一刪除。

HBase中更新刪除操作并不直接操作原數(shù)據(jù),而是生成一個(gè)新紀(jì)錄,那問(wèn)題來(lái)了,如何知道一條記錄到底是插入操作還是更新操作亦或是刪除操作呢?這正是KeyType和Timestamp的用武之地。上文中提到KeyType取值為分別為Put/Delete/Delete Column/Delete Family四種,如果KeyType取值為Put,表示該條記錄為插入或者更新操作,而無(wú)論是插入或者更新,都可以使用版本號(hào)(Timestamp)對(duì)記錄進(jìn)行選擇;如果KeyType為Delete,表示該條記錄為整行刪除操作;相應(yīng)的KeyType為Delete Column和Delete Family分別表示刪除某行某列以及某行某列族操作;

不同KeyValue之間如何進(jìn)行大小比較?

上文提到KeyValue中Key由RowKey,ColumnFamily,Qualifier ,TimeStamp,KeyType等5部分組成,HBase設(shè)定Key大小首先比較RowKey,RowKey越小Key就越小;RowKey如果相同就看CF,CF越小Key越小;CF如果相同看Qualifier,Qualifier越小Key越小;Qualifier如果相同再看Timestamp,Timestamp越大表示時(shí)間越新,對(duì)應(yīng)的Key越小。如果Timestamp還相同,就看KeyType,KeyType按照DeleteFamily -> DeleteColumn -> Delete -> Put 順序依次對(duì)應(yīng)的Key越來(lái)越大。

2. StoreScanner合并構(gòu)建最小堆:上文討論的是一個(gè)監(jiān)工如何構(gòu)建自己的工匠師團(tuán)隊(duì)以及工匠師如何做準(zhǔn)備工作、排序工作。實(shí)際上,監(jiān)工也需要進(jìn)行排序,比如一單元的監(jiān)工排前面,二單元的監(jiān)工排之后… StoreScanner一樣,列族小的StoreScanner排前面,列族大的StoreScanner排后面。

scan查詢-層層建樓

構(gòu)建Scanner體系是為了更好地執(zhí)行scan查詢,就像組建工匠師團(tuán)隊(duì)就是為了蓋房子一樣。scan查詢總是一行一行查詢的,先查***行的所有數(shù)據(jù),再查第二行的所有數(shù)據(jù),但每一行的查詢流程卻沒(méi)有什么本質(zhì)區(qū)別。蓋房子也一樣,無(wú)論是蓋8層還是蓋18層,都需要一層一層往上蓋,而且每一層的蓋法并沒(méi)有什么區(qū)別。所以實(shí)際上我們只需要關(guān)注其中一行數(shù)據(jù)是如何查詢的就可以。

對(duì)于一行數(shù)據(jù)的查詢,又可以分解為多個(gè)列族的查詢,比如RowKey=row1的一行數(shù)據(jù)查詢,首先查詢列族1上該行的數(shù)據(jù)集合,再查詢列族2里該行的數(shù)據(jù)集合。同樣是蓋***層房子,先蓋一單元的一層,再改二單元的一層,蓋完之后才算一層蓋完,接著開(kāi)始蓋第二層。所以我們也只需要關(guān)注某一行某個(gè)列族的數(shù)據(jù)是如何查詢的就可以。

還記得Scanner體系構(gòu)建的最終結(jié)果是一個(gè)由StoreFileScanner和MemstoreScanner組成的heap(最小堆)么,這里就派上用場(chǎng)了。下圖是一張表的邏輯視圖,該表有兩個(gè)列族cf1和cf2(我們只關(guān)注cf1),cf1只有一個(gè)列name,表中有5行數(shù)據(jù),其中每個(gè)cell基本都有多個(gè)版本。cf1的數(shù)據(jù)假如實(shí)際存儲(chǔ)在三個(gè)區(qū)域,memstore中有r2和r4的***數(shù)據(jù),hfile1中是最早的數(shù)據(jù)?,F(xiàn)在需要查詢RowKey=r2的數(shù)據(jù),按照上文的理論對(duì)應(yīng)的Scanner指向就如圖所示:

這三個(gè)Scanner組成的heap為,Scanner由小到大排列。查詢的時(shí)候首先pop出heap的堆頂元素,即MemstoreScanner,得到keyvalue = r2:cf1:name:v3:name23的數(shù)據(jù),拿到這個(gè)keyvalue之后,需要進(jìn)行如下判定:

檢查該KeyValue的KeyType是否是Deleted/DeletedCol等,如果是就直接忽略該列所有其他版本,跳到下列(列族)

檢查該KeyValue的Timestamp是否在用戶設(shè)定的Timestamp Range范圍,如果不在該范圍,忽略

檢查該KeyValue是否滿足用戶設(shè)置的各種filter過(guò)濾器,如果不滿足,忽略

檢查該KeyValue是否滿足用戶查詢中設(shè)定的版本數(shù),比如用戶只查詢***版本,則忽略該cell的其他版本;反正如果用戶查詢所有版本,則還需要查詢?cè)揷ell的其他版本。

現(xiàn)在假設(shè)用戶查詢所有版本而且該keyvalue檢查通過(guò),此時(shí)當(dāng)前的堆頂元素需要執(zhí)行next方法去檢索下一個(gè)值,并重新組織最小堆。即圖中MemstoreScanner將會(huì)指向r4,重新組織最小堆之后最小堆將會(huì)變?yōu)椋秧斣刈優(yōu)镾toreFileScanner2,得到keyvalue=r2:cf1:name:v2:name22,進(jìn)行一系列判定,再next,再重新組織最小堆…

責(zé)任編輯:武曉燕 來(lái)源: 網(wǎng)絡(luò)大數(shù)據(jù)
相關(guān)推薦

2023-11-16 09:01:37

Hadoop數(shù)據(jù)庫(kù)

2018-07-06 11:18:46

HBaseHFile數(shù)據(jù)庫(kù)

2019-04-28 11:06:01

Hbase架構(gòu)程序員

2010-07-06 10:07:10

jQueryJSON

2010-06-21 13:14:09

AMF協(xié)議

2018-11-28 15:15:52

大數(shù)據(jù)AI安防

2018-05-03 10:00:23

HBase運(yùn)維數(shù)據(jù)

2015-05-13 15:15:16

HadoopHBaseMapReduce

2011-08-19 13:45:14

iPhone應(yīng)用iPhone OS數(shù)據(jù)

2010-06-28 16:12:43

ARP協(xié)議

2017-07-17 13:59:02

大數(shù)據(jù)HBase原理sequenceid

2023-02-28 09:07:18

ChatGPTAI

2010-08-04 13:23:29

Flex事件

2024-03-28 18:17:49

PMSAndroid

2022-08-08 19:35:37

HDF驅(qū)動(dòng)開(kāi)發(fā)鴻蒙

2010-08-09 11:14:36

Flex事件處理

2018-06-13 08:53:39

HadoopHBase存儲(chǔ)

2023-06-08 07:25:56

數(shù)據(jù)庫(kù)索引數(shù)據(jù)結(jié)構(gòu)

2025-02-26 07:59:47

2021-09-13 09:40:35

Webpack 前端HMR 原理
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

自拍视频在线| 又色又爽又黄无遮挡的免费视频| 1313精品午夜理伦电影| 同产精品九九九| 欧洲精品一区色| 国产精品久久久午夜夜伦鲁鲁| 精品成人久久| 中文字幕精品一区久久久久 | 久久福利资源站| 欧美精品xxx| 国产午夜精品久久久久久久久| 久久丁香四色| 91国偷自产一区二区三区成为亚洲经典| 亚洲ai欧洲av| 五月激情丁香婷婷| 久久99精品国产麻豆婷婷| 国外成人在线视频| 国产欧美小视频| 开心激情综合| 666欧美在线视频| 999精品网站| 欧美亚洲天堂| 中文字幕在线观看一区| 久久久水蜜桃| 亚洲国产精品久久人人爱潘金莲 | 成人精品中文字幕| 亚洲电影第1页| 久久久久久久高清| 亚洲精品福利电影| 亚洲午夜日本在线观看| 一区二区在线观看网站| 日韩av免费观影| 国产美女一区二区三区| 国产精品国产自产拍高清av水多 | 激情欧美国产欧美| 超碰97人人做人人爱少妇| av在线网站观看| 高潮久久久久久久久久久久久久| 欧美日韩国产一区二区三区地区| 女性隐私黄www网站视频| 嗯~啊~轻一点视频日本在线观看| 亚洲女人****多毛耸耸8| 五月婷婷一区| 国产小视频免费在线网址| 99精品一区二区三区| 成人资源av| av中文字幕观看| 精品无人区卡一卡二卡三乱码免费卡| 国产精品91在线观看| 中文字幕国产在线观看| 国产亚洲毛片在线| 午夜伦理精品一区| 日产精品久久久久| 极品尤物久久久av免费看| 欧美激情图片区| 黄色一级片在线免费观看| 最新国产精品久久久| 裸体女人亚洲精品一区| 国产suv精品一区二区68| 99热在线成人| 久久久精品2019中文字幕神马| 天天操天天摸天天舔| 欧美久久精品一级c片| 亚洲天堂男人天堂女人天堂| 国产成人无码精品久久二区三| 中文有码一区| 在线观看国产精品淫| 亚洲激情图片网| 91精品国产91久久久久久密臀| 久久九九亚洲综合| 欧美日韩在线视频免费播放| 欧美欧美全黄| 欧美亚洲另类视频| 欧美亚洲另类小说| 捆绑调教一区二区三区| 成人免费黄色网| www.97av.com| www.日韩av| 日本精品一区二区三区视频| 午夜免费福利在线观看| 亚洲欧美另类图片小说| 久青草视频在线播放| 伊人久久综合一区二区| 欧美日韩精品一区二区三区蜜桃| 欧美精品 - 色网| 综合激情网...| 亚洲伦理中文字幕| 欧美88888| 亚洲天堂男人| 国产91色在线免费| 国产又粗又猛又爽| 成+人+亚洲+综合天堂| 色一情一区二区三区四区| 伦xxxx在线| 精品国产老师黑色丝袜高跟鞋| 日韩视频免费在线播放| 国产精品一区二区精品| 日韩电影中文字幕一区| 久久久久人妻一区精品色| 黄色av成人| 日韩免费在线看| av中文字幕免费在线观看| 26uuu精品一区二区在线观看| 亚洲欧美综合一区| 9999精品成人免费毛片在线看| 色吊一区二区三区| 香蕉久久久久久av成人| 国产精品美女久久久久久不卡| 欧美成人在线影院| 国产精品久久久久久人| 国产91精品精华液一区二区三区 | 国产中文在线| 一区二区高清在线| 狠狠躁狠狠躁视频专区| 国产一区二区在线视频你懂的| 日韩在线中文字| 波多野结衣视频网站| 国产一区二区三区在线观看精品 | 国产女人18毛片水18精品| 国精产品乱码一区一区三区四区| 欧美国产在线观看| 国产精品久久中文字幕| 欧美高清hd| 日韩中文字幕免费视频| 国产 日韩 欧美 在线| 国产一区美女在线| 伊人久久青草| 欧美影视资讯| 亚洲美女av网站| 久久久久久久黄色片| 国产丶欧美丶日本不卡视频| 亚洲午夜精品福利| 欧洲av一区二区| 亚洲精品资源在线| 在线观看中文字幕视频| 岛国一区二区三区| 青青草视频在线视频| 国产欧美日韩电影| 久久精品国产91精品亚洲| 在线观看毛片网站| 欧美国产亚洲另类动漫| 亚洲精品高清无码视频| 伊甸园亚洲一区| 69av成年福利视频| 手机看片国产1024| 午夜视频一区二区| 折磨小男生性器羞耻的故事| 欧美一区成人| 产国精品偷在线| 免费网站在线观看人| 精品国内片67194| 精品一区在线视频| 粉嫩av一区二区三区| 亚洲爆乳无码精品aaa片蜜桃| 天堂va在线高清一区| 久99九色视频在线观看| 精品人妻一区二区三区日产乱码| 一区二区三区高清不卡| 韩国三级hd中文字幕有哪些| 韩国在线一区| 国产日韩亚洲精品| 国模精品视频| 亚洲另类激情图| 久久精品视频2| 国产精品三级在线观看| 岛国av免费在线| 亚洲一区二区日韩| 国产精品视频免费一区| 欧美gv在线观看| 亚洲片av在线| 亚洲午夜精品久久久| 亚洲天堂网中文字| 人妻精油按摩bd高清中文字幕| 国产精品va| 久久精品日产第一区二区三区乱码| 原纱央莉成人av片| 少妇精69xxtheporn| 国产黄色片av| 欧美视频在线视频| 国产一区二区三区视频播放| 国产乱码精品一区二区三区五月婷| 国产一级不卡视频| 伊人久久大香线蕉综合网蜜芽| 国产精品一区二区久久久久| 呦呦在线视频| 亚洲免费伊人电影在线观看av| 在线视频 中文字幕| 亚洲综合色丁香婷婷六月图片| 97香蕉碰碰人妻国产欧美 | 一个人看的视频www| 99国产精品| 亚洲欧美久久久久一区二区三区| 日韩在线精品强乱中文字幕| 欧美重口另类videos人妖| 五月天婷婷在线视频| 精品成人一区二区| 精品美女久久久久| 成人免费在线观看入口| 亚洲国产精品成人综合久久久| 蜜臀国产一区二区三区在线播放| 91亚洲精品国产| 国产一区二区精品久| 99三级在线| 日韩在线短视频| 久久久久国产精品www| 成人综合影院| 亚洲第一黄色网| 国产又粗又猛又爽又黄91| 欧美日韩国产色视频| 国产这里有精品| 国产喂奶挤奶一区二区三区| 中文字幕99页| 久久99国产精品久久| 国产成人精品视频免费看| 亚洲人体av| 先锋在线资源一区二区三区| 国产精品流白浆在线观看| 国产美女精品视频免费观看| 在线能看的av网址| 欧美精品久久久久久久久久| 青青青青在线| 国产午夜精品免费一区二区三区 | 成人美女在线视频| 婷婷激情综合五月天| 亚洲欧美激情诱惑| 人妻少妇精品久久| 亚洲欧美综合久久久| 亚洲欧美日韩精品在线| 色综合综合色| 精品免费一区二区三区蜜桃| 日韩区欧美区| 成人免费黄色网| 国产欧美在线观看免费| 日本中文字幕不卡免费| www.youjizz.com在线| 欧美激情伊人电影| aaa大片在线观看| 日韩在线视频二区| av在线天堂| 在线精品高清中文字幕| 韩国三级在线观看久| 亚洲精选中文字幕| 香港三日本三级少妇66| 亚洲国产天堂网精品网站| 亚洲精品网站在线| 欧美videos大乳护士334| 超碰在线观看99| 欧美成人三级电影在线| 午夜精品久久久久久久第一页按摩 | 成人av网站在线| 国内自拍偷拍视频| 成人福利电影精品一区二区在线观看| 美女日批在线观看| 国产成人av电影免费在线观看| 香蕉视频在线观看黄| 国产一区二区免费看| 中文字幕55页| 国产成人h网站| 精品人妻一区二区免费| 成人国产视频在线观看| 大黑人交xxx极品hd| 久久久久一区二区三区四区| 中文字幕在线观看免费高清| 中文一区二区在线观看| 久久久久久久久久97| 一道本一区二区三区| 国产精品天天摸av网| 精品人妻互换一区二区三区| 久久精品亚洲麻豆av一区二区| 97超碰在线资源| 欧美激情一区二区三区蜜桃视频| 成人小视频免费看| 亚洲啪啪综合av一区二区三区| 久久久久久久久久久久久女过产乱| 一区二区欧美在线观看| 国产成人免费观看视频 | 欧美精品卡一卡二| 免费亚洲网站| 国产精品视频中文字幕| 国产aⅴ综合色| 久久久亚洲av波多野结衣| 国产精品午夜免费| 欧美国产精品一二三| 欧美日韩亚洲一区二| 亚洲天堂777| 欧美不卡一区二区三区四区| 日韩a在线观看| 不卡av在线播放| 欧美亚洲日本精品| 国产中文字幕亚洲| 国产精品国产| 亚洲精品成人久久久998| 国产精品va| av在线无限看| 成人免费电影视频| 国产一区在线观看免费| 亚洲成人动漫一区| 在线观看亚洲国产| 亚洲精品国产精品国产自| 香蕉视频在线看| 992tv成人免费影院| 国产95亚洲| 欧美一区国产一区| 欧美日本久久| 国产一区二区在线免费播放| 成人在线视频一区二区| 一级黄色毛毛片| 五月婷婷综合在线| 国产乱人乱偷精品视频a人人澡| 日韩激情av在线播放| 国产福利视频在线观看| 日韩av电影院| 一区三区自拍| 国产精品av免费| 日韩成人精品在线| 97人妻精品一区二区三区免| 亚洲蜜臀av乱码久久精品蜜桃| 精品久久久久久久久久久国产字幕| 日韩欧美www| 网友自拍视频在线| 国产精品成av人在线视午夜片| 成人在线超碰| 欧美精品久久96人妻无码| 三级不卡在线观看| 黄色性生活一级片| 亚洲国产精品久久一线不卡| 国产视频在线免费观看| 自拍亚洲一区欧美另类| 欧美日韩电影免费看| 国产欧美日韩综合一区在线观看 | 久久久久高清精品| 日韩不卡视频在线| 欧美精品一区二区三区四区 | 美女毛片一区二区三区四区| 日韩一级片免费视频| 国产精品资源在线| 国产suv精品一区二区68| 欧美精品日韩精品| 免费黄色在线观看| 国产欧美一区二区三区在线看| 狠狠综合久久av一区二区蜜桃 | 欧美人xxxxx| 欧美综合国产| 日本激情小视频| 91福利区一区二区三区| 久久久久久青草| 日本视频久久久| 欧美理论视频| 中文字幕有码av| 国产精品久久久久久久裸模| 免费黄色一级大片| 尤物精品国产第一福利三区| 91在线成人| 一区二区三区av在线| 久久se精品一区二区| 91嫩草丨国产丨精品| 欧美成人女星排行榜| 9999精品成人免费毛片在线看| 国产专区一区二区| 亚洲男人影院| 国产毛片久久久久久久| 欧洲一区二区三区在线| 色大18成网站www在线观看| 91在线观看欧美日韩| 欧美三级黄美女| av无码av天天av天天爽| 色爱区综合激月婷婷| 老司机午夜在线| 国产 高清 精品 在线 a| 99热免费精品在线观看| 国产在线观看h| 91麻豆精品国产91久久久使用方法| 在线xxxx| 欧美另类一区| 久久精品国产精品亚洲综合| 日本妇女毛茸茸| 日韩精品在线视频美女| 精品123区| 六月婷婷激情网| 99免费精品在线观看| 伊人成年综合网| 久久综合电影一区| 乱亲女h秽乱长久久久| 国产天堂在线播放| 亚洲乱码国产乱码精品精的特点 | 国产91丝袜在线播放0| 六月丁香婷婷综合| 日韩视频第一页| 大桥未久女教师av一区二区| 国产精品99久久免费黑人人妻| 中文字幕在线免费不卡| 五月婷婷在线观看视频| 国产精品爽爽爽| 亚洲国产影院| 手机看片国产日韩| 欧美xxxxxxxx| 国产成人a视频高清在线观看| 国产精品自拍合集| 日本一区二区三区久久久久久久久不 | 伊人久久大香线蕉av超碰演员|