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

Flink SQL通過Hudi HMS Catalog讀寫Hudi并同步Hive表

數據庫 其他數據庫
本文介紹了Flink SQL如何通過Hudi HMS Catalog讀寫Hudi并同步Hive表,并且講述了Hudi HMS Catalog的好處,我認為這是目前比較完美的一種方式,強烈推薦大家使用。

?前言

上篇文章??Flink SQL操作Hudi并同步Hive使用總結??總結了如何使用Flink SQL讀寫Hudi并同步Hive,介紹了創建表的各種方式,但是每一種方式都不太完美。本文介紹一種比較完美的方式,通過Hudi HMS Catalog讀寫Hudi并同步Hive表,這里的Hudi HMS Catalog實際上就是通過上篇文章最后提到的HoodieHiveCatalog?實現的,PR:https://github.com/apache/hudi/pull/6082,2022年7月18 merge,也就是從Hudi0.12.0版本開始支持(我確認了一下0.11.1版本沒有),如果大家要使用的話,必須升級到0.12.0+,本文使用Hudi master 0.13.0-SNAPSHOT。

Flink Hudi HMS Catalog的好處

既然推薦這種方式,那么先說一下它的好處吧。好處是它可以像Spark SQL創建表一樣,直接將表建立在Hive中,并且表結構與Hive SQL和Spark SQL兼容,也就是Flink Hudi HMS Catalog中創建的表,可以同時使用Flink SQL、Hive SQL、Spark SQL查詢,也可以同時使用Flink SQL、Spark SQL寫Hudi。不像上篇文章中介紹的方式,Flink SQL寫Hudi的表不能被Hive/Spark使用,只能通過同步表的方式。另外在Flink Hudi HMS Catalog中和Spark SQL一樣默認開啟同步Hive,也就是對于MOR表默認會同步創建對應的_ro表和_rt表,至于COW表因為同步的表名和創建的表名一樣,所以讀寫是同一張表。總之和Spark SQL創建表、讀寫一致。

版本

Flink 1.14.3Hudi  master 0.13.0-SNAPSHOT。

創建Flink Hudi HMS Catalog

先看一下如何創建Flink Hudi HMS Catalog。

CREATE CATALOG hudi_catalog WITH (
'type' = 'hudi',
'mode' = 'hms',
'default-database' = 'default',
'hive.conf.dir' = '/usr/hdp/3.1.0.0-78/hive/conf',
'table.external' = 'true'
);

## 其實就是在Hive中創建一個數據庫test_flink
create database if not exists hudi_catalog.test_flink;
## 切換到數據庫test_flink
use hudi_catalog.test_flink;

支持的配置項:

catalog.path
default-database
hive.conf.dir
# 可選項hms、dfs
mode
property-version
# 0.12.1版本應該還不支持,需要自己拉取master最新代碼,PR支持:https://github.com/apache/hudi/pull/6923
# 是否為外部表,默認false,也就是默認內部表
# 0.12.0和0.12.1沒有這個配置項,只能是外部表
table.external

可以看到和hive catalog的配置項差不多,只是type為hudi,這里mode必須是hms,默認值是dfs,至于為啥是hms,請看下面的源碼分析還有一點需要注意的是hive catalog中的配置項為hive-conf-dir,但是hudi的為hive.conf.dir,看著差不多,其實不一樣。table.external:是否為外部表,默認false,也就是默認內部表,但是0.12.0和0.12.1沒有這個配置項,只能是外部表,這正是我使用Hudi master 0.13.0-SNAPSHOT的原因如果覺得這個配置不是必須的,大家可以直接用0.12.1即可。

為啥mode為hms

  public Catalog createCatalog(Context context) {
final FactoryUtil.CatalogFactoryHelper helper =
FactoryUtil.createCatalogFactoryHelper(this, context);
helper.validate();
String mode = helper.getOptions().get(CatalogOptions.MODE);
switch (mode.toLowerCase(Locale.ROOT)) {
case "hms":
return new HoodieHiveCatalog(
context.getName(),
(Configuration) helper.getOptions());
case "dfs":
return new HoodieCatalog(
context.getName(),
(Configuration) helper.getOptions());
default:
throw new HoodieCatalogException(String.format("Invalid catalog mode: %s, supported modes: [hms, dfs].", mode));
}
}

public static final ConfigOption<String> MODE = ConfigOptions
.key("mode")
.stringType()
.defaultValue("dfs");

可以看到mode默認值為dfs,只有mode為hms時,才會使用HoodieHiveCatalog。

MOR表

建表

CREATE TABLE test_hudi_flink_mor (
id int PRIMARY KEY NOT ENFORCED,
name VARCHAR(10),
price int,
ts int,
dt VARCHAR(10)
)
PARTITIONED BY (dt)
WITH (
'connector' = 'hudi',
'path' = '/tmp/hudi/test_hudi_flink_mor',
'table.type' = 'MERGE_ON_READ',
'hoodie.datasource.write.keygenerator.class' = 'org.apache.hudi.keygen.ComplexAvroKeyGenerator',
'hoodie.datasource.write.recordkey.field' = 'id',
'hoodie.datasource.write.hive_style_partitioning' = 'true',
'hive_sync.conf.dir'='/usr/hdp/3.1.0.0-78/hive/conf'
);

使用catalog時path可以不用指定,不指定的話,路徑就是Hive庫路徑+表名,可以看后面的Cow表。

這里需要注意的是,雖然不用配置同步Hive相關的配置,也就是默認會同步,但仍然需要配置hive_sync.conf.dir,否則依舊會報和上篇文章中一樣的異常:WARN  hive.metastore  [] - set_ugi() not successful, Likely cause: new client talking to old server. Continuing without it.org.apache.thrift.transport.TTransportException: null其實這里我認為是不合理的,因為catalog中已經配置了hive.conf.dir,這倆其實可以共用的。

這時在對應的Hive數據庫中就已經建好表了,并且表結構同時兼容Hive、Spark和Flink,也就是既可以用Hive SQL查詢,也可以用Spark SQL和Flink SQL讀寫。

show create table test_hudi_flink_mor;
## 可以自己驗證一下table.external是否生效
+----------------------------------------------------+
| createtab_stmt |
+----------------------------------------------------+
| CREATE TABLE `test_hudi_flink_mor`( |
| `_hoodie_commit_time` string, |
| `_hoodie_commit_seqno` string, |
| `_hoodie_record_key` string, |
| `_hoodie_partition_path` string, |
| `_hoodie_file_name` string, |
| `id` int, |
| `name` string, |
| `price` int, |
| `ts` int) |
| PARTITIONED BY ( |
| `dt` string) |
| ROW FORMAT SERDE |
| 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' |
| WITH SERDEPROPERTIES ( |
| 'hoodie.query.as.ro.table'='false', |
| 'path'='/tmp/hudi/test_hudi_flink_mor', |
| 'primaryKey'='id', |
| 'type'='mor') |
| STORED AS INPUTFORMAT |
| 'org.apache.hudi.hadoop.realtime.HoodieParquetRealtimeInputFormat' |
| OUTPUTFORMAT |
| 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat' |
| LOCATION |
| 'hdfs://cluster1/tmp/hudi/test_hudi_flink_mor' |
| TBLPROPERTIES ( |
| 'connector'='hudi', |
| 'hive_sync.conf.dir'='/usr/hdp/3.1.0.0-78/hive/conf', |
| 'hoodie.datasource.write.hive_style_partitioning'='true', |
| 'hoodie.datasource.write.keygenerator.class'='org.apache.hudi.keygen.ComplexAvroKeyGenerator', |
| 'hoodie.datasource.write.recordkey.field'='id', |
| 'path'='/tmp/hudi/test_hudi_flink_mor', |
| 'spark.sql.create.version'='spark2.4.4', |
| 'spark.sql.sources.provider'='hudi', |
| 'spark.sql.sources.schema.numPartCols'='1', |
| 'spark.sql.sources.schema.numParts'='1', |
| 'spark.sql.sources.schema.part.0'='{"type":"struct","fields":[{"name":"id","type":"integer","nullable":false,"metadata":{}},{"name":"name","type":"string","nullable":true,"metadata":{}},{"name":"price","type":"integer","nullable":true,"metadata":{}},{"name":"ts","type":"integer","nullable":true,"metadata":{}},{"name":"dt","type":"string","nullable":true,"metadata":{}}]}', |
| 'spark.sql.sources.schema.partCol.0'='dt', |
| 'table.type'='MERGE_ON_READ', |
| 'transient_lastDdlTime'='1667373370') |
+----------------------------------------------------+

同步Hive

Insert幾條數據,看一下會不會觸發一下Hive同步。

insert into test_hudi_flink_mor values (1,'hudi',10,100,'2022-10-31'),(2,'hudi',10,100,'2022-10-31');

果然默認同步,表結構和之前的方式是一樣的。同步的表默認是外部表,可以通過配置項hoodie.datasource.hive_sync.create_managed_table配置是否為外部表。

圖片

COW 表

建表

## 建表時可以直接catalog.database.table,不用use切換
CREATE TABLE hudi_catalog.test_flink.test_hudi_flink_cow (
id int PRIMARY KEY NOT ENFORCED,
name VARCHAR(10),
price int,
ts int,
dt VARCHAR(10)
)
PARTITIONED BY (dt)
WITH (
'connector' = 'hudi',
'hoodie.datasource.write.keygenerator.class' = 'org.apache.hudi.keygen.ComplexAvroKeyGenerator',
'hoodie.datasource.write.recordkey.field' = 'id',
'hoodie.datasource.write.hive_style_partitioning' = 'true',
'hive_sync.conf.dir'='/usr/hdp/3.1.0.0-78/hive/conf'
);

這里沒有指定path,看一下Hive中的表結構,路徑為庫路徑+表名:hdfs://cluster1/warehouse/tablespace/managed/hive/test_flink/test_hudi_flink_cow,這更符合平時的使用習慣,畢竟少了一個配置項,且路徑統一好管理,不容易出錯。

+----------------------------------------------------+
| createtab_stmt |
+----------------------------------------------------+
| CREATE EXTERNAL TABLE `test_hudi_flink_cow`( |
| `_hoodie_commit_time` string, |
| `_hoodie_commit_seqno` string, |
| `_hoodie_record_key` string, |
| `_hoodie_partition_path` string, |
| `_hoodie_file_name` string, |
| `id` int, |
| `name` string, |
| `price` int, |
| `ts` int) |
| PARTITIONED BY ( |
| `dt` string) |
| ROW FORMAT SERDE |
| 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' |
| WITH SERDEPROPERTIES ( |
| 'hoodie.query.as.ro.table'='true', |
| 'path'='hdfs://cluster1/warehouse/tablespace/managed/hive/test_flink/test_hudi_flink_cow', |
| 'primaryKey'='id') |
| STORED AS INPUTFORMAT |
| 'org.apache.hudi.hadoop.HoodieParquetInputFormat' |
| OUTPUTFORMAT |
| 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat' |
| LOCATION |
| 'hdfs://cluster1/warehouse/tablespace/managed/hive/test_flink/test_hudi_flink_cow' |
| TBLPROPERTIES ( |
| 'connector'='hudi', |
| 'hive_sync.conf.dir'='/usr/hdp/3.1.0.0-78/hive/conf', |
| 'hoodie.datasource.write.hive_style_partitioning'='true', |
| 'hoodie.datasource.write.keygenerator.class'='org.apache.hudi.keygen.ComplexAvroKeyGenerator', |
| 'hoodie.datasource.write.recordkey.field'='id', |
| 'path'='hdfs://cluster1/warehouse/tablespace/managed/hive/test_flink/test_hudi_flink_cow', |
| 'spark.sql.create.version'='spark2.4.4', |
| 'spark.sql.sources.provider'='hudi', |
| 'spark.sql.sources.schema.numPartCols'='1', |
| 'spark.sql.sources.schema.numParts'='1', |
| 'spark.sql.sources.schema.part.0'='{"type":"struct","fields":[{"name":"id","type":"integer","nullable":false,"metadata":{}},{"name":"name","type":"string","nullable":true,"metadata":{}},{"name":"price","type":"integer","nullable":true,"metadata":{}},{"name":"ts","type":"integer","nullable":true,"metadata":{}},{"name":"dt","type":"string","nullable":true,"metadata":{}}]}', |
| 'spark.sql.sources.schema.partCol.0'='dt', |
| 'transient_lastDdlTime'='1667375710') |
+----------------------------------------------------+

同步Hive

insert into test_hudi_flink_cow values (1,'hudi',10,100,'2022-10-31'),(2,'hudi',10,100,'2022-10-31');

因為名字一樣,所以同步的結果看不到變化。

一致性驗證

通過Spark SQL分別往每個表寫幾條數據,再用Spark、Hive、Flink查詢。

insert into test_hudi_flink_mor values (3,'hudi',10,100,'2022-10-31');
insert into test_hudi_flink_mor_ro values (4,'hudi',10,100,'2022-10-31');
insert into test_hudi_flink_mor_rt values (5,'hudi',10,100,'2022-10-31');
insert into test_hudi_flink_cow values (3,'hudi',10,100,'2022-10-31');

經過驗證,一致性沒有問題。遺憾的是,Flink SQL查詢結果依舊不包含元數據字段,不清楚為啥要這樣設計~

異常解決

異常信息

Caused by: java.lang.NoSuchMethodError: org.apache.hudi.org.apache.jetty.util.compression.DeflaterPool.ensurePool(Lorg/apache/hudi/org/apache/jetty/util/component/Container;)Lorg/apache/hudi/org/apache/jetty/util/compression/DeflaterPool;
at org.apache.hudi.org.apache.jetty.websocket.server.WebSocketServerFactory.<init>(WebSocketServerFactory.java:184) ~[hudi-flink1.14-bundle-0.13.0-SNAPSHOT.jar:0.13.0-SNAPSHOT]

異常原因,Hudi包中的jetty版本和hadoop環境下的jetty版本不一致,導致有沖突,相關PR:https://github.com/apache/hudi/pull/6844?,這個PR升級了jetty的版本。解決思路,使hadoop環境下的jetty版本和Hudi包中的版本一致。一個方法是使Flink任務不依賴Hadoop環境下的jetty相關的jar,這里是由于配置了HADOOP_CLASSPATH,經過嘗試一時無法解決。另外一個是升級Hadoop環境下的jetty版本,但是我嘗試了一下,由于Hadoop環境組件依賴的jar包比較多,單純升級jetty版本的話,會引起其他問題,無奈只能先將Hudi中jetty回退到原先的版本,最簡單的方式是直接reset到這個PR之前的位置。(先跑通Hudi HMS Catalog,后面有時間再解決依賴沖突問題)。

圖片

總結

本文介紹了Flink SQL如何通過Hudi HMS Catalog讀寫Hudi并同步Hive表,并且講述了Hudi HMS Catalog的好處,我認為這是目前比較完美的一種方式,強烈推薦大家使用。

責任編輯:武曉燕 來源: 倫少的博客
相關推薦

2022-11-01 07:43:30

2022-12-08 07:17:49

2022-10-28 07:10:51

HudiJavaHive

2021-08-31 10:07:16

Flink Hud數據湖阿里云

2023-02-26 00:12:10

Hadoop數據湖存儲

2024-04-26 07:36:42

Hudi 1.0數據湖倉數據查詢

2022-10-24 00:26:51

大數據Hadoop存儲層

2022-06-09 14:19:46

順豐數據集成Flink

2021-09-13 13:46:29

Apache HudiB 站數據湖

2013-09-16 16:20:55

自動備份Dropbox

2022-10-17 07:51:31

Hudi異常HDFS

2022-07-20 11:47:18

數據

2022-12-23 16:52:22

Lakehouse數據湖

2022-10-17 10:48:50

Hudi大數據Hadoop

2023-07-19 16:22:00

Hudi機器學習

2020-03-26 10:05:18

大數據IT互聯網

2021-09-13 14:19:03

HudiLakehouse阿里云

2022-06-08 13:25:51

數據

2021-01-06 10:36:55

MySQL數據庫Hive

2023-12-14 13:01:00

Hudivivo
點贊
收藏

51CTO技術棧公眾號

三级黄色录像视频| 亚洲福利精品视频| 欧美日韩免费做爰大片| 日韩成人免费电影| 欧美精品在线观看91| 99re这里只有| 欧美黄页在线免费观看| 亚洲制服丝袜一区| 少妇特黄a一区二区三区| 精品国产无码AV| 久久综合激情| 欧美激情欧美激情在线五月| 精品国产av无码| 日韩中文字幕无砖| 欧美日韩一区久久| jizzjizz国产精品喷水| 国产在线激情| 国产欧美日本一区二区三区| av一区二区三区四区电影| 亚洲大片免费观看| 亚洲国产黄色| 久色乳综合思思在线视频| 老司机福利av| 北条麻妃一区二区三区在线观看| 欧美亚洲国产一区在线观看网站| 水蜜桃色314在线观看| a视频在线播放| 日本一二三不卡| 欧美国产一区二区在线| 肥臀熟女一区二区三区| 国产一区二区三区日韩| 日韩av电影在线网| 亚洲精品午夜国产va久久成人| 欧美在线网站| 久久偷看各类女兵18女厕嘘嘘| 三上悠亚ssⅰn939无码播放| 玖玖玖免费嫩草在线影院一区| 91精品在线观看入口| 狠狠躁狠狠躁视频专区| 欧美黑人疯狂性受xxxxx野外| 精品久久久在线观看| 波多野结衣 作品| 成人福利网站| 18成人在线观看| 一区二区三区我不卡| 成人在线免费看| 国产精品视频在线看| 秋霞久久久久久一区二区| 免费在线一级视频| 久久中文娱乐网| 鲁丝片一区二区三区| 无码国精品一区二区免费蜜桃| 成人夜色视频网站在线观看| 成人在线观看av| 开心激情综合网| av一本久道久久综合久久鬼色| 99国产高清| 成人午夜免费福利| 99视频有精品| 蜜桃av久久久亚洲精品| 毛片免费在线观看| 国产无一区二区| 亚洲高清在线播放| 欧美性天天影视| 亚洲美女偷拍久久| 又大又硬又爽免费视频| 成人黄色动漫| 色婷婷av久久久久久久| 欧美午夜aaaaaa免费视频| 欧美风情在线视频| 日韩一区二区免费电影| 9.1在线观看免费| 亚洲第一福利社区| 中文字幕欧美国内| 亚洲欧美一区二区三区四区五区| 欧美色123| 欧美性视频精品| 中文字幕视频免费观看| 国产精品 日产精品 欧美精品| 国产成人亚洲欧美| 你懂的在线视频| 中文字幕一区二区三区在线观看 | 国产区精品在线| 国产美女av一区二区三区| 国产精品一区二区在线观看 | 超碰在线97观看| 国内精品不卡在线| 精品国产一区二区三区麻豆小说| 精品美女视频在线观看免费软件 | 综合色婷婷一区二区亚洲欧美国产| 中文字幕伦理免费在线视频 | 国产精品伦一区二区三级视频| 91免费视频黄| 性欧美18xxxhd| 69久久夜色精品国产69蝌蚪网| 深夜视频在线观看| 欧美在线电影| 久久理论片午夜琪琪电影网| 久久久久久久久久成人| 国产成人鲁色资源国产91色综| 欧美日韩高清免费| 日本伦理一区二区| 欧美调教femdomvk| 中文在线一区二区三区| 91视频综合| 欧美亚洲成人免费| 北条麻妃一二三区| 亚洲国产成人在线| 99爱视频在线| 日本免费一区二区三区视频| 亚洲性av在线| 奇米影视第四色777| 麻豆91精品91久久久的内涵| 精品无人区一区二区三区竹菊| 麻豆免费在线视频| 色94色欧美sute亚洲线路二| 亚洲一区二区三区四区av| 亚洲草久电影| 国产精品亚洲аv天堂网| 国产黄色av网站| 亚洲国产高清不卡| 91av在线免费播放| 清纯唯美亚洲经典中文字幕| 欧美高清视频免费观看| 91精品国产色综合久久不8| 久久久亚洲高清| 91免费黄视频| gogo人体一区| 九九热精品视频国产| 夜夜嗨aⅴ一区二区三区| 久久精品夜色噜噜亚洲a∨| 水蜜桃色314在线观看| 99这里只有精品视频| 久久成人在线视频| 97精品人妻一区二区三区在线| 久久久av毛片精品| 国产精品视频一区二区三区四区五区| gogo人体一区| 久久久久久久一| 亚洲成人中文字幕在线| 综合久久给合久久狠狠狠97色| 在线免费观看视频黄| 欧美最新另类人妖| 国产精品视频免费在线| 99精品老司机免费视频| 欧美片网站yy| 性欧美疯狂猛交69hd| 久久精品久久精品| 天天综合中文字幕| 国产色99精品9i| 久热99视频在线观看| 精品国产黄色片| 亚洲尤物在线视频观看| 国产亚洲精品成人a| 一区在线播放| 精品视频一区二区三区四区| 成人美女大片| 一区二区三区国产在线观看| 久久久久久久久久一级| 中文字幕亚洲成人| 波多野结衣免费观看| 亚洲午夜视频| 久久精品国产一区二区三区日韩| 依依综合在线| 在线国产精品视频| 国产麻豆免费观看| 亚洲国产一二三| 日本黄色免费观看| 日韩福利电影在线观看| 中文字幕一区二区三区乱码| 日韩欧美一级| 欧美亚洲激情在线| av在线电影网| 欧美电影精品一区二区| 国产一区二区99| 国产精品毛片久久久久久| 午夜av中文字幕| 亚洲激情av| 亚洲一区bb| 国产高清亚洲| 欧美在线观看网址综合| 天堂资源在线中文| 欧美精品一区在线观看| 波多野结衣理论片| 一区二区在线看| 黄色工厂在线观看| 极品少妇xxxx精品少妇偷拍| 日韩伦理在线免费观看| 大色综合视频网站在线播放| 97中文在线| 国产精品久久久久av电视剧| 另类专区欧美制服同性| 日本护士...精品国| 91精品免费在线| 久久久久99精品成人片三人毛片| 中文字幕精品在线不卡| 星空大象在线观看免费播放| 奇米影视一区二区三区小说| 中国丰满熟妇xxxx性| 秋霞欧美视频| 激情视频在线观看一区二区三区| 黄色精品视频| 97精品国产97久久久久久| 午夜小视频在线| 日韩精品中文字幕在线播放| 国产精品一区二区黑人巨大 | 免费男同深夜夜行网站| 午夜精品剧场| 一区二区日本伦理| 久久99免费视频| 国产一区二区免费在线观看| 日韩一级特黄| 国产91免费看片| av在线不卡免费| 中文字幕亚洲欧美日韩高清 | 这里只有精品在线播放| 视频二区在线观看| 日韩一区二区精品在线观看| 黄色污污视频软件| 欧美日韩国产一区中文午夜| 五月天av网站| 136国产福利精品导航| 亚洲色成人网站www永久四虎| 成人免费看黄yyy456| 亚洲自拍第三页| 久热成人在线视频| 91在线视频观看免费| 亚洲精品偷拍| 2019日韩中文字幕mv| 欧美成人69av| 日本老太婆做爰视频| 四季av一区二区凹凸精品| 日韩欧美视频一区二区| 一本久久青青| 久久久久网址| 台湾佬综合网| 国产亚洲福利社区| 福利电影一区| 国产精品视频福利| 精品一区二区男人吃奶| 国产精品国产亚洲精品看不卡15| 成人污版视频| 亚洲自拍偷拍在线| 久久伊人影院| 亚洲已满18点击进入在线看片 | 日韩av一级电影| 国产三级三级三级看三级| 丝袜国产日韩另类美女| 久久精品午夜福利| 日韩av网站免费在线| 中文字幕天天干| 久久精品国产一区二区三 | 国产精品2023| 激情视频一区二区| 免费看成人哺乳视频网站| 欧美日本亚洲| 日韩欧美一区二区三区在线视频| 五月天亚洲综合小说网| 国产精品久久天天影视| 国产高清免费在线| 国内一区二区三区| 一女被多男玩喷潮视频| 久久精品麻豆| 四季av一区二区三区| 国产麻豆精品久久一二三| 亚洲性图第一页| 97se亚洲国产综合在线| 自拍偷拍中文字幕| 国产精品欧美一级免费| 国产福利视频网站| 亚洲一卡二卡三卡四卡无卡久久| 日本熟妇乱子伦xxxx| 色一区在线观看| 国产一区二区三区在线观看| 精品久久久久香蕉网| 日本a一级在线免费播放| 色一区av在线| 手机av免费在线| 欧美一区二三区| 日韩成人一区| 国产专区一区二区三区| 欧美精品一区二区三区中文字幕 | 亚洲一区自拍| jizz大全欧美jizzcom| 国产成人精品综合在线观看| 无码国产69精品久久久久同性| 1000部国产精品成人观看| 日本三级欧美三级| 精品视频1区2区3区| 日韩一级片免费在线观看| 亚洲一级黄色av| 久草在线视频网站| 国产精品扒开腿做爽爽爽男男 | 这里只有精品66| 亚洲麻豆av| 一级做a爱视频| 久久精品免费在线观看| 久久久久久久久毛片| 在线中文字幕不卡| 老牛影视av牛牛影视av| 日韩中文字幕精品视频| a天堂资源在线| 91麻豆国产精品| 国产一区二区精品福利地址| 六月婷婷激情综合| 久久国产精品72免费观看| xxxx黄色片| 一区二区三区四区五区视频在线观看| 国产精品suv一区| 欧美精品一区在线观看| 激情视频在线观看| 国产精品久久久久久五月尺| 成人福利一区| 日本免费黄色小视频| 日本一不卡视频| 制服丝袜第二页| 亚洲高清视频在线| 国产熟女一区二区三区四区| 在线国产精品视频| 欧美大片免费高清观看| 精品国产乱码久久久久久蜜柚 | 91精品国产网站| 午夜久久av| 最新视频 - x88av| 美女在线观看视频一区二区| 伊人网在线视频观看| 欧美日韩午夜激情| 天堂av在线资源| 97超级碰在线看视频免费在线看| 亚洲性视频在线| 天堂а√在线中文在线| 激情丁香综合五月| 精品在线观看一区| 欧美亚洲禁片免费| jizz在线观看视频| 国产精品成熟老女人| 国产亚洲精品美女久久久久久久久久| 国产人妻777人伦精品hd| 成人午夜视频在线| 久久精品欧美一区二区| 精品三级在线看| 波多野在线观看| caoporen国产精品| 在线观看视频日韩| 亚洲少妇18p| 日韩欧美在线视频观看| 可以在线观看的av| 国产精品美女久久久免费| 精品国产乱码久久久| 五月婷婷丁香综合网| 中文子幕无线码一区tr | 亚洲国产精品成人精品| 美女在线视频免费| 日本一区二区三区四区在线观看| 日本在线不卡视频一二三区| 人人妻人人澡人人爽| 欧美日韩精品欧美日韩精品一综合| 触手亚洲一区二区三区| 成人xxxx视频| 午夜精品久久久久99热蜜桃导演 | 日韩高清国产一区在线| 久久只有这里有精品| 欧美性生活久久| 午夜免费福利在线观看| 91色p视频在线| 黄色日韩在线| 性久久久久久久久久| 欧美在线高清视频| 成人影院在线看| 国产伦精品一区二区三区照片| 国产欧美一级| 美女100%露胸无遮挡| 欧美精品777| 99re6在线精品视频免费播放| 久久99影院| 麻豆精品在线视频| 久久久久久久久精| 日韩精品中文字| 日韩三级一区| 国产精品久久久久9999爆乳| 国产欧美一区二区三区沐欲| 国产又黄又猛又爽| 91精品国产91久久久久福利| 国产剧情在线观看一区| 国产传媒免费观看| 午夜视频一区二区三区| 中文字幕在线免费| 官网99热精品| 久久精品国产成人一区二区三区| 久热这里只有精品在线| 亚洲精选在线观看| 麻豆国产一区| 久久人妻精品白浆国产| 亚洲欧美日韩国产综合| 性插视频在线观看| 亚洲自拍另类欧美丝袜| 天堂在线亚洲视频| 精品无码久久久久| 中文字幕免费精品一区高清| 欧美久久精品|