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

大數據查詢——HBase 讀寫設計與實踐

大數據
原實現基于Oracle提供存儲查詢服務,隨著數據量的不斷增加,在寫入和讀取過程中面臨性能問題,且歷史數據僅供業務查詢參考,并不影響實際流程,從系統結構上來說,放在業務鏈條上游比較重。本項目將其置于下游數據處理Hadoop分布式平臺來實現此需求。下面列一些具體的需求指標:

背景介紹

本項目主要解決 check 和 opinion2 張歷史數據表(歷史數據是指當業務發生過程中的完整中間流程和結果數據)的在線查詢。原實現基于 Oracle 提供存儲查詢服務,隨著數據量的不斷增加,在寫入和讀取過程中面臨性能問題,且歷史數據僅供業務查詢參考,并不影響實際流程,從系統結構上來說,放在業務鏈條上游比較重。本項目將其置于下游數據處理 Hadoop 分布式平臺來實現此需求。下面列一些具體的需求指標:

  1. 數據量:目前 check 表的累計數據量為 5000w+ 行,11GB;opinion 表的累計數據量為 3 億 +,約 100GB。每日增量約為每張表 50 萬 + 行,只做 insert,不做 update。
  2. 查詢要求:check 表的主鍵為 id(Oracle 全局 id),查詢鍵為 check_id,一個 check_id 對應多條記錄,所以需返回對應記錄的 list; opinion 表的主鍵也是 id,查詢鍵是 bussiness_no 和 buss_type,同理返回 list。單筆查詢返回 List 大小約 50 條以下,查詢頻率為 100 筆 / 天左右,查詢響應時間 2s。

技術選型

從數據量及查詢要求來看,分布式平臺上具備大數據量存儲,且提供實時查詢能力的組件*** HBase。根據需求做了初步的調研和評估后,大致確定 HBase 作為主要存儲組件。將需求拆解為寫入和讀取 HBase 兩部分。

讀取 HBase 相對來說方案比較確定,基本根據需求設計 RowKey,然后根據 HBase 提供的豐富 API(get,scan 等)來讀取數據,滿足性能要求即可。

寫入 HBase 的方法大致有以下幾種:

  1. Java 調用 HBase 原生 API,HTable.add(List(Put))。
  2. MapReduce 作業,使用 TableOutputFormat 作為輸出。
  3. Bulk Load,先將數據按照 HBase 的內部數據格式生成持久化的 HFile 文件,然后復制到合適的位置并通知 RegionServer ,即完成海量數據的入庫。其中生成 Hfile 這一步可以選擇 MapReduce 或 Spark。

本文采用第 3 種方式,Spark + Bulk Load 寫入 HBase。該方法相對其他 2 種方式有以下優勢:

  1. BulkLoad 不會寫 WAL,也不會產生 flush 以及 split。
  2. 如果我們大量調用 PUT 接口插入數據,可能會導致大量的 GC 操作。除了影響性能之外,嚴重時甚至可能會對 HBase 節點的穩定性造成影響,采用 BulkLoad 無此顧慮。
  3. 過程中沒有大量的接口調用消耗性能。
  4. 可以利用 Spark 強大的計算能力。

圖示如下: 

設計

環境信息

  1. Hadoop 2.5-2.7
  2. HBase 0.98.6
  3. Spark 2.0.0-2.1.1
  4. Sqoop 1.4.6 

表設計

本段的重點在于討論 HBase 表的設計,其中 RowKey 是最重要的部分。為了方便說明問題,我們先來看看數據格式。以下以 check 舉例,opinion 同理。

check 表(原表字段有 18 個,為方便描述,本文截選 5 個字段示意) 

如上圖所示,主鍵為 id,32 位字母和數字隨機組成,業務查詢字段 check_id 為不定長字段(不超過 32 位),字母和數字組成,同一 check_id 可能對應多條記錄,其他為相關業務字段。眾所周知,HBase 是基于 RowKey 提供查詢,且要求 RowKey 是唯一的。RowKey 的設計主要考慮的是數據將怎樣被訪問。初步來看,我們有 2 種設計方法。

  1. 拆成 2 張表,一張表 id 作為 RowKey,列為 check 表對應的各列;另一張表為索引表,RowKey 為 check_id,每一列對應一個 id。查詢時,先找到 check_id 對應的 id list,然后根據 id 找到對應的記錄。均為 HBase 的 get 操作。
  2. 將本需求可看成是一個范圍查詢,而不是單條查詢。將 check_id 作為 RowKey 的前綴,后面跟 id。查詢時設置 Scan 的 startRow 和 stopRow,找到對應的記錄 list。

***種方法優點是表結構簡單,RowKey 容易設計,缺點為 1)數據寫入時,一行原始數據需要寫入到 2 張表,且索引表寫入前需要先掃描該 RowKey 是否存在,如果存在,則加入一列,否則新建一行,2)讀取的時候,即便是采用 List, 也至少需要讀取 2 次表。第二種設計方法,RowKey 設計較為復雜,但是寫入和讀取都是一次性的。綜合考慮,我們采用第二種設計方法。

RowKey 設計

熱點問題

HBase 中的行是以 RowKey 的字典序排序的,其熱點問題通常發生在大量的客戶端直接訪問集群的一個或極少數節點。默認情況下,在開始建表時,表只會有一個 region,并隨著 region 增大而拆分成更多的 region,這些 region 才能分布在多個 regionserver 上從而使負載均分。對于我們的業務需求,存量數據已經較大,因此有必要在一開始就將 HBase 的負載均攤到每個 regionserver,即做 pre-split。常見的防治熱點的方法為加鹽,hash 散列,自增部分(如時間戳)翻轉等。

RowKey 設計

Step1:確定預分區數目,創建 HBase Table

不同的業務場景及數據特點確定數目的方式不一樣,我個人認為應該綜合考慮數據量大小和集群大小等因素。比如 check 表大小約為 11G,測試集群大小為 10 臺機器,hbase.hregion.max.filesize=3G(當 region 的大小超過這個數時,將拆分為 2 個),所以初始化時盡量使得一個 region 的大小為 1~2G(不會一上來就 split),region 數據分到 11G/2G=6 個,但為了充分利用集群資源,本文中 check 表劃分為 10 個分區。如果數據量為 100G,且不斷增長,集群情況不變,則 region 數目增大到 100G/2G=50 個左右較合適。Hbase check 表建表語句如下: 

其中,Column Family =‘f’,越短越好。

COMPRESSION => 'SNAPPY',HBase 支持 3 種壓縮 LZO, GZIP and Snappy。GZIP 壓縮率高,但是耗 CPU。后兩者差不多,Snappy 稍微勝出一點,cpu 消耗的比 GZIP 少。一般在 IO 和 CPU 均衡下,選擇 Snappy。

DATA_BLOCK_ENCODING => 'FAST_DIFF',本案例中 RowKey 較為接近,通過以下命令查看 key 長度相對 value 較長。 


Step2:RowKey 組成

Salt

讓數據均衡的分布到各個 Region 上,結合 pre-split,我們對查詢鍵即 check 表的 check_id 求 hashcode 值,然后 modulus(numRegions) 作為前綴,注意補齊數據。 

說明:如果數據量達上百 G 以上,則 numRegions 自然到 2 位數,則 salt 也為 2 位。

Hash 散列

因為 check_id 本身是不定長的字符數字串,為使數據散列化,方便 RowKey 查詢和比較,我們對 check_id 采用 SHA1 散列化,并使之 32 位定長化。

唯一性

以上 salt+hash 作為 RowKey 前綴,加上 check 表的主鍵 id 來保障 RowKey 唯一性。綜上,check 表的 RowKey 設計如下:(check_id=A208849559) 

為增強可讀性,中間還可以加上自定義的分割符,如’+’,’|’等。

以上設計能保證對每次查詢而言,其 salt+hash 前綴值是確定的,并且落在同一個 region 中。需要說明的是 HBase 中 check 表的各列同數據源 Oracle 中 check 表的各列存儲。

WEB 查詢設計

RowKey 設計與查詢息息相關,查詢方式決定 RowKey 設計,反之基于以上 RowKey 設計,查詢時通過設置 Scan 的 [startRow,stopRow], 即可完成掃描。以查詢 check_id=A208849559 為例,根據 RowKey 的設計原則,對其進行 salt+hash 計算,得前綴。 

代碼實現關鍵流程

Spark write to HBase

Step0: prepare work

因為是從上游系統承接的業務數據,存量數據采用 sqoop 抽到 hdfs;增量數據每日以文件的形式從 ftp 站點獲取。因為業務數據字段中包含一些換行符,且 sqoop1.4.6 目前只支持單字節,所以本文選擇’0x01’作為列分隔符,’0x10’作為行分隔符。

Step1: Spark read hdfs text file 

SparkContext.textfile() 默認行分隔符為”n”,此處我們用“0x10”,需要在 Configuration 中配置。應用配置,我們調用 newAPIHadoopFile 方法來讀取 hdfs 文件,返回 JavaPairRDD ,其中 LongWritable 和 Text 分別為 Hadoop 中的 Long 類型和 String 類型(所有 Hadoop 數據類型和 java 的數據類型都很相像,除了它們是針對網絡序列化而做的特殊優化)。我們需要的數據文件放在 pairRDD 的 value 中,即 Text 指代。為后續處理方便,可將 JavaPairRDD 轉換為 JavaRDD< String >。

Step2: Transfer and sort RDD

1)將 avaRDD< String>轉換成 JavaPairRDD,其中參數依次表示為,RowKey,col,value。做這樣轉換是因為 HBase 的基本原理是基于 RowKey 排序的,并且當采用 bulk load 方式將數據寫入多個預分區(region)時,要求 Spark 各 partition 的數據是有序的,RowKey,column family(cf),col name 均需要有序。在本案例中因為只有一個列簇,所以將 RowKey 和 col name 組織出來為 Tuple2 格式的 key。請注意原本數據庫中的一行記錄(n 個字段),此時會被拆成 n 行。

2)基于 JavaPairRDD進行 RowKey,col 的二次排序。如果不做排序,會報以下異常:

3)將數據組織成 HFile 要求的 JavaPairRDD hfileRDD。

Step3:create hfile and bulk load to HBase

1)主要調用 saveAsNewAPIHadoopFile 方法: 

2)hfilebulk load to HBase 

注:如果集群開啟了 kerberos,step4 需要放置在 ugi.doAs()方法中,在進行如下驗證后實現 

訪問 HBase 集群的 60010 端口 web,可以看到 region 分布情況。 

Read from HBase

本文基于 spring boot 框架來開發 web 端訪問 HBase 內數據。

use connection pool(使用連接池)

創建連接是一個比較重的操作,在實際 HBase 工程中,我們引入連接池來共享 zk 連接,meta 信息緩存,region server 和 master 的連接。 

也可以通過以下方法,覆蓋默認線程池。 

process query

Step1: 根據查詢條件,確定 RowKey 前綴

根據 3.3 RowKey 設計介紹,HBase 的寫和讀都遵循該設計規則。此處我們采用相同的方法,將 web 調用方傳入的查詢條件,轉化成對應的 RowKey 前綴。例如,查詢 check 表傳遞過來的 check_id=A208849559,生成前綴 7+7c9498b4a83974da56b252122b9752bf。

Step2:確定 scan 范圍

A208849559 對應的查詢結果數據即在 RowKey 前綴為 7+7c9498b4a83974da56b252122b9752bf 對應的 RowKey 及 value 中。 

Step3:查詢結果組成返回對象

遍歷 ResultScanner 對象,將每一行對應的數據封裝成 table entity,組成 list 返回。

測試

從原始數據中隨機抓取 1000 個 check_id,用于模擬測試,連續發起 3 次請求數為 2000(200 個線程并發,循環 10 次),平均響應時間為 51ms,錯誤率為 0。 


如上圖,經歷 N 次累計測試后,各個 region 上的 Requests 數較為接近,符合負載均衡設計之初。

踩坑記錄

1、kerberos 認證問題

如果集群開啟了安全認證,那么在進行 Spark 提交作業以及訪問 HBase 時,均需要進行 kerberos 認證。

本文采用 yarn cluster 模式,像提交普通作業一樣,可能會報以下錯誤。 

定位到 HbaseKerberos.java:18,代碼如下: 

這是因為 executor 在進行 HBase 連接時,需要重新認證,通過 --keytab 上傳的 tina.keytab 并未被 HBase 認證程序塊獲取到,所以認證的 keytab 文件需要另外通過 --files 上傳。示意如下 

其中 tina.keytab.hbase 是將 tina.keytab 復制并重命名而得。因為 Spark 不允許同一個文件重復上傳。

2、序列化 

解決方法一:

如果 sc 作為類的成員變量,在方法中被引用,則加 transient 關鍵字,使其不被序列化。

解決方法二:

將 sc 作為方法參數傳遞,同時使涉及 RDD 操作的類 implements Serializable。 代碼中采用第二種方法。詳見代碼。

3、批量請求測試 

或者 

查看下面 issue 以及一次排查問題的過程,可能是 open file 超過限制。

  • https://github.com/spring-projects/spring-boot/issues/1106
  • http://mp.weixin.qq.com/s/34GVlaYDOdY1OQ9eZs-iXg

使用 ulimit-a 查看每個用戶默認打開的文件數為 1024。

在系統文件 /etc/security/limits.conf 中修改這個數量限制,在文件中加入以下內容, 即可解決問題。

  • soft nofile 65536
  • hard nofile 65536
責任編輯:未麗燕 來源: LinuxEden
相關推薦

2015-06-15 12:58:39

大數據大數據查詢

2015-06-11 10:09:04

大數據HBase

2021-09-16 23:33:41

大數據Sentry監控

2020-07-10 08:50:37

大數據銀行技術

2020-11-26 15:51:11

SQL數據庫大數據

2022-11-23 21:51:42

大數據

2024-05-10 13:01:49

2024-10-15 08:14:51

2015-05-26 09:41:45

china-pub

2013-09-08 22:40:38

EF Code Fir數據查詢架構設計

2014-04-15 09:30:08

Cassandra\H

2020-06-17 12:36:45

查詢數據Python

2020-01-09 10:47:15

HDFS數據文件

2017-10-20 08:25:10

數據收集工具數據源

2024-04-30 08:05:53

2023-06-09 14:14:45

大數據容器化

2014-08-22 11:04:39

大數據架構

2023-11-15 18:46:49

HBase數據庫開源

2022-03-25 07:52:01

數據中心架構HBase

2022-02-07 07:37:14

MySQL數據查詢
點贊
收藏

51CTO技術棧公眾號

91网页在线观看| 伊人网免费视频| 欧美亚洲色图校园春色| 狠狠综合久久av一区二区小说 | www.日日操| 精品欧美色视频网站在线观看| 国产精品一品二品| 热99久久精品| 免费中文字幕在线观看| 青青草97国产精品麻豆| 亚洲成人在线网| 中文字幕精品一区二区三区在线| 女海盗2成人h版中文字幕| 国产精品第四页| 精品久久久三级| 精品黑人一区二区三区在线观看| 国产视频欧美| 欧美噜噜久久久xxx| 性猛交娇小69hd| 精品亚洲免a| 日韩一区二区三区高清免费看看| 久久国内精品一国内精品| 午夜不卡福利视频| 电影一区二区三区| 亚洲综合免费观看高清完整版 | 国产精品久久久亚洲| 免费一级肉体全黄毛片| 97精品视频| 亚洲天堂网站在线观看视频| 精人妻一区二区三区| 色综合视频一区二区三区44| 色哟哟一区二区| 精品国产一区二区三区无码| 黄色小网站在线观看| 欧美经典一区二区| 欧美一区2区三区4区公司二百| 丰满人妻一区二区三区四区53| 美腿丝袜亚洲三区| 国产成人精品999| 国产香蕉视频在线| 极品中文字幕一区| 欧美激情va永久在线播放| 国产精品视频一区二区在线观看 | 午夜啪啪福利视频| 永久av在线| 中文欧美字幕免费| 日韩一区二区三区高清| 免费av在线电影| 久久综合狠狠综合久久综合88| 国产二区不卡| 黄色片一区二区| 福利91精品一区二区三区| 91亚洲永久免费精品| 国产又粗又黄又爽的视频| 理论片日本一区| 国产一区在线播放| 国产美女三级无套内谢| 国产乱码精品一区二区三区忘忧草| 国产欧美一区二区三区视频| 中文字幕在线播出| 国内精品国产三级国产a久久 | 99久久精品免费看国产交换| 国内精品不卡在线| 成人3d动漫一区二区三区91| 欧美一级特黄aaaaaa| www.成人网.com| 老司机精品福利在线观看| 欧美色18zzzzxxxxx| 国产日韩亚洲欧美综合| 亚洲午夜精品一区二区| 国产不卡在线| 一级做a爱片久久| a级黄色一级片| 激情开心成人网| 欧美年轻男男videosbes| www.日本久久| 国产精品一线| 国产丝袜高跟一区| 强制高潮抽搐sm调教高h| 欧美在线高清| 欧洲成人免费aa| 国产精品美女一区| 成人综合在线网站| 日韩欧美一区二区三区四区五区| 亚洲s色大片| 亚洲综合色噜噜狠狠| 久久精品免费一区二区| 国产精品蜜月aⅴ在线| 日韩一区二区影院| 日本在线不卡一区二区| 国产一区毛片| 欧美日本啪啪无遮挡网站| 国产成人亚洲欧洲在线| 男人的j进女人的j一区| 成人3d动漫一区二区三区91| 第一福利在线| 午夜一区二区三区视频| 在线观看日本一区二区| 国产suv精品一区| 亚洲性无码av在线| 免费人成年激情视频在线观看| 国产农村妇女精品一二区| 成人国产精品一区| 欧美日本韩国一区二区| 一区二区三区免费看视频| 777久久久精品一区二区三区| 国产精品一区二区免费福利视频| 精品福利一区二区三区| 亚洲精品国产精品乱码在线观看| 亚洲三级色网| http;//www.99re视频| a√资源在线| 欧美性猛交xxxx黑人| 日本中文字幕精品| 欧美r级电影| 青青草国产精品一区二区| 亚洲免费一级片| 国产精品高潮呻吟| 国产免费人做人爱午夜视频| www.丝袜精品| 精品少妇v888av| 中文字幕一区二区三区四区视频| 91片在线免费观看| 欧美男女爱爱视频| 免费精品一区二区三区在线观看| 中文在线资源观看视频网站免费不卡| 日韩av在线天堂| 国产99久久久精品| 日本三日本三级少妇三级66| 国产麻豆久久| 亚洲欧美变态国产另类| 影音先锋亚洲天堂| jlzzjlzz亚洲日本少妇| 欧美狂野激情性xxxx在线观| 亚洲国产综合在线观看| 中文字幕日本欧美| 老熟妇一区二区三区啪啪| 久久综合国产精品| 久久无码高潮喷水| 三级小说欧洲区亚洲区| 91国产高清在线| 熟妇高潮一区二区三区| 亚洲成a人v欧美综合天堂下载 | 亚洲天堂中文在线| 国产欧美精品一区二区色综合朱莉| 99精品人妻少妇一区二区| 久久香蕉精品香蕉| 欧美一区二区三区图| 奇米影视888狠狠狠777不卡| 日韩欧美亚洲范冰冰与中字| 黄色正能量网站| 快she精品国产999| 日韩三级电影| 日韩成人免费av| 久久综合久久美利坚合众国| 精品国自产在线观看| 亚洲国产日韩精品| 第四色在线视频| 久久亚洲视频| 亚洲日本精品一区| 国产精品1区| 欧美激情欧美激情| 四虎在线免费看| 欧美伊人久久久久久久久影院 | 91蝌蚪视频在线| 激情欧美国产欧美| 欧美在线一区二区三区四区| 91精品韩国| 久久午夜a级毛片| 午夜精品久久久久久久99| 亚洲午夜在线视频| 一出一进一爽一粗一大视频| 久久精品麻豆| 中文字幕一区二区三区在线乱码| 亚洲人成777| 久久久免费高清电视剧观看| 同心难改在线观看| 欧美三级一区二区| 欧美成人片在线观看| 99久久精品国产导航| 五月婷婷丁香综合网| 欧美一区二区三区另类| 国产综合18久久久久久| 成人午夜在线| 97视频国产在线| av在线播放网| 精品国产免费人成在线观看| 国产情侣小视频| 一区二区三区四区五区视频在线观看| 免费无码一区二区三区| 麻豆成人在线观看| 久久99中文字幕| 999精品一区| 久久久久se| 视频二区欧美毛片免费观看| 国产精品99一区| 日韩影视在线| 中文字幕不卡av| 天堂在线一二区| 欧美一区二区三区电影| 91精品国产高清一区二区三密臀| 中文字幕一区二区三区不卡| 三级男人添奶爽爽爽视频 | 亚洲av人人澡人人爽人人夜夜| 日韩精品久久久久久| 国产精品自拍合集| 久久影视一区| 欧美日韩国产综合视频在线| 亚洲开心激情| 成人在线免费观看视视频| 26uuu亚洲电影| 欧美大片在线看| 91吃瓜网在线观看| 亚洲美女久久久| 亚洲欧美另类视频| 欧美一区二区三区视频| 国产一级精品毛片| 一本久道中文字幕精品亚洲嫩| 久久久久久福利| 成人欧美一区二区三区| 中文字幕在线观看免费高清| 91一区一区三区| 国产一精品一aⅴ一免费| 国产在线不卡一卡二卡三卡四卡| 日韩精品免费播放| 麻豆9191精品国产| 无码播放一区二区三区| 亚洲午夜一区| 国产乱子伦精品无码专区| 一区二区电影| 看一级黄色录像| 久久精品免费一区二区三区| 亚洲欧洲精品一区| 日韩精品影视| 亚洲第一导航| 久久人人99| 亚洲欧洲在线一区| 欧美久久精品一级c片| 日韩精品伦理第一区| 欧美日本成人| 视频在线精品一区| 色偷偷综合网| 国产精品av免费| 久久精品欧美一区| 成人在线免费观看网址| 自由日本语亚洲人高潮| 国产激情在线看| 国内精品99| 水蜜桃色314在线观看| 国产视频亚洲| 成人在线激情网| 日本不卡中文字幕| 中文字幕在线观看日| 国产一区二区免费视频| 91av免费观看| 成人av网站在线| 青青草视频成人| 欧美国产精品中文字幕| 国精品人伦一区二区三区蜜桃| 亚洲视频网在线直播| 麻豆疯狂做受xxxx高潮视频| 亚洲国产一二三| av大全在线观看| 欧美午夜片在线看| 国产老妇伦国产熟女老妇视频| 日韩精品一区二| 午夜在线观看视频18| 亚洲欧美一区二区三区情侣bbw| 成人在线视频成人| 久久九九国产精品怡红院| 久草在线视频资源| 日本一区二区三区在线播放| 精品久久在线| 高清日韩一区| 国产精品一在线观看| 一本色道久久综合亚洲二区三区| 在线免费观看日本欧美爱情大片| 欧洲精品在线播放| 视频一区欧美精品| 国产成人强伦免费视频网站| 国产精品99久| 日本久久久久久久久久| aa级大片欧美| 国产喷水在线观看| 五月天精品一区二区三区| 国产男人搡女人免费视频| 欧美一级片在线看| 头脑特工队2在线播放| 久久九九热免费视频| 午夜不卡影院| 亚洲伊人成综合成人网| 日本午夜精品| 中国 免费 av| 丝袜诱惑制服诱惑色一区在线观看 | 香港伦理在线| 久久久久久久久久久免费| 日韩在线观看不卡| 久久66热这里只有精品| 国产精品久久观看| 北条麻妃视频在线| 国产成人亚洲精品狼色在线| 摸摸摸bbb毛毛毛片| 香蕉成人啪国产精品视频综合网 | 亚洲高清av在线| 一广人看www在线观看免费视频| 97视频免费在线观看| 伊人亚洲精品| 欧美日韩一区二区三区免费| 欧美日韩一区自拍| 999这里有精品| 日本一区二区三区久久久久久久久不| 久久精品性爱视频| 91精品久久久久久久99蜜桃| 国产精品一区二区三区四区色 | 久久久精品一区二区毛片免费看| 5566中文字幕一区二区| 日韩黄色大片网站| 女性隐私黄www网站视频| 成人丝袜18视频在线观看| 亚洲天堂网av在线| 欧美视频你懂的| 国产资源在线观看| 91精品国产高清久久久久久| 中文字幕日韩高清在线| 日本精品免费视频| 精品一区二区三区在线视频| 欧美激情久久久久久久| 一本大道av伊人久久综合| 少妇高潮久久久| 久久久久九九九九| 一区二区三区四区高清视频| 麻豆md0077饥渴少妇| 美国毛片一区二区三区| 中文字幕欧美激情极品| 91国产丝袜在线播放| 欧美巨乳在线| 国产91露脸中文字幕在线| 夜夜躁狠狠躁日日躁2021日韩| 日本不卡在线观看视频| 99综合电影在线视频| 五月天婷婷综合网| 亚洲精品国产福利| 99re6在线精品视频免费播放| 粉嫩av一区二区三区免费观看 | 老司机午夜福利视频| 欧美激情一级二级| 精品午夜电影| 中文字幕乱码人妻综合二区三区| 99久久夜色精品国产网站| 九九热在线视频播放| 亚洲男人av在线| 日日av拍夜夜添久久免费| 午夜欧美性电影| 久久国产精品72免费观看| 中文字幕av播放| 精品乱码亚洲一区二区不卡| 黑人精品视频| 裸模一区二区三区免费| 三级在线观看一区二区| 色撸撸在线视频| 91精品国产手机| 超碰97国产精品人人cao| 久久综合伊人77777麻豆| 日韩 欧美一区二区三区| 亚洲精品天堂网| 精品国精品国产尤物美女| а√在线中文在线新版| 欧美日韩在线观看一区二区三区| 青草av.久久免费一区| 国产精品嫩草影院俄罗斯 | 成人高潮成人免费观看| 国产一区二中文字幕在线看| 国产精品v亚洲精品v日韩精品| 国产黄色三级网站| 欧美在线观看视频一区二区三区| 精品自拍一区| 久久精品久久精品国产大片| 日本不卡一区二区三区高清视频| 久久久久亚洲av无码专区体验| 亚洲精品在线电影| 久久久成人av毛片免费观看| 粉嫩av一区二区三区天美传媒| 91在线精品一区二区三区| 中文字幕一区二区三区免费看| 欧美成人精品激情在线观看| 日韩美女毛片| 亚洲欧美天堂在线| 欧美日韩国产在线| 秋霞成人影院| 久久久一本精品99久久精品| 极品美女销魂一区二区三区 | 国产一二三av| 亚洲第五色综合网| 色999久久久精品人人澡69| 日韩a∨精品日韩在线观看| 国产女人18毛片水真多成人如厕 | 国产精品久久影视| 26uuu另类亚洲欧美日本一| 亚洲h色精品| 国产三级av在线播放|