精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

国产精品久久久久蜜臀| 国产精品伦一区二区| 99精品欧美一区| 国产精品视频网| 国产午夜手机精彩视频| 极品国产人妖chinesets亚洲人妖| 日韩欧美中文免费| 日日噜噜噜夜夜爽爽| 人成网站在线观看| 男人的天堂亚洲一区| 欧美精品在线观看| www在线观看免费视频| 国产一区一区| 在线一区二区视频| 性高湖久久久久久久久aaaaa| 欧美视频综合| 国产成+人+日韩+欧美+亚洲| 国产成人精品在线播放| 欧美日韩精品一区二区三区视频播放 | 91成人福利在线| 日韩av手机在线免费观看| 日本精品影院| 精品国产一区二区三区不卡 | 1级黄色大片儿| 999久久久91| 国产亚洲aⅴaaaaaa毛片| 在线观看成人动漫| 国产麻豆一区二区三区| 欧美午夜在线观看| 不卡影院一区二区| 黄视频网站在线观看| 亚洲一区在线播放| 男女激烈动态图| 日本中文字幕伦在线观看| 91一区二区在线观看| 岛国视频一区免费观看| 国产又粗又长又大视频| 日韩二区在线观看| 欧洲日韩成人av| 日韩精品视频播放| 亚洲黄色天堂| 欧美精品18videos性欧美| 麻豆视频在线免费看| 精品国产91| 亚洲日本欧美中文幕| a视频免费观看| 狼人精品一区二区三区在线| 精品日韩av一区二区| 国产亚洲色婷婷久久| 四虎精品永久免费| 欧美日本一道本| 五月天激情播播| 五月天色综合| 欧美一区日本一区韩国一区| 视频免费1区二区三区 | 欧美精品免费视频| 欧美男女交配视频| 国产精品无码久久久久| 欧美日韩亚洲综合一区二区三区| 男女爽爽爽视频| 国产69精品久久| 欧美日韩精品一区二区天天拍小说 | 美女精品导航| 亚洲国产日韩在线一区模特| 91午夜在线观看| 成人免费网站观看| 色菇凉天天综合网| 亚洲天堂2018av| 国产一区二区高清在线| 日韩精品一区在线观看| 中文视频在线观看| 亚洲大片精品免费| 一本一本久久a久久精品综合小说 一本一本久久a久久精品牛牛影视 | 国产一二三四五区| 欧美电影一区| 欧美韩日一区二区| 伊人久久综合视频| 日韩电影一区二区三区| 成人免费网站在线观看| 亚洲精品18p| 久久综合精品国产一区二区三区| 日韩欧美视频一区二区三区四区| 成人免费在线视频网| 亚洲欧美影音先锋| 成人性生活视频免费看| 欧美性理论片在线观看片免费| 精品视频一区 二区 三区| 女人扒开腿免费视频app| 免费福利视频一区| 色一情一乱一区二区| 久久免费小视频| 美日韩精品视频| 91亚洲国产成人久久精品网站| 懂色av蜜臀av粉嫩av分享吧| 久久精品一区二区三区不卡| 在线观看成人av| h片视频在线观看| 欧美三区在线观看| 欧美一级片黄色| 日韩欧美一区免费| 久久久久久成人| 中文字幕a级片| 成人sese在线| 亚洲一区三区| 在线观看欧美日韩电影| 欧美一级高清片在线观看| 中文字幕高清视频| 午夜精品偷拍| 国产精品自拍偷拍视频| 五月色婷婷综合| 中文字幕乱码久久午夜不卡 | 精品极品在线| 91精品国产91久久久久久一区二区 | 91原创在线视频| 国产精品av免费观看| 3d欧美精品动漫xxxx无尽| 精品国产欧美一区二区| 性色国产成人久久久精品| 亚洲毛片在线| av成人观看| 五月香视频在线观看| 欧美视频在线视频| 国产人妻黑人一区二区三区| 亚洲视频电影在线| 国产伦精品一区二区三区精品视频| 婷婷久久久久久| 亚洲一区在线播放| 无套内谢丰满少妇中文字幕| 成人中文视频| 国产精品久久久久久久久免费 | 久久精品国产精品亚洲| 国产情侣小视频| 久久久久一区二区三区四区| 欧美,日韩,国产在线| 国产乱人伦精品一区| 精品少妇v888av| 国产美女免费视频| 中文字幕日韩av资源站| 天天爽夜夜爽一区二区三区| 欧洲激情视频| 国产成人97精品免费看片| 免费在线稳定资源站| 婷婷六月综合网| 182在线视频| 亚洲少妇一区| 欧美黄色直播| 精品无人乱码一区二区三区 | √天堂8资源中文在线| 日韩一级大片在线观看| 日本天堂中文字幕| 国产成人鲁色资源国产91色综| 久久99国产精品一区| 国产精品高清一区二区 | 一区二区三区短视频| 亚洲欧美国产一区二区三区| 日韩手机在线视频| 国产视频一区二区三区在线观看| 毛片毛片毛片毛片毛片毛片毛片毛片毛片| 亚洲尤物av| 国产美女直播视频一区| 在线看免费av| 日韩一级片网址| 日韩伦人妻无码| 国产亚洲一二三区| 色91精品久久久久久久久| 亚洲xxx拳头交| 国产aⅴ精品一区二区三区黄| 成人性生交大片免费看在线播放| 亚洲精品91美女久久久久久久| wwwwww国产| 中文字幕不卡的av| 亚洲国产综合av| 亚洲麻豆av| 五月天久久综合网| 国产精品国产三级在线观看| 亚洲97在线观看| 99免在线观看免费视频高清| 日韩欧美区一区二| 国产一级片毛片| 亚洲欧美一区二区视频| 中文字幕无码人妻少妇免费| 欧美a一区二区| 日韩第一页在线观看| 成人线上播放| 国产精品久久综合av爱欲tv| 在线网址91| 亚洲天堂av在线免费观看| 夜夜躁很很躁日日躁麻豆| 亚洲国产一区二区在线播放| 亚洲综合色一区| 国产成人亚洲综合a∨猫咪| 欧美一级视频免费看| 欧美激情另类| 久久久久资源| 国产精品99久久免费| 日本精品中文字幕| 中日韩高清电影网| 中文字幕不卡av| 天天操天天操天天| 日韩午夜精品视频| 国产精品传媒在线观看| 亚洲成人7777| 国产真实乱在线更新| 成人激情小说网站| 色戒在线免费观看| 噜噜噜在线观看免费视频日韩| 国内外成人激情免费视频| 任你躁在线精品免费| 7777精品久久久大香线蕉小说| 台湾佬中文娱乐久久久| 久久久伊人欧美| 免费黄色网页在线观看| 亚洲人成在线观| 色香蕉在线视频| 日韩亚洲欧美中文三级| 97人妻精品视频一区| 欧美日韩国产中文精品字幕自在自线| 亚洲女人久久久| 中文字幕av一区二区三区免费看| 国产ts丝袜人妖系列视频| 国产成人免费视频一区| 91性高潮久久久久久久| 麻豆久久一区二区| 国产91色在线观看| 久久香蕉精品| 日本一本二本在线观看| 99热免费精品| a天堂中文字幕| 高清在线一区| 日本老师69xxx| av资源在线| 欧美日韩国产123| 黄色成年人视频在线观看| 亚洲日本成人女熟在线观看| 亚欧在线观看视频| 精品欧美一区二区三区精品久久 | 欧美破处大片在线视频| 相泽南亚洲一区二区在线播放| 九九热线有精品视频99| 国产日韩一区二区三区| 4438全国亚洲精品观看视频| 91gao视频| 中文字幕久久精品一区二区| 97超级碰碰| 大型av综合网站| 国产精品久久一区二区三区| 亚洲一区二区三区四区电影| 91综合免费在线| 精品视频一区二区三区| 亚洲精品日韩av| 亚洲一区电影| 国产伦精品一区二区三区高清| 日本久久伊人| 国产欧美日韩视频一区二区三区| 成人动态视频| 久久亚洲高清| 国产精品中文字幕亚洲欧美| 欧美午夜精品久久久久久蜜| 国内精品久久久久久99蜜桃| 亚洲黄色一区二区三区| 91亚洲国产高清| 国产欧美自拍视频| 国产一区视频在线观看免费| 黄页网站在线观看视频| 亚洲欧美久久| 日韩欧美国产片| 国产电影一区在线| 自拍视频一区二区| 国产亲近乱来精品视频| 天天操天天摸天天舔| 亚洲欧美国产三级| 日韩av男人天堂| 欧美在线不卡视频| av观看在线免费| 亚洲电影免费观看高清| 精品三级久久久久久久电影聊斋| 中文欧美日本在线资源| 午夜在线激情影院| 欧美又大粗又爽又黄大片视频| 久久久成人av毛片免费观看| 亚洲qvod图片区电影| 欧美五码在线| 在线视频亚洲自拍| 韩日视频一区| 高清一区在线观看| 国产99精品在线观看| 五月天精品视频| 亚洲欧美日韩人成在线播放| av中文在线播放| 91精品国产一区二区三区香蕉| 天堂国产一区二区三区| 中文字幕欧美精品日韩中文字幕| 久久www人成免费看片中文| 国产精品av在线| 99精品在免费线中文字幕网站一区| 区一区二区三区中文字幕| 国产一区观看| 天天综合网日韩| 91亚洲国产成人精品一区二三 | 国产精品老牛影院在线观看| 大香伊人久久精品一区二区| 亚洲永久一区二区三区在线| 在线日韩av| 久久久久xxxx| 国产亚洲精品资源在线26u| 久草视频在线资源站| 欧美日韩国产综合一区二区三区| 色婷婷av一区二区三区之红樱桃| 日韩在线播放视频| 欧美电影免费观看高清完整| 国产精品12| 91精品啪在线观看国产18| 午夜视频在线瓜伦| av在线这里只有精品| 日韩成人短视频| 欧美网站大全在线观看| 手机福利在线| 97精品国产aⅴ7777| 玖玖精品一区| 正在播放国产精品| 日韩精品五月天| 蜜桃传媒一区二区亚洲av| 亚洲成人精品一区二区| 国产美女永久免费| 自拍偷拍免费精品| 欧美色999| 日韩精品久久久免费观看| 亚洲一区观看| 国产精品300页| 亚洲成人资源网| 亚洲a视频在线观看| 欧美成人一二三| 国产亚洲久久| 超碰10000| 成人中文字幕在线| 精品在线免费观看视频| 日韩美女视频在线| 污污片在线免费视频| 91麻豆蜜桃| 好看不卡的中文字幕| 国产大学生av| 亚洲成人av资源| 天堂视频中文在线| 日本成人免费在线| 久久综合影院| 国产又黄又猛又粗| 国产精品国产三级国产普通话蜜臀 | 欧美精品一区二区在线播放| 久草免费在线色站| 国产精品区一区二区三含羞草| 亚洲婷婷在线| 无码人妻一区二区三区在线| 午夜伊人狠狠久久| 三级国产在线观看| 国产成人在线亚洲欧美| 日韩专区精品| 久久天天做天天爱综合色| 国产欧美精品一区二区三区介绍| 久久资源综合| 日韩欧美精品在线观看视频| 91美女在线视频| 中文字幕精品无码一区二区| 亚洲色图色老头| 啪啪av大全导航福利综合导航| 一区二区三区四区不卡| 国精品**一区二区三区在线蜜桃 | 久久夜精品香蕉| 色播一区二区| 国内外成人免费激情视频| 国产欧美日韩三级| 国产精品伦理一区| 久久久久久一区二区三区| 一区二区三区日本久久久| 精品999在线| 亚洲精品一二三四区| 五月天丁香视频| 91精品久久久久久久久青青| 欧美日韩四区| 蜜桃无码一区二区三区| 7777精品伊人久久久大香线蕉超级流畅| 欧美亚洲系列| 日本一区二区在线视频观看| 激情综合色播激情啊| 日韩少妇裸体做爰视频| 最近2019中文字幕一页二页| 伊色综合久久之综合久久| 六月丁香婷婷在线| 日韩毛片高清在线播放| 亚洲精品久久久久avwww潮水| 日韩av电影在线网| 欧美在线高清| av手机在线播放| 精品国产乱码久久久久久久| 免费高清视频在线一区| 免费网站在线观看视频| 国产精品美女久久久久久2018 | 日本a视频在线观看| 国产精品美女久久久久aⅴ| 熟妇人妻中文av无码| 成人淫片在线看|