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

一篇學會Hadoop3數據容錯技術

大數據 Hadoop
隨著大數據技術的發展,HDFS作為Hadoop的核心模塊之一得到了廣泛的應用。為了數據的可靠性,HDFS通過多副本機制來保證。在HDFS中的每一份數據都有兩個副本,1TB的原始數據需要占用3TB的磁盤空間,存儲利用率只有1/3。而且系統中大部分是使用頻率非常低的冷數據,卻和熱數據一樣存儲3個副本,給存儲空間和網絡帶寬帶來了很大的壓力。

[[422245]]

本文轉載自微信公眾號「大數據技術派」,作者柯少。轉載本文請聯系大數據技術派公眾號。

背景

隨著大數據技術的發展,HDFS作為Hadoop的核心模塊之一得到了廣泛的應用。為了數據的可靠性,HDFS通過多副本機制來保證。在HDFS中的每一份數據都有兩個副本,1TB的原始數據需要占用3TB的磁盤空間,存儲利用率只有1/3。而且系統中大部分是使用頻率非常低的冷數據,卻和熱數據一樣存儲3個副本,給存儲空間和網絡帶寬帶來了很大的壓力。因此,在保證可靠性的前提下如何提高存儲利用率已成為當前HDFS面對的主要問題之一。Hadoop 3.0 引入了糾刪碼技術(Erasure Coding),它可以提高50%以上的存儲利用率,并且保證數據的可靠性。糾刪碼技術(Erasure coding)簡稱EC,是一種編碼容錯技術。最早用于通信行業,數據傳輸中的數據恢復。它通過對數據進行分塊,然后計算出校驗數據,使得各個部分的數據產生關聯性。當一部分數據塊丟失時,可以通過剩余的數據塊和校驗塊計算出丟失的數據塊。

原理

Reed-Solomon(RS)碼是存儲系統較為常用的一種糾刪碼,它有兩個參數k和m,記為RS(k,m)。如下圖所示,k個數據塊組成一個向量被乘上一個生成矩陣(Generator Matrix)GT從而得到一個碼字(codeword)向量,該向量由k個數據塊和m個校驗塊構成。如果一個數據塊丟失,可以用(GT)-1乘以碼字向量來恢復出丟失的數據塊。RS(k,m)最多可容忍m個塊(包括數據塊和校驗塊)丟失。圖片比如:我們有 7、8、9 三個原始數據,通過矩陣乘法,計算出來兩個校驗數據 50、122。這時原始數據加上校驗數據,一共五個數據:7、8、9、50、122,可以任意丟兩個,然后通過算法進行恢復。

比如:我們有 7、8、9 三個原始數據,通過矩陣乘法,計算出來兩個校驗數據 50、122。這時原始數據加上校驗數據,一共五個數據:7、8、9、50、122,可以任意丟兩個,然后通過算法進行恢復。

  1. 7 x 
  2. 50 y 
  3. x + 2*8 + 3 * 9 = y 
  4. 4x + 5*8 + 6 * 9 = 122 

HDFS EC 方案

傳統模式下HDFS中文件的基本構成單位是block,而EC模式下文件的基本構成單位是block group。以RS(3,2)為例,每個block group包含3個數據塊,2個校驗塊。

連續布局(Contiguous Layout)

文件數據被依次寫入塊中,一個塊寫滿之后再寫入下一個塊,這種分布方式稱為連續布局。優點:

  • 容易實現
  • 方便和多副本存儲策略進行轉換

缺點:

  • 需要客戶端緩存足夠的數據塊
  • 不適合存儲小文件

條形布局(Striping Layout)

條(stripe)是由若干個相同大小的單元(cell)構成的序列。文件數據被依次寫入條的各個單元中,當一個條寫滿之后再寫入下一個條,一個條的不同單元位于不同的數據塊中。這種分布方式稱為條形布局。優點:

  • 客戶端緩存數據較少
  • 無論文件大小都適用

缺點:

  • 會影響一些位置敏感任務的性能,因為原先在一個節點上的塊被分散到了多個不同的節點上
  • 和多副本存儲策略轉換比較麻煩

HDFS EC 開發計劃

整個HDFS EC項目主要分為兩個階段:1、用戶可以讀和寫一個條形布局(Striping Layout)的文件;如果該文件的一個塊丟失,后臺能夠檢查出并恢復;如果在讀的過程中發現數據丟失,能夠立即解碼出丟失的數據從而不影響讀操作。2、支持將一個多副本模式(HDFS原有模式)的文件轉換成連續布局(Contiguous Layout),以及從連續布局轉換成多副本模式。第一階段 HDFS-7285 已經實現,第二階段 HDFS-8030 正在進行中。

糾刪碼策略

RS-10-4-1024k:使用RS編碼,每10個數據單元(cell),生成4個校驗單元,共14個單元,也就是說:這14個單元中,只要有任意的10個單元存在(不管是數據單元還是校驗單元,只要總數=10),就可以得到原始數據。每個單元的大小是1024k=10241024=1048576。RS-3-2-1024k:使用RS編碼,每3個數據單元,生成2個校驗單元,共5個單元,也就是說:這5個單元中,只要有任意的3個單元存在(不管是數據單元還是校驗單元,只要總數=3),就可以得到原始數據。每個單元的大小是1024k=10241024=1048576。RS-6-3-1024k:使用RS編碼,每6個數據單元,生成3個校驗單元,共9個單元,也就是說:這9個單元中,只要有任意的6個單元存在(不管是數據單元還是校驗單元,只要總數=6),就可以得到原始數據。每個單元的大小是1024k=10241024=1048576。RS-LEGACY-6-3-1024k:策略和上面的RS-6-3-1024k一樣,只是編碼的算法用的是rs-legacy,應該是之前遺留的rs算法。XOR-2-1-1024k:使用XOR編碼(速度比RS編碼快),每2個數據單元,生成1個校驗單元,共3個單元,也就是說:這3個單元中,只要有任意的2個單元存在(不管是數據單元還是校驗單元,只要總數=2),就可以得到原始數據。每個單元的大小是1024k=10241024=1048576。

以RS-6-3-1024k為例,6個數據單元+3個校驗單元,可以容忍任意的3個單元丟失,冗余的數據是50%。而采用副本方式,3個副本,冗余200%,卻還不能容忍任意的3個單元丟失。因此,RS編碼在相同冗余度的情況下,會大大提升數據的可用性,而在相同可用性的情況下,會大大節省冗余空間。

糾刪碼基本操作

1.查看當前支持的糾刪碼策略,命令如下:

  1. [user@nn1  ~]$ hdfs ec -listPolicies  
  2. Erasure Coding Policies: 
  3. ErasureCodingPolicy=[Name=RS-10-4-1024k, Schema=[ECSchema=[Codec=rs, numDataUnits=10, numParityUnits=4]], CellSize=1048576, Id=5, State=DISABLED] 
  4. ErasureCodingPolicy=[Name=RS-3-2-1024k, Schema=[ECSchema=[Codec=rs, numDataUnits=3, numParityUnits=2]], CellSize=1048576, Id=2, State=DISABLED] 
  5. ErasureCodingPolicy=[Name=RS-6-3-1024k, Schema=[ECSchema=[Codec=rs, numDataUnits=6, numParityUnits=3]], CellSize=1048576, Id=1, State=DISABLED] 
  6. ErasureCodingPolicy=[Name=RS-LEGACY-6-3-1024k, Schema=[ECSchema=[Codec=rs-legacy, numDataUnits=6, numParityUnits=3]], CellSize=1048576, Id=3, State=DISABLED] 
  7. ErasureCodingPolicy=[Name=XOR-2-1-1024k, Schema=[ECSchema=[Codec=xor, numDataUnits=2, numParityUnits=1]], CellSize=1048576, Id=4, State=DISABLED] 

2.設置糾刪碼策略

糾刪碼策略是與具體的路徑(path)相關聯的。也就是說,如果我們要使用糾刪碼,則要給一個具體的路徑設置糾刪碼策略,后續,所有往此目錄下存儲的文件,都會執行此策略。例子如下 首先在/下創建目錄rs-6-3,然后查看其是否設置了糾刪碼策略,結果顯示沒有指定策略(新建的目錄不會指定策略)。

  1. hdfs://bigdata/dn1/path 
  2. hdfs://bigdata/dn1/path2 
  1. [user@nn1  ~]$ hdfs dfs -mkdir /rs-6-3  
  2. [user@nn1  ~]$ hdfs ec -getPolicy -path /rs-6-3  
  3. The erasure coding policy of /rs-6-3 is unspecified 

接下來,給此目錄設置糾刪碼策略RS-6-3-1024k,此策略名是從前面list策略中查到的。可以看到已經設置成功。

  1. [user[@nn1 ](/nn1 ) ~]$ hdfs ec -setPolicy -path /rs-6-3 -policy RS-6-3-1024k  
  2. Set erasure coding policy RS-6-3-1024k on /rs-6-3 

注意:RS-6-3-1024k可以直接設置成功,其它的策略需要enable后,才能設置:設置RS-3-2-1024k,這個需要先enablePolicy

  1. [user[@nn1 ](/nn1 ) hadoop-3.0.0-beta1]$ hdfs ec -enablePolicy  -policy RS-3-2-1024k  
  2. Erasure coding policy RS-3-2-1024k is enabled 
  3. [user[@nn1 ](/nn1 ) hadoop-3.0.0-beta1]$ hdfs ec -setPolicy -path /rs-3-2 -policy RS-3-2-1024k  
  4. Set erasure coding policy RS-3-2-1024k on /rs-3-2 

驗證:

  1. [user[@nn1 ](/nn1 ) hadoop-3.0.0-beta1]$ hdfs ec -getPolicy -path /rs-3-2  
  2. RS-3-2-1024k 

設置RS-10-4-1024k,如果不enablePolicy,會報錯

  1. [user[@nn1 ](/nn1 ) hadoop-3.0.0-beta1]$ hdfs dfs -mkdir /rs-10-4  
  2. [user[@nn1 ](/nn1 ) hadoop-3.0.0-beta1]$ hdfs ec -setPolicy -path /rs-10-4 -policy RS-10-4-1024k  

報錯了 RemoteException: Policy 'RS-10-4-1024k' does not match any enabled erasure coding policies: [RS-3-2-1024k, RS-6-3-1024k]. An erasure coding policy can be enabled by enableErasureCodingPolicy API.

3.上傳文件,查看文件編碼情況

下面我們上傳一個文件看一下,這里提示我們沒有使用ISA-L支持的編碼器(這個編碼器和CPU優化相結合,效率更高,需要重新編譯和配置,我們后續再講)

  1. [user@nn1 ~]$ hdfs dfs -cp /profile /rs-6-3/ 
  2. 2017-11-30 10:24:29,620 WARN erasurecode.ErasureCodeNative: ISA-L support is not available in your platform... using builtin-java codec where applicable 

查看profile編碼后的分布

  1. [user@nn1 ~]$ hdfs fsck /rs-6-3/profile  -files -blocks -locations 

輸出:

  1. Connecting to namenode via http://nn1:9870/fsck?ugi=user&files=1&blocks=1&locations=1&path=%2Frs-6-3%2Fprofile 
  2. FSCK started by user (auth:SIMPLE) from /192.168.182.11 for path /rs-6-3/profile at Thu Nov 30 10:57:12 EST 2017 
  3. /rs-6-3/profile 1872 bytes, erasure-coded: policy=RS-6-3-1024k, 1 block(s):  OK 
  4. 0. BP-529485104-192.168.182.11-1511810134643:blk_-9223372036854775792_1065 len=1872 Live_repl=4  [blk_-9223372036854775792:DatanodeInfoWithStorage[192.168.182.11:9866,DS-da58ee3e-adcc-4f6c-8488-c2a0b742d8b9,DISK], blk_-9223372036854775786:DatanodeInfoWithStorage[192.168.182.20:9866,DS-c36de658-0f5a-42de-8898-eab3b04c7016,DISK], blk_-9223372036854775785:DatanodeInfoWithStorage[192.168.182.14:9866,DS-a3569982-de52-42b5-8543-94578f8b452a,DISK], blk_-9223372036854775784:DatanodeInfoWithStorage[192.168.182.19:9866,DS-71be9468-c0c7-437c-8b59-ece27593b4c2,DISK]] 

查看block文件的信息,可以看到nn1上block的大小正好是1872。這是因為1872<1024k,因此無法分割,直接整體編碼。

  1. [user@nn1 ~]$ ls dfs/share/datanode/current/BP-529485104-192.168.182.11-1511810134643/current/finalized/subdir0/subdir0/blk_-9223372036854775792 -l 
  2. -rw-rw-r--. 1 user user 1872 Nov 30 10:24 dfs/share/datanode/current/BP-529485104-192.168.182.11-1511810134643/current/finalized/subdir0/subdir0/blk_-9223372036854775792 

Live_repl=4的解釋,表示此文件共有4個副本,其中1個是原始數據,3個是校驗數據,因此,這里的策略是rs_6_3,要保證冗余3個校驗單元,原始數據1872<1024k,只能構成1個數據單元,再加上3個校驗單元,就是4個副本了。1 block(s)的解釋:blocks是指數據單元在datanode的存儲而言,1872<1024k,只有1個數據單元,因此只能分配到1個datanode,對于每個datanode,其block默認大小是256MB(hdfs3.0是256MB,hdfs2.x是128MB),1872遠小于256MB,當然只有1個block了,如果單個datanode上多個數據單元之和>256MB,這時才會生成新的block。再看一個

  1. hdfs dfs -cp file:///home/user/jdk1.8.0_152/lib/ant-javafx.jar /rs-6-3/ 

此文件的大小是1224175>1024k,但是<2*1024k,也就是可以構成2個數據單元,加上3個校驗單元,推測最終編碼出來一共是5個副本。查看下

  1. [user@nn1 ~]$ hdfs fsck /rs-6-3/ant-javafx.jar  -files -blocks -locations 

果然是

  1. /rs-6-3/ant-javafx.jar 1224175 bytes, erasure-coded: policy=RS-6-3-1024k, 1 block(s):  OK 
  2. 0. BP-529485104-192.168.182.11-1511810134643:blk_-9223372036854775776_1066 len=1224175 Live_repl=5  [blk_-9223372036854775776:DatanodeInfoWithStorage[192.168.182.11:9866,DS-da58ee3e-adcc-4f6c-8488-c2a0b742d8b9,DISK], blk_-9223372036854775775:DatanodeInfoWithStorage[192.168.182.18:9866,DS-2dc5d603-ad42-4558-bfda-c9a597f88f06,DISK], blk_-9223372036854775770:DatanodeInfoWithStorage[192.168.182.14:9866,DS-a3569982-de52-42b5-8543-94578f8b452a,DISK], blk_-9223372036854775769:DatanodeInfoWithStorage[192.168.182.20:9866,DS-c36de658-0f5a-42de-8898-eab3b04c7016,DISK], blk_-9223372036854775768:DatanodeInfoWithStorage[192.168.182.13:9866,DS-118ae8da-f820-447c-9d97-dbe4f33bff39,DISK]] 

查看第一個block的大小(nn1),可以看到正好是按照1024k來切分的

  1. [user@nn1 ~]$ ls dfs/share/datanode/current/BP-529485104-192.168.182.11-1511810134643/current/finalized/subdir0/subdir0/blk_-9223372036854775776 -l 
  2. -rw-rw-r--. 1 user user 1048576 Nov 30 10:30 dfs/share/datanode/current/BP-529485104-192.168.182.11-1511810134643/current/finalized/subdir0/subdir0/blk_-9223372036854775776 

查看第二個block的大小(nn7),其大小是175599

  1. [user@dn7 ~]$ ls dfs/share/datanode/current/BP-529485104-192.168.182.11-1511810134643/current/finalized/subdir0/subdir0/blk_-9223372036854775775 -l 
  2. -rw-rw-r--. 1 user user 175599 Nov 30 11:54 dfs/share/datanode/current/BP-529485104-192.168.182.11-1511810134643/current/finalized/subdir0/subdir0/blk_-9223372036854775775 

第一個block 1048576 + 第二個block 175599 = 1224175,正好是ant-javafx.jar的大小。為什么第二個block沒有補齊1024k呢?因為補齊的話,也是填0,沒有必要。第三個block~第五個block是校驗數據。

數據恢復驗證(datanode dead的時間間隔是10m)

我們以ant-javafx.jar為例,它有5個副本,分布在:

  1. 192.168.182.11 
  2. 192.168.182.18 
  3. 192.168.182.14 
  4. 192.168.182.20 
  5. 192.168.182.13 

其中2個原始數據單元、3個校驗數據單元,意味著可以容忍任意3個數據單元的丟失。下面,我們關閉后3個節點上的datanode

  1. 192.168.182.14 
  2. 192.168.182.20 
  3. 192.168.182.13 

然后從/rs-6-3目錄中復制ant-javafx.jar到本地/tmp目錄,并和本地的ant-javafx.jar比較,正確,說明數據沒有問題。

  1. [user@nn1 ~]$ hdfs dfs -cp /rs-6-3/ant-javafx.jar file:///tmp/ 
  2. 2017-11-30 13:12:36,493 WARN erasurecode.ErasureCodeNative: ISA-L support is not available in your platform... using builtin-java codec where applicable 
  3. [user@nn1 ~]$ diff jdk1.8.0_152/lib/ant-javafx.jar /tmp/ant-javafx.jar 

再關掉一個節點,在下面的節點

  1. 192.168.182.18 

運行

  1. [user@dn7 ~]$ hdfs --daemon stop datanode 

在nn1上再次復制 報錯,因為丟失的數據單元個數>3了

  1. cp: 4 missing blocks, the stripe is: Offset=0, length=175599, fetchedChunksNum=0, missingChunksNum=4 

在dn3上啟動datanode,再次復制 發現還是報錯,說192.168.182.18上數據丟失,這是為什么呢?查看HDFS狀態,發現剛才關閉的dn3 dn9 dn2 dn7仍然是live的,這是因為datanode的狀態有一個刷新的間隔,這個間隔默認是10m(600s),只有10m沒有收到datanode的消息,namenode才認為此datanode是dead的。因此,等待10m后,可以看到HDFS的live nodes變成了7。

這個時候,再次復制,DFSClient就知道dn7是dead,就不會再選擇dn7了,轉而選擇其它的live節點,因此復制成功。

  1. [user@nn1 ~]$ hdfs dfs -cp /rs-6-3/ant-javafx.jar file:///tmp/ 
  2. 2017-11-30 13:26:35,241 WARN erasurecode.ErasureCodeNative: ISA-L support is not available in your platform... using builtin-java codec where applicable 
  3. cp: `file:///tmp/ant-javafx.jar': File exists 

將dn2、dn7、dn9恢復,啟動datanode,再次查看。

  1. [user@nn1 ~]$ hdfs fsck /rs-6-3/ant-javafx.jar  -files -blocks -locations 
  2. Connecting to namenode via http://nn1:9870/fsck?ugi=user&files=1&blocks=1&locations=1&path=%2Frs-6-3%2Fant-javafx.jar 
  3. FSCK started by user (auth:SIMPLE) from /192.168.182.11 for path /rs-6-3/ant-javafx.jar at Thu Nov 30 13:29:30 EST 2017 
  4. /rs-6-3/ant-javafx.jar 1224175 bytes, erasure-coded: policy=RS-6-3-1024k, 1 block(s):  OK 
  5. 0. BP-529485104-192.168.182.11-1511810134643:blk_-9223372036854775776_1066 len=1224175 Live_repl=5  [blk_-9223372036854775776:DatanodeInfoWithStorage[192.168.182.11:9866,DS-da58ee3e-adcc-4f6c-8488-c2a0b742d8b9,DISK], blk_-9223372036854775770:DatanodeInfoWithStorage[192.168.182.14:9866,DS-a3569982-de52-42b5-8543-94578f8b452a,DISK], blk_-9223372036854775769:DatanodeInfoWithStorage[192.168.182.19:9866,DS-71be9468-c0c7-437c-8b59-ece27593b4c2,DISK], blk_-9223372036854775768:DatanodeInfoWithStorage[192.168.182.16:9866,DS-c32fdd4e-aa34-4b65-b192-643ade06d71b,DISK], blk_-9223372036854775775:DatanodeInfoWithStorage[192.168.182.18:9866,DS-2dc5d603-ad42-4558-bfda-c9a597f88f06,DISK]] 

發現數據單元的分布發生了變化。

  1. 192.168.182.11 
  2. 192.168.182.14 
  3. 192.168.182.19 
  4. 192.168.182.16 
  5. 192.168.182.18 

 

其中綠色部分,應該是在這些節點關閉后,hdfs重新啟動譯碼和編碼,將原來丟失的數據補到了dn8和dn5上。而dn8沒有去掉,可能是還沒來得及。總之,如果編碼后的stripe中,有數據丟失,hdfs會自動啟動恢復工作。

 

責任編輯:武曉燕 來源: 大數據技術派
相關推薦

2021-11-30 19:58:51

Java問題排查

2022-01-02 08:43:46

Python

2022-02-07 11:01:23

ZooKeeper

2021-07-06 08:59:18

抽象工廠模式

2023-11-28 08:29:31

Rust內存布局

2023-01-03 08:31:54

Spring讀取器配置

2021-07-02 09:45:29

MySQL InnoDB數據

2022-08-23 08:00:59

磁盤性能網絡

2021-05-11 08:54:59

建造者模式設計

2021-07-05 22:11:38

MySQL體系架構

2022-08-26 09:29:01

Kubernetes策略Master

2022-04-12 08:30:52

回調函數代碼調試

2021-04-29 10:18:18

循環依賴數組

2021-07-16 22:43:10

Go并發Golang

2021-07-02 08:51:29

源碼參數Thread

2021-10-27 09:59:35

存儲

2023-03-13 21:38:08

TCP數據IP地址

2021-10-14 10:22:19

逃逸JVM性能

2021-09-28 08:59:30

復原IP地址

2023-11-01 09:07:01

Spring裝配源碼
點贊
收藏

51CTO技術棧公眾號

国产精品夜夜夜爽张柏芝| 国产精品久久久久久影视| 成人做爰69片免费| 国产精品高颜值在线观看| 久久精品视频一区| 欧美吻胸吃奶大尺度电影| 精品久久久国产精品999| 国内精品国语自产拍在线观看| 国产中文字幕视频| 国产精品精品| 亚洲久久久久久久久久| 色噜噜狠狠一区二区三区狼国成人| 黄页网站在线| 中国av一区二区三区| 99久久精品无码一区二区毛片| 岛国av中文字幕| 欧美成人国产| 在线播放国产一区中文字幕剧情欧美 | 国产精品极品尤物在线观看| 久久亚洲精品大全| 亚洲制服欧美另类| 欧美一级黄色录像| 男人搞女人网站| 182在线视频观看| 亚洲精品伦理在线| 一本色道久久综合亚洲精品婷婷| 五月婷婷狠狠干| 国产成人综合网站| 国产精品偷伦免费视频观看的| 91看片在线播放| 韩日欧美一区| 欧美成人精品xxx| jizz日本在线播放| 九九免费精品视频在线观看| 亚洲成色777777女色窝| 日本女人性视频| 2020国产精品小视频| 日本高清视频一区二区| 日韩av片在线看| av电影院在线看| 亚洲国产欧美日韩另类综合 | 日日夜夜天天综合| 99久久er热在这里只有精品66| 91在线视频九色| 亚洲精品一区二三区| 美女被久久久| 欧美性受xxx| av资源免费观看| 亚洲毛片一区| 97视频在线观看成人| 精品人妻在线播放| 国语对白精品一区二区| 欧美高清一级大片| 国产一级二级三级视频| 尤物在线精品| 69久久夜色精品国产7777| 91浏览器在线观看| 久久久久国产精品一区二区| 清纯唯美日韩制服另类| 久久夜色精品国产噜噜亚洲av| 国产精品毛片在线看| 欧美亚洲一级片| 中文字幕国产在线观看| 日韩精品电影在线| 国产综合在线观看视频| 国产三级漂亮女教师| 国产电影精品久久禁18| 国产一区免费在线观看| 亚洲三级中文字幕| 欧美特级特黄aaaaaa在线看| 欧美日韩调教| 久久久免费电影| 欧美激情黑白配| 免费xxxx性欧美18vr| 91香蕉国产在线观看| 亚洲精品一区二区三区蜜桃| av亚洲精华国产精华精华| 欧美精品一区二区三区四区五区| 岛国大片在线观看| 亚洲色图第一区| 精品无码国产一区二区三区av| 华人av在线| 欧美日韩精品系列| 日韩成人av影院| 欧美美乳视频| 久久精品久久精品亚洲人| 欧美成人免费观看视频| 国产欧美日本| 国产日韩欧美91| 人妻少妇精品无码专区| 欧美激情在线看| av一区二区三区免费观看| 日本免费一区二区三区四区| 制服.丝袜.亚洲.中文.综合 | 91色在线porny| 亚洲午夜精品一区二区三区| 蜜臀av在线| 欧美性大战久久久| 国产av一区二区三区传媒| 精品视频黄色| 久久人人爽国产| 亚洲资源在线播放| 不卡的av网站| 潘金莲一级淫片aaaaaa播放1| 中文字幕在线中文字幕在线中三区| 欧美日韩亚洲丝袜制服| 一区二区视频观看| 午夜亚洲福利| 国产精品中文在线| 色婷婷av一区二区三| 亚洲欧洲三级电影| 男人操女人免费| 91精品久久久久久综合五月天| 一本色道久久综合狠狠躁篇怎么玩 | 可以在线观看的av网站| 亚洲午夜三级在线| 欧美特黄aaa| 美女久久久久| 亚洲18私人小影院| 性生交生活影碟片| 中文字幕一区二区三中文字幕| 国产美女三级视频| 欧美成人专区| 国内久久久精品| 北条麻妃一二三区| 《视频一区视频二区| www日韩在线观看| 欧美一区 二区| 久久乐国产精品| 亚洲精品字幕在线观看| 亚洲人成在线播放网站岛国 | 四虎成人永久免费视频| 国产盗摄视频一区二区三区| 成年人黄色在线观看| 国产一区二区三区影视| 亚洲一级片在线看| 日韩电影在线观看一区二区| 99久久777色| 99久久国产综合精品五月天喷水| 亚洲精品影片| 久久久久久久久久久免费精品| 国产99对白在线播放| 亚洲视频一区二区免费在线观看| 亚洲 激情 在线| 日韩欧美高清在线播放| 国产精品午夜视频| 亚洲视频tv| 在线不卡免费av| 国产成人av免费在线观看| 久久国产精品无码网站| 一区二区视频在线免费| 999精品嫩草久久久久久99| 久久精品人人爽| 99久久精品日本一区二区免费| 亚洲乱码一区二区三区在线观看| 免费精品99久久国产综合精品应用| 久久高清免费| 亚洲综合国产精品| 成人性生交大片免费看在线播放| 亚洲成人999| 精品国产一区二区三区四| 久久久久久久免费视频了| 欧美黄色性生活| 99热国内精品| 99一区二区| 蜜桃视频在线观看播放| 亚洲午夜av久久乱码| 在线观看国产成人| 一区二区三区四区高清精品免费观看| 蜜桃视频无码区在线观看| 亚洲精品社区| 亚洲成色www久久网站| 99热这里有精品| 久久理论片午夜琪琪电影网| 牛牛澡牛牛爽一区二区| 欧美日韩视频不卡| 久久久精品国产sm调教| 2021中文字幕一区亚洲| 男女视频在线看| 欧美色图首页| 日韩精品最新在线观看| 国模大尺度视频一区二区| 8x拔播拔播x8国产精品| 91在线不卡| 亚洲电影在线看| 无码久久精品国产亚洲av影片| 亚洲欧美另类图片小说| 老鸭窝一区二区| 国产乱码一区二区三区| 人妻内射一区二区在线视频| 一本一道久久a久久精品蜜桃| 久久艹中文字幕| 未满十八勿进黄网站一区不卡| 亚洲第一黄色| 国产精品日韩欧美大师| av老司机免费在线| 久久精品99久久久久久久久| 亚洲人视频在线观看| 在线不卡免费av| 亚洲黄网在线观看| 亚洲一区二区3| 欧美美女性生活视频| 26uuu精品一区二区| 国产精品igao网网址不卡| 久久蜜桃资源一区二区老牛| 国产91沈先生在线播放| 国产精品99一区二区三区| 久久久人人爽| 99久久人爽人人添人人澡| 国产精品视频xxxx| av影片在线| 九九精品视频在线观看| 9191在线| 国产亚洲精品久久久优势| 日韩中文字幕免费在线观看| 制服视频三区第一页精品| 中文字幕av免费观看| 日韩欧美成人免费视频| 日本在线免费观看| 亚洲影院免费观看| 欧美成人国产精品高潮| 亚洲日本韩国一区| 日本 欧美 国产| 国产欧美一区二区三区在线看蜜臀| 手机在线看片日韩| 成人午夜精品在线| 亚洲最大视频网| 国产精品自拍在线| 91小视频在线播放| 激情综合五月婷婷| 国产精品mp4| 欧美日韩国产黄色| 国产v综合v亚洲欧| 老司机av网站| 成人在线一区二区三区| 国产无套精品一区二区三区| 国产一区二区成人久久免费影院 | 欧美性受xxxx黑人猛交88| 日本不卡免费一区| 亚洲五月六月| 99热国内精品| 免费观看国产视频在线| 亚洲成av人电影| 日本女人高潮视频| 综合久久十次| 日本黄大片在线观看| 欧美精品播放| 18禁裸男晨勃露j毛免费观看| 欧美日韩少妇| 国产3p露脸普通话对白| 一区二区91| 久草热视频在线观看| 亚洲一区日本| 不要播放器的av网站| 日韩av网站免费在线| 污视频网站观看| 精品在线播放免费| 亚洲最大视频网| 99re视频这里只有精品| 午夜精产品一区二区在线观看的| 国产清纯白嫩初高生在线观看91| 蜜桃av乱码一区二区三区| 国产精品传媒入口麻豆| 欧美高清视频一区二区三区| 亚洲高清一区二区三区| 国产原创视频在线| 精品视频在线看| 国产99对白在线播放| 日韩精品黄色网| 成在在线免费视频| 久久夜色精品国产欧美乱| av人人综合网| 国产精品日韩在线一区| 久久九九精品视频| 久久精品国产综合精品| 日韩欧美自拍| 成人精品视频在线播放| 肉色丝袜一区二区| 久久久久无码精品| 2024国产精品| 中文字幕在线有码| 一区二区三区高清| 免费看日韩毛片| 欧美福利视频导航| 色噜噜在线播放| 日韩中文字幕精品| 国产精品vvv| 91老司机在线| 免费成人结看片| 国产成人免费高清视频| 老司机精品久久| 国产精品偷伦视频免费观看了| 久久午夜色播影院免费高清| 东方av正在进入| 91久久精品一区二区二区| www.色视频| 中文字幕亚洲欧美| 免费h在线看| 亚洲www在线观看| 红桃成人av在线播放| www污在线观看| 精品一区二区三区在线视频| 青青草视频成人| 亚洲va天堂va国产va久| 国产精品视频a| 亚洲天堂日韩电影| av免费不卡国产观看| 91影视免费在线观看| 精品美女久久| 精品久久久久久久久久中文字幕| 韩国一区二区三区| 亚洲综合第一区| 色综合天天综合色综合av| 成人乱码一区二区三区| 久久久精品免费视频| 日本一区二区电影| 免费久久一级欧美特大黄| 欧美日韩视频| 青娱乐国产精品视频| 国产精品午夜在线| 中文字幕免费视频观看| 亚洲美女免费精品视频在线观看| 成人性生交大片免费看网站| 亚洲综合精品伊人久久| 亚洲天堂免费| 国产欧美一区二| 国产精品情趣视频| 黄色av一区二区| 亚洲欧美日韩直播| 久久人体大尺度| 久热国产精品视频一区二区三区| 亚洲高清不卡| 在线免费播放av| 午夜日韩在线观看| 色一情一乱一区二区三区| 欧美黑人性猛交| 97se亚洲| 欧美做暖暖视频| 国产成人精品影视| 午夜偷拍福利视频| 亚洲变态欧美另类捆绑| 黄色小说在线播放| 国产精品嫩草在线观看| 狠狠88综合久久久久综合网| 欧美一级大片免费看| 亚洲一本大道在线| 日本激情视频网站| 欧美一区三区三区高中清蜜桃| 色天下一区二区三区| 欧美黄色免费影院| 国产日韩精品一区| 在线免费av网| 久久亚洲电影天堂| 最新国产一区二区| 国产免费黄视频| 国产欧美一区二区三区网站| 中文字字幕在线中文乱码| 久久精品国产电影| 77成人影视| 中文字幕乱码人妻综合二区三区| 国产嫩草影院久久久久| 国产又粗又猛又爽又黄的| 欧美黄色性视频| 亚洲精品一级二级三级| 一区二区xxx| 亚洲精品视频免费看| 欧日韩在线视频| 国产精品av在线| 亚洲一区二区三区| 呦呦视频在线观看| 欧美午夜精品免费| 在线三级电影| 欧美18视频| 激情国产一区二区| 亚洲国产成人精品激情在线| 亚洲一区二区国产| 国产一区二区在线观| 18禁免费观看网站| 国产精品欧美综合在线| 性猛交富婆╳xxx乱大交天津| 91av在线看| 久久精品青草| av鲁丝一区鲁丝二区鲁丝三区| 在线看日本不卡| 污片在线免费观看| 日韩精品资源| 成人av在线播放网站| 亚洲精品一区二区二区| 欧美国产日韩一区| 秋霞欧美视频| 美女又爽又黄视频毛茸茸| 欧美二区乱c少妇| 中文字幕这里只有精品| 国产又粗又爽又黄的视频| 久久久一区二区三区捆绑**| 国内老熟妇对白hdxxxx| 国产精品福利在线| 中文亚洲字幕| 91porn在线视频| www.久久色.com|