日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hbase源码系列(九)StoreFile存储格式

發布時間:2025/1/21 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hbase源码系列(九)StoreFile存储格式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

從這一章開始要講Region Server這塊的了,但是在講Region Server這塊之前得講一下StoreFile,否則后面的不好講下去,這塊是基礎,Region Sever上面的操作,大部分都是基于它來進行的。

HFile概述

HFile是HBase中實際存數據的文件,為HBase提供高效快速的數據訪問。它是基于Hadoop的TFile,模仿Google Bigtable 架構中的SSTable格式。文件格式如下:

文件是變長的,唯一固定的塊是File Info和Trailer,如圖所示,Trailer有指向其它塊的指針,這些指針也寫在了文件里,Index塊記錄了data和meta塊的偏移量,meta塊是可選的。

下面我們從原來上來一個一個的看它們到底是啥樣的,先從入口看起,那就是StoreFile.Writer的append方法,先看怎么寫入的,然后它就怎么讀了,不知道怎么使用這個類的,可以看看我寫的這篇文章《非mapreduce生成Hfile,然后導入hbase當中》。

往HFile追加KeyValue?

不扯這些了,看一下StoreFile里面的append方法。

public void append(final KeyValue kv) throws IOException {//如果是新的rowkey的value,就追加到Bloomfilter里面去 appendGeneralBloomfilter(kv);//如果是DeleteFamily、DeleteFamilyVersion類型的kv appendDeleteFamilyBloomFilter(kv);writer.append(kv);//記錄最新的put的時間戳,更新時間戳范圍 trackTimestamps(kv);}

在用writer進行append之前先把kv寫到generalBloomFilterWriter里面,但是我們發現generalBloomFilterWriter是HFile.Writer里面的InlineBlockWriter。

generalBloomFilterWriter = BloomFilterFactory.createGeneralBloomAtWrite(conf, cacheConf, bloomType,(int) Math.min(maxKeys, Integer.MAX_VALUE), writer); //在createGeneralBloomAtWriter方法發現了以下代碼 ...... CompoundBloomFilterWriter bloomWriter = new CompoundBloomFilterWriter(getBloomBlockSize(conf),err, Hash.getHashType(conf), maxFold, cacheConf.shouldCacheBloomsOnWrite(),bloomType == BloomType.ROWCOL ? KeyValue.COMPARATOR : KeyValue.RAW_COMPARATOR);writer.addInlineBlockWriter(bloomWriter);

我們接下來看HFileWriterV2的append方法吧。

public void append(final KeyValue kv) throws IOException {append(kv.getMvccVersion(), kv.getBuffer(), kv.getKeyOffset(), kv.getKeyLength(),kv.getBuffer(), kv.getValueOffset(), kv.getValueLength());this.maxMemstoreTS = Math.max(this.maxMemstoreTS, kv.getMvccVersion()); }

為什么貼這段代碼,注意這個參數maxMemstoreTS,它取kv的mvcc來比較,mvcc是用來實現MemStore的原子性操作的,在MemStore flush的時候同一批次的mvcc都是一樣的,失敗的時候,把mvcc相同的全部干掉,這里提一下,以后應該還會說到,繼續追殺append方法。方法比較長,大家展開看看。

private void append(final long memstoreTS, final byte[] key, final int koffset, final int klength,final byte[] value, final int voffset, final int vlength)throws IOException {boolean dupKey = checkKey(key, koffset, klength);checkValue(value, voffset, vlength);if (!dupKey) {//在寫每一個新的KeyValue之間,都要檢查,到了BlockSize就重新寫一個HFileBlock checkBlockBoundary();}//如果當前的fsBlockWriter的狀態不對,就重新寫一個新塊if (!fsBlockWriter.isWriting())newBlock();// 把值寫入到ouputStream當中,怎么寫入的自己看啊 {DataOutputStream out = fsBlockWriter.getUserDataStream();out.writeInt(klength);totalKeyLength += klength;out.writeInt(vlength);totalValueLength += vlength;out.write(key, koffset, klength);out.write(value, voffset, vlength);if (this.includeMemstoreTS) {WritableUtils.writeVLong(out, memstoreTS);}}// 記錄每個塊的第一個key 和 上次寫的keyif (firstKeyInBlock == null) {firstKeyInBlock = new byte[klength];System.arraycopy(key, koffset, firstKeyInBlock, 0, klength);}lastKeyBuffer = key;lastKeyOffset = koffset;lastKeyLength = klength;entryCount++;} View Code

從上面我們可以看到來,HFile寫入的時候,是分一個塊一個塊的寫入的,每個Block塊64KB左右,這樣有利于數據的隨機訪問,不利于連續訪問,連續訪問需求大的,可以把Block塊的大小設置得大一點。好,我們繼續看checkBlockBoundary方法。

private void checkBlockBoundary() throws IOException {if (fsBlockWriter.blockSizeWritten() < blockSize)return;finishBlock();writeInlineBlocks(false);newBlock();}

簡單交代一下

1、結束一個block的時候,把block的所有數據寫入到hdfs的流當中,記錄一些信息到DataBlockIndex(塊的第一個key和上一個塊的key的中間值,塊的大小,塊的起始位置)。

2、writeInlineBlocks(false)給了一個false,是否要關閉,所以現在什么都沒干,它要等到最后才會輸出的。

3、newBlock方法就是重置輸出流,做好準備,讀寫下一個塊。

Close的時候

?close的時候就有得忙咯,從之前的圖上面來看,它在最后的時候是最忙的,因為它要寫入一大堆索引信息、附屬信息啥的。

public void close() throws IOException {boolean hasGeneralBloom = this.closeGeneralBloomFilter();boolean hasDeleteFamilyBloom = this.closeDeleteFamilyBloomFilter();writer.close(); }

在調用writer的close方法之前,close了兩個BloomFilter,把BloomFilter的類型寫進FileInfo里面去,把BloomWriter添加到Writer里面。下面進入正題吧,放大招了,我折疊吧。。。

public void close() throws IOException {if (outputStream == null) {return;}// 經過編碼壓縮的,把編碼壓縮方式寫進FileInfo里面blockEncoder.saveMetadata(this);//結束塊 finishBlock();//輸出DataBlockIndex索引的非root層信息writeInlineBlocks(true);FixedFileTrailer trailer = new FixedFileTrailer(2,HFileReaderV2.MAX_MINOR_VERSION);// 如果有meta塊的存在的話if (!metaNames.isEmpty()) {for (int i = 0; i < metaNames.size(); ++i) {long offset = outputStream.getPos();// 輸出meta的內容,它是meta的名字的集合,按照名字排序DataOutputStream dos = fsBlockWriter.startWriting(BlockType.META);metaData.get(i).write(dos);fsBlockWriter.writeHeaderAndData(outputStream);totalUncompressedBytes += fsBlockWriter.getUncompressedSizeWithHeader();// 把meta塊的信息加到meta塊的索引里 metaBlockIndexWriter.addEntry(metaNames.get(i), offset,fsBlockWriter.getOnDiskSizeWithHeader());}}//下面這部分是打開文件的時候就加載的部分,是前面部分的索引//HFileBlockIndex的根層次的索引long rootIndexOffset = dataBlockIndexWriter.writeIndexBlocks(outputStream);trailer.setLoadOnOpenOffset(rootIndexOffset);//Meta塊的索引 metaBlockIndexWriter.writeSingleLevelIndex(fsBlockWriter.startWriting(BlockType.ROOT_INDEX), "meta");fsBlockWriter.writeHeaderAndData(outputStream);totalUncompressedBytes += fsBlockWriter.getUncompressedSizeWithHeader();//如果需要寫入Memstore的最大時間戳到FileInfo里面if (this.includeMemstoreTS) {appendFileInfo(MAX_MEMSTORE_TS_KEY, Bytes.toBytes(maxMemstoreTS));appendFileInfo(KEY_VALUE_VERSION, Bytes.toBytes(KEY_VALUE_VER_WITH_MEMSTORE));}//把FileInfo的起始位置寫入trailer,然后輸出 writeFileInfo(trailer, fsBlockWriter.startWriting(BlockType.FILE_INFO));fsBlockWriter.writeHeaderAndData(outputStream);totalUncompressedBytes += fsBlockWriter.getUncompressedSizeWithHeader();// 輸出GENERAL_BLOOM_META、DELETE_FAMILY_BLOOM_META類型的BloomFilter的信息for (BlockWritable w : additionalLoadOnOpenData){fsBlockWriter.writeBlock(w, outputStream);totalUncompressedBytes += fsBlockWriter.getUncompressedSizeWithHeader();}//HFileBlockIndex的二級實體的層次 trailer.setNumDataIndexLevels(dataBlockIndexWriter.getNumLevels());//壓縮前的HFileBlockIndex的大小 trailer.setUncompressedDataIndexSize(dataBlockIndexWriter.getTotalUncompressedSize());//第一個HFileBlock的起始位置 trailer.setFirstDataBlockOffset(firstDataBlockOffset);//最后一個HFileBlock的起始位置 trailer.setLastDataBlockOffset(lastDataBlockOffset);//比較器的類型 trailer.setComparatorClass(comparator.getClass());//HFileBlockIndex的根實體的數量,應該是和HFileBlock的數量是一樣的//它每次都把HFileBlock的第一個key加進去 trailer.setDataIndexCount(dataBlockIndexWriter.getNumRootEntries());//把Trailer的信息寫入硬盤,關閉輸出流 finishClose(trailer);fsBlockWriter.release();} View Code

和圖片上寫的有些出入。

1、輸出HFileBlocks

2、輸出HFileBlockIndex的二級索引(我叫它二級索引,我也不知道對不對,HFileBlockIndex那塊我有點兒忘了,等我再重新調試的時候再看看吧)

3、如果有的話,輸出MetaBlock

下面的部分是打開文件的時候就加載的

4、輸出HFileBlockIndex的根索引

5、如果有的話,輸出MetaBlockIndex的根索引(它比較小,所以只有一層)

6、輸出文件信息(FileInfo)

7、輸出文件尾巴(Trailer)

?Open的時候

這部分打算講一下實例化Reader的時候,根據不同類型的文件是怎么實例化Reader的,在StoreFile里面搜索open方法。

this.reader = fileInfo.open(this.fs, this.cacheConf, dataBlockEncoder.getEncodingInCache());// 加載文件信息到map里面去,后面部分就不展開講了 metadataMap = Collections.unmodifiableMap(this.reader.loadFileInfo());

我們進入F3進入fileInfo.open這個方法里面去。

FSDataInputStreamWrapper in;FileStatus status;if (this.link != null) {// HFileLinkin = new FSDataInputStreamWrapper(fs, this.link);status = this.link.getFileStatus(fs);} else if (this.reference != null) {// HFile Reference 反向計算出來引用所指向的位置的HFile位置Path referencePath = getReferredToFile(this.getPath());in = new FSDataInputStreamWrapper(fs, referencePath);status = fs.getFileStatus(referencePath);} else {in = new FSDataInputStreamWrapper(fs, this.getPath());status = fileStatus;}long length = status.getLen();if (this.reference != null) {hdfsBlocksDistribution = computeRefFileHDFSBlockDistribution(fs, reference, status);//如果是引用的話,創建一個一半的readerreturn new HalfStoreFileReader(fs, this.getPath(), in, length, cacheConf, reference, dataBlockEncoding);} else {hdfsBlocksDistribution = FSUtils.computeHDFSBlocksDistribution(fs, status, 0, length);return new StoreFile.Reader(fs, this.getPath(), in, length, cacheConf, dataBlockEncoding);}

它一上來就判斷它是不是HFileLink是否為空了,這是啥情況?找了一下,原來在StoreFile的構造函數的時候,就開始判斷了。

this.fileStatus = fileStatus;Path p = fileStatus.getPath();if (HFileLink.isHFileLink(p)) {// HFileLink 被判斷出來它是HFilethis.reference = null;this.link = new HFileLink(conf, p);} else if (isReference(p)) {this.reference = Reference.read(fs, p);//關聯的地址也可能是一個HFileLink,snapshot的時候介紹了Path referencePath = getReferredToFile(p);if (HFileLink.isHFileLink(referencePath)) {// HFileLink Reference 如果它是一個HFileLink型的this.link = new HFileLink(conf, referencePath);} else {// 只是引用this.link = null;}} else if (isHFile(p)) {// HFilethis.reference = null;this.link = null;} else {throw new IOException("path=" + p + " doesn't look like a valid StoreFile");} View Code

它有4種情況:

1、HFileLink

2、既是HFileLink又是Reference文件

3、只是Reference文件

4、HFile

?說HFileLink吧,我們看看它的構造函數

public HFileLink(final Path rootDir, final Path archiveDir, final Path path) {Path hfilePath = getRelativeTablePath(path);this.tempPath = new Path(new Path(rootDir, HConstants.HBASE_TEMP_DIRECTORY), hfilePath);this.originPath = new Path(rootDir, hfilePath);this.archivePath = new Path(archiveDir, hfilePath);setLocations(originPath, tempPath, archivePath); }

尼瑪,它計算了三個地址,原始位置,archive中的位置,臨時目錄的位置,按照順序添加到一個locations數組里面。。接著看FSDataInputStreamWrapper吧,下面是三段代碼

this.stream = (link != null) ? link.open(hfs) : hfs.open(path); //走的link.open(hfs) new FSDataInputStream(new FileLinkInputStream(fs, this)); //注意tryOpen方法 public FileLinkInputStream(final FileSystem fs, final FileLink fileLink, int bufferSize)throws IOException {this.bufferSize = bufferSize;this.fileLink = fileLink;this.fs = fs;this.in = tryOpen(); }

tryOpen的方法,會按順序打開多個locations列表。。

for (Path path: fileLink.getLocations()) {if (path.equals(currentPath)) continue;try {in = fs.open(path, bufferSize);in.seek(pos);assert(in.getPos() == pos) : "Link unable to seek to the right position=" + pos;if (LOG.isTraceEnabled()) {if (currentPath != null) {LOG.debug("link open path=" + path);} else {LOG.trace("link switch from path=" + currentPath + " to path=" + path);}}currentPath = path;return(in);} catch (FileNotFoundException e) {// Try another file location } } View Code

恩,這回終于知道它是怎么出來的了,原來是嘗試打開了三次,直到找到正確的位置。

StoreFile的文件格式到這里就結束了,有點兒遺憾的是HFileBlockIndex沒給大家講清楚。

?

補充:經網友"東岸往事"的提醒,有一個地方寫錯了,在結束一個塊之后,會把它所有的BloomFilter全部輸出,HFileBlockIndex的話,如果滿了默認的128*1024個就輸出二級索引。

具體的的內容在后面說查詢的時候會說,下面先交代一下:

通過看繼承InlineBlockWriter的類,發現了以下信息

1、BlockIndexWriter 不是關閉的情況下,沒有超過默認值128*1024是不會輸出的,每128*1024個HFileBlock 1個二級索引。

HFileBlockIndex包括2層,如果是MetaBlock的HFileBlock是1層。

二級索引 curInlineChunk 在結束了一個塊之后添加一個索引的key(上一個塊的firstKey和這個塊的firstKey的中間值)。

byte[] indexKey = comparator.calcIndexKey(lastKeyOfPreviousBlock, firstKeyInBlock);
curInlineChunk.add(firstKey, blockOffset, blockDataSize);

一級索引 rootChunk 輸出一次二級索引之后添加每個HFileBlock的第一個key,這樣子其實二級索引里面是包括是一級索引的所有key的。

firstKey = curInlineChunk.getBlockKey(0); rootChunk.add(firstKey, offset, onDiskSize, totalNumEntries);

2、CompoundBloomFilterWriter也就是Bloom Filter,在數據不為空的時候,就會輸出。

?

對于HFileV2的正確的圖,應該是下面這個,但是上面的那個圖看起來好看一點,就保留了。

?

?

轉載于:https://www.cnblogs.com/cenyuhai/p/3722644.html

總結

以上是生活随笔為你收集整理的hbase源码系列(九)StoreFile存储格式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

啪嗒啪嗒免费观看完整版 | 九九久久久久99精品 | 伊人婷婷网 | 97超碰人人澡人人爱 | 六月丁香激情综合 | 国精产品永久999 | 成人av在线观 | 波多野结衣最新 | 日韩高清不卡一区二区三区 | 欧美一区免费观看 | 天天操天天干天天爱 | 国产自偷自拍 | 欧美成人手机版 | 中文字幕av一区二区三区四区 | 欧美巨大荫蒂茸毛毛人妖 | 亚洲aⅴ乱码精品成人区 | 免费看精品久久片 | 草久热| www视频免费在线观看 | 欧美在线资源 | 91精品蜜桃| 天天综合网入口 | 午夜av免费观看 | 久久香蕉国产 | 国产一级性生活 | 精品久久久国产 | 国产精品综合久久久久久 | 亚洲成年人免费网站 | 久久97久久| 亚洲最大免费成人网 | 久久国语| 黄网站a| 婷婷综合网 | 99热在线国产 | 国产成人精品一区二区三区在线 | 久99久在线 | 精品久久综合 | 日韩精品一区二区三区免费观看 | 久久av不卡| 亚洲精品在线网站 | 久久精品首页 | 精品一区在线 | 国产分类视频 | 国产亚洲字幕 | 国产一区二区久久久久 | 国产精国产精品 | 美女网站视频一区 | 天天射天天干天天操 | 亚洲精品免费视频 | 成人三级视频 | 99热最新 | 久草 | 欧美精品九九 | 日韩欧美视频一区二区三区 | 国产尤物一区二区三区 | 五月开心婷婷网 | 天堂av在线中文在线 | 精品国内自产拍在线观看视频 | 在线观看日韩专区 | av超碰免费在线 | 国产精品99久久久久人中文网介绍 | 日韩视频一区二区在线观看 | 最近中文国产在线视频 | 久久国产精品一二三区 | 精品国产精品国产偷麻豆 | 91久久国产综合精品女同国语 | 六月婷婷色 | 国产中文字幕网 | 午夜精品视频在线 | 久久久久久蜜桃一区二区 | 国产精品久久久久久久久久久免费 | 天天综合色天天综合 | 日本黄色一级电影 | 国产一区二区中文字幕 | 狠狠色伊人亚洲综合成人 | 国产一区二区视频在线 | 日日夜夜干 | 久草视频观看 | av免费试看 | 久久久五月天 | av在线免费观看不卡 | 久久综合五月天 | 韩日电影在线免费看 | 又黄又爽的免费高潮视频 | 中文字幕高清免费日韩视频在线 | 天天摸天天弄 | 在线视频中文字幕一区 | 久草在线视频中文 | 亚州精品天堂中文字幕 | 国产一级二级在线 | 久久超碰免费 | 国产又黄又爽又猛视频日本 | 99视频精品在线 | 天天看天天干 | 四虎影视av | 超碰在线97观看 | 国产黄a三级 | 成年人黄色在线观看 | 国产一级不卡视频 | 在线国产一区 | 99re国产视频 | 久久精品视频日本 | 亚洲黄色av一区 | 国产小视频免费在线网址 | 韩日三级在线 | 91九色精品国产 | 一区二区精品国产 | 天天激情综合网 | 亚洲成人999| 欧洲不卡av | 久久精品一区二区三区国产主播 | 麻豆视频成人 | 日韩欧美69 | 欧美专区日韩专区 | 97电影在线看视频 | 五月婷婷爱 | 字幕网在线观看 | av在线a| 久久不色 | 精品亚洲视频在线观看 | 九九影视理伦片 | 亚洲精品久久久久中文字幕二区 | 久久一区91| 日韩色在线观看 | 五月婷婷一区二区三区 | 4438全国亚洲精品在线观看视频 | 亚洲人人网 | 亚洲精品在线播放视频 | 国产亚洲高清视频 | 99久久99久久精品免费 | 国产一级a毛片视频爆浆 | 超碰人人在 | 久久第四色| 日韩av资源站 | 九色精品在线 | 欧美综合国产 | 最新av电影网址 | 丁五月婷婷 | 亚洲午夜在线视频 | 日韩av片无码一区二区不卡电影 | 久久久这里有精品 | 中文字幕亚洲欧美 | 日本黄色免费观看 | 国产高清久久久 | 国产黄色大全 | 国产99一区二区 | 久久久精品网 | 亚洲欧美激情精品一区二区 | 色狠狠综合天天综合综合 | 亚洲永久在线 | 国产在线理论片 | 不卡视频国产 | 久久激情婷婷 | 99久久夜色精品国产亚洲 | 69亚洲乱| av中文电影 | 日韩在线观看你懂得 | 久久精品高清 | 中文av在线天堂 | 精品免费久久久久久 | 免费在线一区二区三区 | 色网站中文字幕 | 精品一区 在线 | 久久久国产影视 | 色94色欧美| 日韩一区正在播放 | 9免费视频| 丁香五香天综合情 | 91精品欧美| 91精品一区国产高清在线gif | 日女人免费视频 | www.五月天婷婷 | 黄色成年网站 | 国产99re| 中文字幕在线观看完整版电影 | 久久国产精品小视频 | 国产视频不卡 | 一区二区三区韩国免费中文网站 | 麻豆av一区二区三区在线观看 | 亚洲精品综合一区二区 | 日韩欧美一区二区三区视频 | 国产免费嫩草影院 | 超碰在线日韩 | 精品国产乱码久久久久久1区二区 | 91免费黄视频| 亚洲三级国产 | 久久久久精 | 九九九热精品免费视频观看 | 欧美福利久久 | 97成人啪啪网 | 91精品啪在线观看国产 | 玖玖玖在线 | 国产日韩欧美在线影视 | 狠狠色网 | 久久精品精品电影网 | 99精品欧美一区二区蜜桃免费 | 亚洲老妇xxxxxx | 欧美日韩伦理在线 | 一本一本久久a久久 | 日韩综合在线观看 | 插插插色综合 | 天天操天天操天天操 | 四虎永久免费在线观看 | 999久久久久久久久6666 | 久久手机精品视频 | 在线观看视频黄 | 日韩精品视频第一页 | 伊人午夜视频 | 色综合天天综合网国产成人网 | 久久ww | 色a网| 色在线观看网站 | 中文在线亚洲 | 欧美射射射 | 九九久久久久久久久激情 | 久久久久成人精品 | 99久久精品免费看国产四区 | 97视频人人免费看 | 中文国产字幕在线观看 | 808电影免费观看三年 | 亚洲成人精品国产 | 国产精品九九九九九 | 激情 一区二区 | 亚洲激情视频 | 日本高清中文字幕有码在线 | 免费视频 你懂的 | 超碰999 | 九九热视频在线播放 | 在线看国产一区 | 福利一区二区在线 | 亚洲va欧美va人人爽 | 中文字幕一区在线观看视频 | 日韩三区在线观看 | 日本久久电影 | 久久久久久久久久久久亚洲 | 日本黄色a级大片 | 欧美日韩视频免费看 | 四虎永久免费在线观看 | 欧美性视频网站 | 久久久国产影视 | 欧美成人tv | 免费福利片2019潦草影视午夜 | 日日干天夜夜 | 国产三级香港三韩国三级 | 婷婷丁香花 | 亚洲精品玖玖玖av在线看 | 狠狠色狠狠色综合日日小说 | 1024手机看片国产 | 超碰97人人在线 | 超碰在线色 | 在线播放 日韩专区 | 国产精品欧美久久久久三级 | 欧美先锋影音 | jizzjizzjizz亚洲| 又黄又爽又湿又无遮挡的在线视频 | 草久在线 | 久久超碰网 | 毛片网站免费在线观看 | 成人h视频在线播放 | 国产成人精品女人久久久 | 免费在线观看成人 | 亚洲国产精品视频 | 日本三级不卡视频 | 国产一区二区免费看 | 91日本在线播放 | 一区 在线观看 | 黄色网www | 日日干视频 | 一本之道乱码区 | 在线观看免费一区 | 99久精品 | av电影中文字幕 | 手机看片1042 | 中文字幕一区二区三区四区久久 | 国产一区二区在线免费播放 | 成人小视频在线免费观看 | 亚洲艳情| 国产黄色资源 | 精品久久久99 | 最新日韩在线 | 视频在线观看国产 | 97香蕉久久国产在线观看 | 天天爽天天搞 | 欧美欧美| 成人在线免费观看视视频 | 国产精品久久久久久久久久久久午夜 | 久久精品国产亚洲精品2020 | 亚洲爱av | 国产破处精品 | 狠狠色丁香婷婷综合橹88 | 丁香午夜婷婷 | 精品久久视频 | 国产精品一二三 | 午夜精品久久久久久久99婷婷 | 综合av在线 | 日韩中文字幕免费看 | 黄免费在线观看 | 在线 国产 亚洲 欧美 | 亚洲国产wwwccc36天堂 | 国产裸体bbb视频 | 色婷婷综合久色 | 久99视频| 久香蕉| 国产精品久久一区二区无卡 | 69国产盗摄一区二区三区五区 | 91成人短视频在线观看 | 2022中文字幕在线观看 | 999久久国精品免费观看网站 | 99精品国产在热久久下载 | 九九精品久久久 | 久久国产精品99精国产 | 日韩在线观 | 韩国一区二区在线观看 | 97日日碰人人模人人澡分享吧 | 欧美精品小视频 | 久久精品www人人爽人人 | 精品久久91| 国产69精品久久久久9999apgf | 三级av在线免费观看 | 最近更新好看的中文字幕 | 婷婷视频 | 日韩专区av | 免费三级在线 | 美女国产免费 | 亚洲综合干 | 91在线视频播放 | 五月婷网 | 成人欧美亚洲 | 国产精品久久久久久婷婷天堂 | 国产精品麻| 奇米网777 | 丁香婷婷社区 | 97精品视频在线播放 | 天天摸天天舔天天操 | 欧美污污视频 | 美女福利视频网 | 色综合天天射 | 国产精品久久久久久久99 | 国模一二三区 | 久久影院一区 | 一区二区三区免费播放 | 亚洲一级黄色av | 国产精品乱码久久久久久1区2区 | 超碰在线最新网址 | 日韩精品视频免费看 | 国产精品免费在线播放 | 亚洲天堂自拍视频 | 婷婷久月 | 成在人线av| 日韩精品中字 | 亚洲一级电影在线观看 | www.夜夜操 | 国产婷婷 | 福利av在线| 国产一区在线视频播放 | 日批在线看 | 四虎影视成人精品国库在线观看 | 久草免费新视频 | 欧美日韩国产亚洲乱码字幕 | 久久国产精品一区二区三区 | 国产精品久久久久久久午夜片 | 91精品久久久久 | 6080yy精品一区二区三区 | 我要看黄色一级片 | 国内偷拍精品视频 | 成人av片免费观看app下载 | 亚洲在线 | 亚洲精品视频网 | 久久久久二区 | 免费看一级特黄a大片 | 狠狠综合久久av | 日韩精品综合在线 | 国产成人免费 | 激情网在线视频 | 91视频在线国产 | 最近日本韩国中文字幕 | 激情久久综合网 | 色香蕉在线视频 | 欧美成人一区二区 | 91精选 | 婷婷色视频 | 日日干日日操 | 久久开心激情 | 欧美一级日韩三级 | 激情视频区 | 日韩在线精品 | 人人干网站| 激情片av | av高清免费在线 | 日韩午夜一级片 | 91人人澡人人爽 | 在线成人一区二区 | 日韩高清毛片 | 黄色a一级片 | 麻花豆传媒一二三产区 | 精品久久久久久国产91 | 久久婷婷一区二区三区 | 久久久91精品国产 | 九七人人干| 91桃色免费观看 | 亚洲视频99 | 色狠狠操 | 在线播放亚洲 | 亚洲黄色免费网站 | 欧美一级乱黄 | 四虎精品成人免费网站 | 久久女同性恋中文字幕 | 久久久久国产一区二区三区 | 久久一区国产 | 免费午夜网站 | 国产麻豆精品久久一二三 | 免费看的黄色小视频 | 欧美日韩中字 | 久久公开免费视频 | 91精品日韩 | 色婷五月| 久久免费视频这里只有精品 | www.99久久.com | 黄色网在线播放 | 国产精品麻豆99久久久久久 | 免费观看国产成人 | 免费视频你懂的 | 国产日韩在线视频 | 97久久久免费福利网址 | 国产一级黄色免费看 | 夜夜干夜夜| 可以免费看av | 免费在线观看中文字幕 | 亚洲激情视频 | 91视频大全 | 久草电影在线观看 | 夜夜天天干 | 久久精品国产第一区二区三区 | 五月天九九| 青青草国产成人99久久 | 99高清视频有精品视频 | 久草网首页 | 69精品久久| 婷婷综合网| 91在线入口 | 中文字幕一区二 | 69国产盗摄一区二区三区五区 | 亚洲 综合 专区 | 黄色日视频 | www夜夜 | 国产一级片视频 | www.亚洲视频 | 国内久久久久久 | 精品毛片一区二区免费看 | 成人毛片一区 | 免费裸体视频网 | 久久精品这里都是精品 | bayu135国产精品视频 | 欧美成人h版电影 | 国产生活一级片 | 乱子伦av| 亚洲,国产成人av | 最新真实国产在线视频 | 欧美成人h版 | 日韩一区二区免费视频 | 免费在线观看日韩欧美 | 狠狠狠狠狠狠狠 | 成人黄色视 | 精品国产乱码久久 | 9999亚洲| 欧美最猛性xxxxx(亚洲精品) | 国产精品高清免费在线观看 | 97视频在线观看成人 | 欧美午夜精品久久久久久浪潮 | 人人澡人人爽欧一区 | 一区 二区电影免费在线观看 | 麻豆av电影| 日韩经典一区二区三区 | 久久久久久免费 | 啪啪免费试看 | 黄色电影在线免费观看 | 精品视频网站 | 8x8x在线观看视频 | 中文字幕传媒 | 成人h电影在线观看 | 国产区在线 | 久久精品国产精品 | 97视频资源 | 免费网站在线观看人 | 成人午夜剧场在线观看 | 亚洲 欧美变态 另类 综合 | 99热日本 | 欧美夫妻生活视频 | 免费三级黄色片 | 99综合久久| 中文字幕av全部资源www中文字幕在线观看 | 免费精品 | 天天久久夜夜 | 免费av电影网站 | 人人射人人爽 | 久久久久久久久毛片 | 日韩av片免费在线观看 | 日韩欧美精品一区二区三区经典 | www.夜夜爽| 视频福利在线 | 久久免费观看少妇a级毛片 久久久久成人免费 | 一级片视频免费观看 | 极品久久久 | 久久av中文字幕片 | 天天摸天天操天天舔 | 欧美色久 | 日韩欧美一区二区在线播放 | 成人香蕉视频 | 免费h漫在线观看 | 92精品国产成人观看免费 | 国内精品久久久久影院一蜜桃 | 日本丰满少妇免费一区 | 免费观看国产成人 | 黄色av影院| 亚洲国产成人精品在线 | 日韩一级精品 | 日韩欧美一区二区在线播放 | 一区二区三区四区五区在线 | 久久中文精品视频 | 久久精品视频免费观看 | 日韩视频在线一区 | 日本公乱妇视频 | 狠狠操.com | 欧美精品一区在线发布 | 色婷婷97| 日韩精品专区在线影院重磅 | 久久午夜电影网 | 天天操夜夜看 | 亚洲国产mv | 婷婷色九月 | 国产又粗又猛又色又黄网站 | 九九视频在线观看视频6 | 国产日本在线观看 | 91av在线免费观看 | 久久精品人人做人人综合老师 | 波多野结衣理论片 | 免费看的黄网站 | 国产不卡片 | 久久国产精品色婷婷 | 久久视频国产精品免费视频在线 | 中文字幕最新精品 | 一级黄色免费网站 | 日韩一级电影网站 | 国产又粗又猛又黄又爽的视频 | 亚洲国产免费av | 日韩在线国产 | 天天狠狠操 | 夜夜视频 | 午夜精品久久久久久久久久 | 97色在线观看 | 久久免费播放视频 | 国产在线一区观看 | 亚洲精品456在线播放 | 97爱爱爱 | 亚洲综合激情网 | 91在线免费公开视频 | 国产一级二级三级在线观看 | 国产白浆在线观看 | 99久久综合国产精品二区 | 最新在线你懂的 | 国产成人久久精品亚洲 | 国产一区二区在线视频观看 | 亚州精品天堂中文字幕 | 国产91aaa| 久久激情五月丁香伊人 | 一区二区精品视频 | 一色屋精品视频在线观看 | 亚洲精品午夜视频 | 久久国产精品一区二区 | 国产精品久久艹 | 国产成人久久av977小说 | 人人干干人人 | 中文久草 | 国产精品www | 99国产情侣在线播放 | 国产色综合天天综合网 | 狠狠干2018| 啪啪免费视频网站 | 蜜桃av综合网 | 欧美日韩国产精品一区 | 中文字幕黄色av | 免费视频区 | 久久99久久99免费视频 | 国产精品mm| 久久99热精品| 一二三区高清 | 99精品乱码国产在线观看 | 久久久久黄色 | 久av在线 | 国内精品久久久久久久97牛牛 | av成年人电影 | 中文字幕在线观看第二页 | 久久免费视频在线 | 国产日韩精品一区二区三区 | 丁香婷婷激情五月 | 六月天综合网 | 午夜精品一区二区三区可下载 | 91亚色在线观看 | 人人草在线观看 | 日韩中文字幕在线 | 婷婷激情久久 | 久久久久亚洲国产 | 激情视频一区二区三区 | 亚洲视频aaa | a黄在线观看 | 国产香蕉97碰碰碰视频在线观看 | 久久视频这里只有精品 | 黄色大片免费网站 | 中文字幕在线高清 | 91九色自拍 | 91网在线观看 | 国产成人av综合色 | 网站免费黄色 | 国产视频观看 | 日韩中文字幕第一页 | 精品视频国产一区 | 成人免费视频视频在线观看 免费 | av免费观看网站 | 中文字幕免费高清在线观看 | 天天操天操| 黄网站免费大全入口 | 国产老熟 | 免费日韩一区二区三区 | 天天爱天天插 | 玖玖视频免费在线 | 国产成人av一区二区三区在线观看 | 夜夜干天天操 | 亚洲国产精品99久久久久久久久 | 亚洲每日更新 | 亚洲黄色网络 | 国产精品久久久视频 | 午夜美女网站 | 国产一区二区高清不卡 | 久久精品欧美一 | 亚洲激情一区二区三区 | 久久露脸国产精品 | 国产一区在线视频播放 | 中文成人字幕 | 欧美日韩另类在线观看 | 国产精品久久久久久久久久久久冷 | 国产午夜精品视频 | 一二区精品 | 久久久精品欧美一区二区免费 | 91精品中文字幕 | 免费在线观看黄网站 | 在线91精品 | 久草视频观看 | 免费亚洲视频在线观看 | 99热这里有 | 狠狠色丁香久久婷婷综合五月 | 2023av在线| 国产资源免费 | 欧美肥妇free | 婷婷爱五月天 | 欧美日韩久久一区 | 国产午夜精品一区二区三区在线观看 | 人人爽人人爽人人爽学生一级 | 午夜少妇av | 97在线免费观看 | 日韩三级视频在线观看 | 国产成人精品电影久久久 | 中文字幕黄色网址 | 超碰97公开| 在线观看福利网站 | 国产精品69av| 中文在线字幕免费观 | av电影一区二区三区 | 久久中文精品视频 | 日本高清免费中文字幕 | 亚洲精品乱码久久 | 五月天综合网站 | 99视频精品 | 最近免费中文字幕 | 日韩网页 | 久久久久久久久久久福利 | av网站手机在线观看 | 国产精品美女久久久久久网站 | 日韩高清免费在线观看 | 很黄很污的视频网站 | 韩国在线一区二区 | 波多野结衣网址 | 亚洲在线视频观看 | 亚洲电影免费 | 欧美成人在线免费 | 成年人在线播放视频 | 国产精品视频在线观看 | 亚洲人成人在线 | 国产丝袜制服在线 | 欧美地下肉体性派对 | 毛片在线网 | 国产精品久久在线观看 | 日本中文字幕视频 | 久久久免费av | 国产美女视频黄a视频免费 久久综合九色欧美综合狠狠 | 亚洲国产人午在线一二区 | 国产精品久久久久久久电影 | 91豆麻精品91久久久久久 | av中文字幕网址 | 成人网中文字幕 | 亚洲日本中文字幕在线观看 | 国产高清成人 | 91秒拍国产福利一区 | 亚洲国产精品激情在线观看 | 国产精品亚 | 国产中文字幕视频在线观看 | 国内丰满少妇猛烈精品播 | 天天摸天天舔 | 99爱精品在线 | 日韩高清一二区 | 99爱爱| 伊人视频 | 91夫妻自拍 | 国产精品观看在线亚洲人成网 | 日韩经典一区二区三区 | 亚州日韩中文字幕 | 午夜999 | 国产在线观看99 | 成人黄色小说网 | 精品视频123区在线观看 | 91成人小视频 | 亚洲精品视频在线观看免费视频 | 国产一区二区高清不卡 | 天堂av在线| 日韩一区二区免费在线观看 | 91免费高清观看 | 久99久在线 | 黄色www在线观看 | 伊人狠狠| 视频在线观看一区 | 国产精品一区二区62 | 亚洲一级片在线观看 | 久久视频在线视频 | 草在线 | 久久精品美女 | 久久久99精品免费观看乱色 | 四虎成人在线 | 麻豆国产精品视频 | 国产精品福利在线观看 | 免费a一级 | 国产精品亚洲片夜色在线 | 色吧av色av | 午夜在线免费观看 | 免费观看一级成人毛片 | 黄色大片日本 | 中文字幕免费成人 | 欧美极度另类性三渗透 | 西西人体4444www高清视频 | 欧美日韩国产色综合一二三四 | 97精品国产97久久久久久久久久久久 | 日本精品一区二区三区在线播放视频 | 国产剧情在线一区 | 成人高清av在线 | 久久久久久久电影 | 天堂激情网 | 久久丁香 | 日韩精选在线观看 | 天堂在线视频免费观看 | 久草免费资源 | 日韩在线不卡 | 五月激情片 | 久久艹综合 | av亚洲产国偷v产偷v自拍小说 | 精品国产视频在线观看 | 亚洲国产精品电影 | 天天操天天添 | 五月综合激情婷婷 | 黄色的网站免费看 | 国产日韩精品一区二区在线观看播放 | 亚洲精品乱码久久久久久写真 | 丁香五婷| 久久久久久免费视频 | 96视频在线 | 亚洲视频999 | 亚洲国产精品成人精品 | 天天操天天操天天操天天操天天操天天操 | 在线视频观看亚洲 | 99视频在线观看视频 | 国产精品视频最多的网站 | 狠狠躁18三区二区一区ai明星 | 国产剧情一区二区在线观看 | 亚洲免费小视频 | 久久精品8 | 国产免费嫩草影院 | 在线黄色免费 | 亚洲精品观看 | 天天干天天操天天入 | 久久99国产精品免费网站 | 色婷婷丁香| 99视屏 | 97福利在线观看 | 天天操天天干天天 | 日本 在线 视频 中文 有码 | av在线网站免费观看 | 99久久久国产精品美女 | 天天碰天天操 | 亚洲国产成人久久 | 91精品秘密在线观看 | 色婷婷综合激情 | 国产精品一区二区果冻传媒 | 91精品国产一区二区在线观看 | 国产一区av在线 | 六月丁香婷婷网 | 69精品人人人人 | 久久久人人爽 | 91新人在线观看 | 亚洲一级特黄 | 日本三级大片 | 99视频在线观看一区三区 | 一级特黄av | 日韩精品无码一区二区三区 | 日韩高清在线看 | 国产原创在线 | 亚洲精品久 | 伊人色**天天综合婷婷 | 国产精品成人久久久久 | 香蕉视频国产在线观看 | 国产精品嫩草影视久久久 | 99草在线视频| 992tv成人免费看片 | 国产精品 亚洲精品 | 五月天婷婷在线观看视频 | 丁香六月网 | 香蕉久草 | 久久成人国产精品 | 亚州精品在线视频 | 午夜精品一区二区三区可下载 | 久黄色 | 久久天天躁夜夜躁狠狠躁2022 | 国产中文字幕网 | 在线观看完整版免费 | 亚洲精品视频在线 | 亚洲乱码久久久 | 午夜成人免费电影 | 日本激情动作片免费看 | 国产专区第一页 | 激情婷婷在线 | 欧美精品被 | 91在线蜜桃臀| 女人魂免费观看 | 99热.com| 欧美巨乳波霸 | 日韩高清网站 | 久久成人综合 | 免费一级日韩欧美性大片 | 349k.cc看片app| 国产伦精品一区二区三区在线 | 超碰97人人射妻 | 最近日本韩国中文字幕 | 欧美亚洲国产精品久久高清浪潮 | 丝袜网站在线观看 | 国产vs久久 | 免费在线观看a v | 91av99| 欧美国产日韩在线视频 | av国产在线观看 | 日韩精品中文字幕在线观看 | 91av九色| 99成人在线视频 | 99久久精品无免国产免费 | 国产精品乱码久久久久 | 激情婷婷欧美 | 白丝av在线 | 91精品国产高清 | 网站免费黄| 18久久久 | 久草视频免费看 | 中文字幕a∨在线乱码免费看 | av免费在线网站 | 激情五月在线 | 美女网站在线 | 久久久久久毛片精品免费不卡 | 国产91av视频在线观看 | 久久精品99国产精品亚洲最刺激 | 亚洲精品视频网站在线观看 | 91大神电影 | 精品国模一区二区 | 99精彩视频在线观看免费 | 激情av网址 | 久久不射网站 | 99久久999久久久精玫瑰 | 欧美日韩国产高清视频 | av黄色大片| 亚洲成人家庭影院 | 午夜色影院 | a天堂中文在线 | 免费在线成人av电影 | 免费韩国av | 亚洲色图激情文学 | 久久国产精品视频 | av电影免费在线看 | www.亚洲视频.com | 日本中文字幕免费观看 | 久久五月天色综合 | 91视频大全 | 91视频观看免费 | 欧美日韩一区二区在线观看 | 狠狠色丁香久久婷婷综合五月 | 西西www4444大胆视频 | 在线观看亚洲精品 | www.午夜| 国产精品久久久久毛片大屁完整版 | 久久国产品 | 国产污视频在线观看 | 国产老太婆免费交性大片 | 日韩欧美网址 | 亚洲一级黄色 | 青草视频在线看 | 日韩欧美一区二区三区在线观看 | 亚洲影音先锋 | 亚洲国产精彩中文乱码av | 久草成人在线 | 人人射av | 久久久久久久久久久久影院 | 久久久穴 | 天天操网站 | 日本中文一级片 | 在线观看中文字幕一区二区 | 狠狠五月婷婷 | 国产91aaa| 在线观看视频一区二区三区 | 色a在线观看 | 日韩大片免费观看 | 中文字幕久久网 | 亚州av成人 | 激情深爱.com | 国产婷婷精品 | 欧美日韩午夜 | 日韩亚洲在线 | 色噜噜在线观看视频 | 成人在线小视频 | 五月婷婷开心 | 免费成人看片 | 欧美日韩网址 | 亚洲少妇久久 | 久操视频在线播放 | 日韩成人精品一区二区三区 | 天天爱av导航 | 免费a v在线 | 久久精品99久久 | 国产一区二区三区视频在线 | 亚州五月| 99成人在线视频 | av在线中文 | 久久系列 | 国产一区二区三区免费在线 | 在线免费观看黄色小说 | 福利一区在线视频 | 天天操网站 | 久久久首页| 91网在线 | 国产精品久久久久永久免费 | 日韩欧美在线第一页 | 亚洲一区二区三区毛片 | 91麻豆精品国产午夜天堂 | 91香蕉视频 | 日本精品xxxx| 久久91久久久久麻豆精品 | aaa毛片视频| 国产精品国产亚洲精品看不卡15 | 18做爰免费视频网站 | 麻豆影视网站 | 一区二区视频播放 | 精品国产一区二区在线 | 久久人人插 | av电影在线观看 | 337p欧美| 91九色视频网站 | 人人爽人人插 | 国产一卡久久电影永久 | 亚洲精品免费在线观看视频 | 国产精品久久久久av免费 | 区一区二区三在线观看 | 精品视频123区在线观看 | 亚洲伊人天堂 | 日本狠狠色 | 91视频 - 114av | 婷婷五天天在线视频 | 日韩精品专区 | 欧美一级片免费在线观看 | 久久久亚洲精华液 | 激情丁香综合五月 | 日韩欧美中文 | 中文字幕 在线 一 二 | 成人av电影在线观看 | 91av在线视频免费观看 | 色天天综合久久久久综合片 | 国产在线精 | 婷婷久久网站 | 国产色视频一区二区三区qq号 | 国产成人精品一区二 | 久久国产一二区 | 亚洲日韩中文字幕在线播放 | 欧美91在线 | 久久久久亚洲天堂 | 婷婷在线五月 | 久久只精品99品免费久23小说 | 欧美午夜剧场 | av免费福利|