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

【大數(shù)據(jù)】Hive 小文件治理和 HDFS 數(shù)據(jù)平衡講解

大數(shù)據(jù) 數(shù)據(jù)分析
如果數(shù)據(jù)分布不均勻,會導致一些Reduce任務處理了完全不同的分區(qū),這會使某些Reduce任務的運行速度與其他Reduce任務相比非常慢。

一、Hive 小文件概述

在Hive中,所謂的小文件是指文件大小遠小于HDFS塊大小的文件,通常小于128 MB,甚至更少。這些小文件可能是Hive表的一部分,每個小文件都包含一個或幾個表的記錄,它們以文本格式存儲。

Hive通常用于分析大量數(shù)據(jù),但它在處理小文件方面表現(xiàn)不佳,Hive中存在大量小文件會引起以下問題:

  • 存儲空間占用過多:在Hadoop生態(tài)系統(tǒng)中,每個小文件都將占用一定的存儲空間,而且每個小文件也需要一個塊來存儲。如果存在大量的小文件,將浪費大量的存儲空間。
  • 處理延遲:小文件數(shù)量過多,會引起大量IO操作,導致處理延遲。
  • 查詢性能下降:小文件用于分區(qū)和表劃分,可能導致查詢延遲并降低查詢性能。此外,小文件還會增加元數(shù)據(jù)的數(shù)量,使得Hive在查詢元數(shù)據(jù)時變得更加緩慢。
  • 數(shù)據(jù)傾斜:如果數(shù)據(jù)分布不均勻,會導致一些Reduce任務處理了完全不同的分區(qū),這會使某些Reduce任務的運行速度與其他Reduce任務相比非常慢。

因此,為了避免這些問題,我們需要對Hive中小文件的處理進行優(yōu)化,減少小文件數(shù)量和大小,以提高數(shù)據(jù)處理效率和準確性。

圖片

二、Hive 小文件產(chǎn)生的背景

Hive中小文件產(chǎn)生的背景主要是因為以下兩個原因:

  • 數(shù)據(jù)寫入頻率較高:如果表的寫入頻率較高,也就意味著會頻繁地添加、更新或刪除記錄,這可能會導致小文件的產(chǎn)生。由于Hive表被映射到HDFS文件,因此如果頻繁地寫入數(shù)據(jù),它們可能以小文件的形式存在。
  • 映射表的切分限制:Hive表映射為HDFS文件時會按照數(shù)據(jù)塊大小進行切分和管理。如果表中存在小于單個數(shù)據(jù)塊大小的數(shù)據(jù),生成的文件就會比數(shù)據(jù)塊小。這可能會導致大量小文件的產(chǎn)生,

綜上所述,Hive中小文件的存在與數(shù)據(jù)寫入頻率高和表映射為HDFS文件的切分方式有關。為了處理小文件問題,我們需要了解這些背景并針對其原因來優(yōu)化處理。

三、環(huán)境準備

如果已經(jīng)有了環(huán)境了,可以忽略,如果想快速部署環(huán)境進行測試可以參考我這篇文章:通過 docker-compose 快速部署 Hive 詳細教程

# 登錄容器
docker exec -it hive-hiveserver2 bash
# 連接hive
beeline -u jdbc:hive2://hive-hiveserver2:10000  -n hadoop

四、Hive 小文件治理

為了處理Hive中的小文件問題,可以采取以下一些有效措施:

  • 文件合并:將多個小文件合并成一個大文件,采用 Hadoop 文件合并API可以將多個小文件合并成一個大文件。合并文件后,可以減少小文件數(shù)量,減少Hadoop文件管理負擔,減少HDFS元數(shù)據(jù)和NameNode內(nèi)存消耗。
  • 壓縮文件:可以使用壓縮算法(如gzip、bzip2等)對小文件進行壓縮,這樣可以減少磁盤空間和網(wǎng)絡帶寬的使用,并減少小文件損壞的可能性。
  • 存儲格式優(yōu)化:Hive支持多種存儲格式,如ORC、Parquet、Avro等。這些格式允許將多個小文件壓縮并序列化成一個大文件,存儲時占用更少的磁盤和網(wǎng)絡帶寬。存儲格式優(yōu)化對于處理小文件問題非常有效。
  • 分區(qū)表:對于一些常變動的數(shù)據(jù),推薦使用分區(qū)表。分區(qū)表將數(shù)據(jù)按照不同的分區(qū)值存儲在不同的目錄中。這減少了小文件數(shù)量并提高了查詢效率。
  • 垃圾回收:如果一個表舊數(shù)據(jù)經(jīng)常更新或刪除,就會產(chǎn)生大量無用的小文件,因此建議進行垃圾回收。可以定期執(zhí)行HDFS文件刪除命令或者設置TTL等機制,定期刪除冗余數(shù)據(jù)以減少HDFS文件、元數(shù)據(jù)和NameNode內(nèi)存的消耗。

通過采取上述措施中的一種或多種,可以極大地減少Hive中小文件數(shù)量,優(yōu)化Hive表的表現(xiàn)并提高查詢效率。

1)小文件合并(常用)

可以使用以下命令將 Hive 表中的小文件合并為一個大文件:

set hive.merge.size.per.task=256000000;
set hive.merge.smallfiles.avgsize=16000000;
set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;
set hive.merge.mapfiles=true;

# 未分區(qū)
INSERT OVERWRITE TABLE table_new SELECT * FROM table_old;

# 分區(qū)
INSERT OVERWRITE TABLE table_new SELECT column1,column2 FROM table_old where partitions;

上述代碼中的參數(shù)含義如下:

  • hive.merge.size.per.task:設置MapReduce任務處理的最大數(shù)據(jù)大小,單位是字節(jié),默認為256MB。
  • hive.merge.smallfiles.avgsize:設置如果小于該平均大小的文件需要合并在一起,以減小小文件的數(shù)量和規(guī)模,單位是字節(jié),默認為16MB。
  • hive.input.format:使用 CombinHiveInputFormat 作為輸入格式合并小文件。
  • hive.merge.mapfiles:合并Map文件(.mapred或.mapreduce)以減少小文件的數(shù)量。

1、示例演示一(非分區(qū)表)

# 非分區(qū)表
CREATE TABLE student (
  id INT,
  name STRING,
  age INT,
  address STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';

-- 添加數(shù)據(jù),這里多執(zhí)行幾次,會生成多個文件,方便下面文件合并實驗
INSERT INTO TABLE student VALUES (1, 'stu1', 15, 'add1'),(2, 'stu2', 16, 'add2'),(3, 'stu3', 17, 'add3');
-- 也可使用LOAD DATA LOCAL
LOAD DATA LOCAL INPATH './stu.txt' INTO TABLE student;

圖片

從上圖可看到已經(jīng)有很多小文件了,接下來就是進行合并了。執(zhí)行以下命令即可:

INSERT OVERWRITE TABLE student SELECT * FROM student;

圖片

已經(jīng)將多個文件合并成一個文件了,達到了小文件合并的效果了。

2、示例演示二(分區(qū)表)

其實用的多的還是按分區(qū)進行合并,一般表都是有分區(qū)的,按分區(qū)合并的好處就是減少讀寫壓力,數(shù)據(jù)量大的情況下分批合并是非常友好的。

# 分區(qū)表
CREATE TABLE student_patitions (
  id INT,
  name STRING,
  age INT,
  address STRING
)
PARTITIONED BY (year string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';

-- 開啟動態(tài)分區(qū),默認是false
set hive.exec.dynamic.partition=true;
-- 開啟允許所有分區(qū)都是動態(tài)的,否則必須要有靜態(tài)分區(qū)才能使用。
set hive.exec.dynamic.partition.mode=nostrick;
-- Hive默認情況下設置的最大動態(tài)分區(qū)創(chuàng)建數(shù)是100。
set hive.exec.max.dynamic.partitions=10000;

-- 添加數(shù)據(jù),這里多執(zhí)行幾次,會生成多個文件,方便下面文件合并實驗
INSERT INTO TABLE student_patitions PARTITION (year=2019) VALUES (1, 'stu1', 15, 'add1'),(2, 'stu2', 16, 'add2'),(3, 'stu3', 17, 'add3');

INSERT INTO TABLE student_patitions PARTITION (year=2023) VALUES (1, 'stu1', 15, 'add1'),(2, 'stu2', 16, 'add2'),(3, 'stu3', 17, 'add3');

-- 也可使用LOAD DATA LOCAL
LOAD DATA LOCAL INPATH './stu_pt.txt' INTO TABLE student_patitions PARTITION (year=2020);

圖片

從上圖可看到已經(jīng)有很多小文件了,接下來就是進行合并了。執(zhí)行以下命令即可:

-- 按分區(qū)合并
insert overwrite table student_patitions partition(year=2019)
select id, name, age, address from student_patitions where year=2019;

-- 動態(tài)分區(qū)合并,有些版本不支持*,
-- *
insert overwrite table student_patitions partition(year) select * from student_patitions;

-- insert overwrite table student_patitions partition(year) select id, name, age, address from student_patitions;

-- 也可以通過load data方式
load data local inpath './stu_pt.txt' overwrite into table student_patitions partition(year=2019);

圖片

3、示例演示三(臨時表)

還有一個更靠譜的方案就是通過將現(xiàn)有的表數(shù)據(jù)合并寫到另外一張臨時新表,然后確認合并無誤后,將原始表和表數(shù)據(jù)刪除,再將新表名改成舊表名。

示例如下:

-- 分區(qū)表
CREATE TABLE student_patitions2 (
  id INT,
  name STRING,
  age INT,
  address STRING
)
PARTITIONED BY (year string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';

-- 開啟動態(tài)分區(qū),默認是false
set hive.exec.dynamic.partition=true;
-- 開啟允許所有分區(qū)都是動態(tài)的,否則必須要有靜態(tài)分區(qū)才能使用。
set hive.exec.dynamic.partition.mode=nostrick;
-- Hive默認情況下設置的最大動態(tài)分區(qū)創(chuàng)建數(shù)是100。
set hive.exec.max.dynamic.partitions=10000;

-- 添加數(shù)據(jù),這里多執(zhí)行幾次,會生成多個文件,方便下面文件合并實驗
INSERT INTO TABLE student_patitions2  PARTITION (year=2019) VALUES (1, 'stu1', 15, 'add1'),(2, 'stu2', 16, 'add2'),(3, 'stu3', 17, 'add3');

INSERT INTO TABLE student_patitions2 PARTITION (year=2023) VALUES (1, 'stu1', 15, 'add1'),(2, 'stu2', 16, 'add2'),(3, 'stu3', 17, 'add3');

-- 也可使用LOAD DATA LOCAL
LOAD DATA LOCAL INPATH './stu_pt.txt' INTO TABLE student_patitions2 PARTITION (year=2020);

創(chuàng)建臨時表并將添加合并數(shù)據(jù)

CREATE TABLE student_patitions2_temp (
  id INT,
  name STRING,
  age INT,
  address STRING
)
PARTITIONED BY (year string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';

-- 按分區(qū)合并,有些版本不支持*
insert overwrite table student_patitions2_temp partition(year)
select * from student_patitions2;
-- insert overwrite table student_patitions2_temp partition(year) select id, name, age, address from student_patitions2;

-- 也可以通過load data方式
load data local inpath './stu_pt.txt' overwrite into table student_patitions2_temp partition(year=2019);

刪除舊表,修改表表名稱

# 刪表,如果是外部表還是刪除數(shù)據(jù)文件
DROP TABLE student_patitions2;

ALTER TABLE student_patitions2_temp RENAME TO student_patitions2;

2)文件壓縮

可以使用以下命令將表中的小文件進行壓縮:

SET hive.exec.compress.output=true;
SET mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;

INSERT OVERWRITE TABLE table_new SELECT * FROM table_old;

3)存儲格式優(yōu)化

使用存儲格式進行優(yōu)化,可以將多個小文件壓縮和序列化成一個大文件。以下是使用ORC格式的實現(xiàn)示例:

SET hive.exec.compress.output=true;
SET orc.compress=SNAPPY;
SET hive.exec.orc.default.compress=SNAPPY;

CREATE TABLE table_new STORED AS ORC AS SELECT * FROM table_old;

上述代碼中的參數(shù)含義如下:

  • hive.exec.compress.output:指定是否開啟壓縮,如果啟用則會對輸出進行壓縮,以節(jié)省存儲空間和網(wǎng)絡帶寬。
  • orc.compress:設置壓縮算法,這里使用SNAPPY。
  • hive.exec.orc.default.compress:設置ORC文件默認壓縮算法,這里使用SNAPPY。

4)分區(qū)表

可以使用以下SQL語句創(chuàng)建分區(qū)表:

CREATE TABLE table_new(
    column1 INT,
    column2 STRING
)
PARTITIONED BY (
    day STRING
) 
ROW FORMAT DELIMITED 
STORED AS TEXTFILE;

這里將表按照分區(qū)值進行存儲,可以提高查詢效率,減少小文件數(shù)量。

5)垃圾回收

刪除HDFS中過期的小文件可以減少 HDFS 的存儲開銷。

可以使用如下命令進行刪除操作:

hdfs dfs -rm /path/to/file-*

也可以使用 HiveQL 參數(shù) EXPIRE 進行垃圾回收,以將無用的文件從HDFS中刪除:

ALTER TABLE table_old DROP PARTITION (day '2016-01-01') PURGE;

上述代碼中將刪除舊的分區(qū)并從HDFS中永久刪除不再需要的數(shù)據(jù)。

綜上所述,可以通過上述方式來處理Hive中小文件問題,以提高Hive的查詢效率和性能。

五、HDFS 數(shù)據(jù)平衡

1)HDFS 數(shù)據(jù)傾斜

HDFS數(shù)據(jù)傾斜是指存在一些數(shù)據(jù)塊的大小明顯大于其他數(shù)據(jù)塊,導致作業(yè)在運行時的處理時間和性能嚴重不平衡。這通常是由于數(shù)據(jù)分布不均勻,或者任務負載不均勻?qū)е碌摹ive的MapReduce作業(yè)經(jīng)常面臨HDFS數(shù)據(jù)傾斜的問題,這會導致一部分Mapper處理的數(shù)據(jù)量很大,而其他Mapper卻沒有得到充分利用。

以下是一些緩解HDFS數(shù)據(jù)傾斜的方法:

  • 增大文件塊大小:如果您的作業(yè)經(jīng)常面臨數(shù)據(jù)傾斜問題,可以嘗試增大數(shù)據(jù)塊的大小。這樣可以降低Mapper需要處理的數(shù)據(jù)塊數(shù)量,從而減少數(shù)據(jù)塊分配不均衡的可能性。
  • 數(shù)據(jù)合并:如果您的作業(yè)中存在大量較小的文件,可以嘗試將它們合并為幾個較大的文件。這樣可以減少地圖任務的數(shù)目,并有助于均衡任務的負載。
  • 數(shù)據(jù)重分區(qū):如果在您的作業(yè)中數(shù)據(jù)分布極不均勻,可以嘗試使用數(shù)據(jù)重分區(qū)(例如Hive中的 CLUSTER BY 或 DISTRIBUTE BY 語句)來重新組織數(shù)據(jù)。這可以幫助將相似的數(shù)據(jù)放在同一個分區(qū)中,從而減少數(shù)據(jù)傾斜的可能性。
  • 動態(tài)分區(qū):在Hive中,動態(tài)分區(qū)可用于根據(jù)數(shù)據(jù)中實際的分區(qū)鍵動態(tài)創(chuàng)建分區(qū)。它可以使用較小的數(shù)據(jù)塊大小來提高作業(yè)的并行性。動態(tài)分區(qū)還可以通過確保數(shù)據(jù)分配均衡來緩解數(shù)據(jù)傾斜的問題。
  • 壓縮:使用壓縮技術可以減小數(shù)據(jù)塊大小,并減少傾斜問題的可能性。常用的壓縮格式包括Gzip、Snappy、LZO等。

HDFS數(shù)據(jù)傾斜不僅可能出現(xiàn)在數(shù)據(jù)塊的大小上,還可能出現(xiàn)在數(shù)據(jù)節(jié)點(Datanode)的負載上。如果一個Datanode存儲的數(shù)據(jù)塊遠遠多于其他Datanode,那么它處理作業(yè)時的負載將遠高于其他節(jié)點,從而導致整個集群性能下降。下面是一些緩解HDFS數(shù)據(jù)節(jié)點傾斜問題的方法:

  • 增加節(jié)點:可以向集群中添加更多的節(jié)點,以增加存儲能力。這樣可以分散節(jié)點的負載,避免單個節(jié)點負載過高。盡管這樣做可能會增加集群的維護成本,但它可以提高集群的性能和可靠性。一般增加完新節(jié)點需要做數(shù)據(jù)平衡,要不然新節(jié)點磁盤使用率遠低于其它節(jié)點的磁盤。
  • 均衡數(shù)據(jù)分布:您可以使用HDFS中的均衡命令(hdfs balancer)來均衡數(shù)據(jù)分布。該命令將根據(jù)需要將塊移動到不同的節(jié)點,以保持所有節(jié)點的負載相對均衡。
  • 更改塊大小:當塊大小不均衡時,您可以嘗試根據(jù)每個節(jié)點的存儲容量增加或減少塊大小,以確保每個節(jié)點的負載相對均衡。例如,如果一個節(jié)點存儲大量的小文件,則可以將塊大小增加到更適合這種情況的大小(例如512MB或1GB),以減少每個節(jié)點的塊數(shù)。
  • 數(shù)據(jù)遷移:如果一個節(jié)點負載過高,您可以從該節(jié)點中移動一些塊到其他節(jié)點中,以減輕該節(jié)點的負載。這可以通過將塊從一個節(jié)點復制到另一個節(jié)點來實現(xiàn)。需要注意的是,這樣做可能會影響作業(yè)的性能,因此建議在維護合適的性能的同時進行數(shù)據(jù)遷移。

需要注意的是,緩解HDFS數(shù)據(jù)節(jié)點傾斜問題需要綜合考慮多種因素,包括數(shù)據(jù)分布、集群規(guī)模、硬件配置等。根據(jù)具體情況,您可以采取不同的措施來緩解數(shù)據(jù)節(jié)點傾斜的問題。

2)HDFS 數(shù)據(jù)平衡

HDFS提供了 hdfs balancer 命令來進行數(shù)據(jù)平衡呢。hdfs balancer命令可以讓HDFS集群重新均衡分布數(shù)據(jù)塊,保證HDFS集群中數(shù)據(jù)塊在各個節(jié)點上均衡分布。

hdfs balancer 命令的語法如下:

hdfs balancer -help
Usage: java Balancer
    [-policy <policy>]    the balancing policy: datanode or blockpool
    [-threshold <threshold>]    Percentage of disk capacity
    [-exclude [-f <hosts-file> | comma-sperated list of hosts]]    Excludes the specified datanodes.
    [-include [-f <hosts-file> | comma-sperated list of hosts]]    Includes only the specified datanodes.

參數(shù)詳解:

  • -threshold:某datanode的使用率和整個集群使用率的百分比差值閾值,達到這個閾值就啟動hdfs balancer,取值從1到100,不宜太小,因為在平衡過程中也有數(shù)據(jù)寫入,太小無法達到平衡,默認值:10
  • -policy:分為blockpool和datanode,前者是block pool級別的平衡后者是datanode級別的平衡,BlockPool 策略平衡了塊池級別和 DataNode 級別的存儲。BlockPool 策略僅適用于 Federated HDFS 服務
  • -exclude:不為空,則不在這些機器上進行平衡
  • -include:不為空,則僅在這些機器上進行平衡-idleiterations:最大迭代次數(shù)

另外還有兩個常用的參數(shù):

  • dfs.datanode.balance.bandwidthPerSec :HDFS做均衡時使用的最大帶寬,默認為1048576,即1MB/s,對大多數(shù)千兆甚至萬兆帶寬的集群來說過小。不過該值可以在啟動balancer腳本時再設置,可以不修改集群層面默認值。目前目前我們產(chǎn)線環(huán)境設置的是50M/s~100M/s。
  • dfs.balancer.block-move.timeout:是一個Hadoop數(shù)據(jù)平衡命令hdfs balancer的選項之一,用于設置數(shù)據(jù)塊移動的最長時間。該選項指定了塊移動操作在多長時間內(nèi)必須完成。該選項默認值為120000毫秒(即2分鐘),可以通過以下命令進行修改:

簡單使用:

# 啟動數(shù)據(jù)平衡,默認閾值為 10%
hdfs balancer

# 默認相差值為10% 帶寬速率為10M/s,超時時間10分鐘,過程信息會直接打印在客戶端 ctrl+c即可中止
hdfs balancer -Ddfs.balancer.block-move.timeout=600000 

#可以手動設置相差值 一般相差值越小 需要平衡的時間就越長,//設置為20% 這個參數(shù)本身就是百分比 不用帶%
hdfs balancer -threshold 20

#如果怕影響業(yè)務可以動態(tài)設置一下帶寬再執(zhí)行上述命令,1M/s
hdfs dfsadmin -setBalancerBandwidth 1048576

#或者直接帶參運行,帶寬為1M/s
hdfs balancer -Ddfs.datanode.balance.bandwidthPerSec=1048576 -Ddfs.balancer.block-move.timeout=600000

責任編輯:武曉燕 來源: 大數(shù)據(jù)與云原生技術分享
相關推薦

2023-05-06 07:15:59

Hive內(nèi)置函數(shù)工具

2023-06-08 07:34:19

HDFS小文件壓縮包

2023-05-06 07:20:27

HiveDDL管理表

2023-05-03 22:09:02

Hive分區(qū)工具,

2021-08-31 22:49:50

大數(shù)據(jù)互聯(lián)網(wǎng)技術

2024-04-09 10:58:11

大數(shù)據(jù)人工智能GenAI

2016-08-12 00:04:44

大數(shù)據(jù)交通

2023-05-09 07:46:32

2021-09-30 16:28:34

大數(shù)據(jù)數(shù)據(jù)管理企業(yè)

2017-12-21 11:19:40

SparkHive表HadoopRDD

2017-06-12 10:31:54

大數(shù)據(jù)智慧法院人民法院

2024-01-11 08:15:52

大數(shù)據(jù)成本治理Hadoop

2024-04-22 07:56:32

數(shù)據(jù)倉庫數(shù)據(jù)中臺數(shù)據(jù)服務

2017-07-03 13:53:17

大數(shù)據(jù)大數(shù)據(jù)平臺數(shù)據(jù)治理

2024-03-26 06:46:52

大數(shù)據(jù)數(shù)據(jù)治理大數(shù)據(jù)資產(chǎn)治理

2020-11-03 10:16:24

Hive數(shù)據(jù)傾斜Hive SQL

2021-06-10 19:10:32

大數(shù)據(jù)大數(shù)據(jù)應用大數(shù)據(jù)技術

2017-05-14 15:50:01

大數(shù)據(jù)交通擁堵智能化

2020-01-09 10:47:15

HDFS數(shù)據(jù)文件

2021-04-14 09:04:03

大數(shù)據(jù)HDFS大數(shù)據(jù)開發(fā)
點贊
收藏

51CTO技術棧公眾號

久久91亚洲精品中文字幕| 欧美日韩精品一区二区三区蜜桃| 国产综合av一区二区三区| 91美女免费看| 久久久久蜜桃| 亚洲国产精品一区二区三区| 国产免费一区二区三区视频| 日本视频在线播放| 99久久99久久久精品齐齐| 国产精品久久久久秋霞鲁丝 | 久久精品在这里| 91精品久久久久| 国产成人精品一区二三区| 91亚洲国产| 日韩精品久久久久久福利| 精品久久久99| 第四色男人最爱上成人网| 亚洲激情第一区| 一区二区三区偷拍| 激情小说 在线视频| 成人国产精品免费观看视频| 成人精品一区二区三区电影黑人| 国产www在线| 激情偷拍久久| 欧美成人激情图片网| 国产精久久一区二区三区| 国产精品乱战久久久| 制服丝袜中文字幕亚洲| 爱情岛论坛成人| 二区三区不卡| 午夜电影久久久| 国产黄色激情视频| 在线看三级电影| 中文字幕一区视频| 视频一区国产精品| 精品福利视频导航大全| 91在线porny国产在线看| 99视频国产精品免费观看| 国产精品无码免费播放| 久久66热re国产| 国产精品香蕉在线观看| 不卡av电影在线| 丝袜亚洲另类丝袜在线| 97在线视频观看| 国产精品99精品| 国产精品a级| 九九精品在线视频| 日本黄色小说视频| 午夜日本精品| 欧美激情第99页| 看片网站在线观看| 欧美精品观看| 国内精品久久久久影院优| 九九视频在线免费观看| 欧美三级乱码| 欧美风情在线观看| 国产性生活网站| 亚洲精品1区2区| 91精品国产91久久久久久久久 | 7777精品伊人久久久大香线蕉 | 九一国产精品视频| bbw在线视频| 欧美日韩国产一区在线| 成人观看免费完整观看| 亚洲AV无码国产成人久久| 99精品在线免费观看| 欧美剧在线免费观看网站| 天天干天天玩天天操| 99久久久国产| 精品女同一区二区| 性久久久久久久久久久| 亚洲婷婷伊人| 日韩视频中文字幕| 美国精品一区二区| 午夜精品影院| 日本欧美一级片| 91精品国产乱码久久| 国产成人av资源| 久精品国产欧美| 97超碰国产一区二区三区| 成人免费在线观看入口| 免费在线黄网站| 欧洲一区二区三区精品| 欧美精品少妇一区二区三区| 免费欧美一级片| 亚洲涩涩av| 免费av在线一区| 中文字幕视频网站| 精品无人区卡一卡二卡三乱码免费卡 | 欧美成人在线免费观看| 午夜不卡视频| 午夜精品一区二区三区电影天堂| 免费日韩中文字幕| 欧美9999| 国产亚洲精品久久久久久777| 欧美爱爱免费视频| 亚洲欧美日韩在线观看a三区| 国产精品视频色| 日本黄色三级视频| 中文字幕在线免费不卡| 欧美亚洲国产成人| 精品91福利视频| 亚洲欧美制服第一页| 波多野结衣在线网址| 亚洲永久视频| 99视频网站| 五月婷婷在线视频| 欧美日韩亚洲系列| 精品人妻无码中文字幕18禁| 国产剧情一区| 97精品一区二区三区| 国产免费不卡av| 国产欧美一区二区精品婷婷| 国产 欧美 日韩 一区| 日本久久一区| 亚洲欧美另类国产| 在线观看 中文字幕| 国产曰批免费观看久久久| 欧美韩国日本精品一区二区三区| 色综合999| 欧美肥胖老妇做爰| 日韩影视一区二区三区| 国产毛片久久| 国产伦精品一区二区三区免| 91三级在线| 8x8x8国产精品| 日本一级免费视频| 西西人体一区二区| 久久大香伊蕉在人线观看热2| 在线看三级电影| 欧美一区二区三区日韩视频| 中文字幕第24页| 丝袜亚洲另类欧美综合| 欧美久久在线| 男人最爱成人网| 日韩成人黄色av| 青青操免费在线视频| 粉嫩aⅴ一区二区三区四区五区| 中文字幕一区二区三区最新| 久久人人视频| www日韩欧美| 一级特黄色大片| 日韩理论片一区二区| 成人性生交免费看| 99精品在线观看| 成人亚洲激情网| 精品国产99久久久久久| 欧美高清视频在线高清观看mv色露露十八 | 日本在线一区二区| 色婷婷综合成人av| 国产精品毛片一区视频播| **网站欧美大片在线观看| 天堂av2020| 欧美日韩三级| 国产精品二区在线| 国产传媒在线| 亚洲人av在线影院| www.五月婷婷.com| 国产精品家庭影院| 在线视频日韩欧美| 国产精品videosex极品| 国产精品三区www17con| 女人高潮被爽到呻吟在线观看| 日韩精品视频在线播放| 亚洲另类在线观看| 欧美极品xxx| xxx中文字幕| 9国产精品视频| 日本亚洲自拍| 不卡一区视频| 欧美精品videos| 日本大臀精品| 欧美日韩成人综合在线一区二区| 老妇女50岁三级| 97久久精品人人澡人人爽| 日本爱爱免费视频| 在线中文字幕第一区| 精品伦精品一区二区三区视频| 欧美韩国亚洲| 久久99热精品| 秋霞av在线| 欧美日韩大陆一区二区| 国产无遮无挡120秒| 国产三区在线成人av| 日韩va在线观看| 亚洲一区亚洲| 无码人妻精品一区二区三区99v| 国产精品男女| 国产在线98福利播放视频| wwwwxxxx在线观看| 伊人一区二区三区久久精品| 国产成人麻豆精品午夜在线| 黑人极品videos精品欧美裸| 911国产在线| 91浏览器在线视频| 亚洲男人天堂2021| 三级亚洲高清视频| 欧美这里只有精品| 999成人网| 久久免费看av| 亚洲精品观看| 国产日本欧美一区二区三区| av电影院在线看| xxxx性欧美| 欧美另类自拍| 亚洲а∨天堂久久精品喷水| 中文字幕+乱码+中文乱码www| 亚洲成人免费视| 久草综合在线视频| 亚洲国产精品黑人久久久| 午夜男人的天堂| 国产一区三区三区| 日韩爱爱小视频| 久久国产精品久久久久久电车| av久久久久久| 亚洲国产精品成人| 天天好比中文综合网| 奇米影视777在线欧美电影观看| 91久久久久久久| 成人黄页网站视频| 国产va免费精品高清在线| 成人福利影视| 久久6精品影院| 成人福利在线观看视频| 中文字幕最新精品| 91免费在线| 一区二区欧美在线| 黄色大片在线免费观看| 精品视频久久久久久久| 六月婷婷中文字幕| 欧美精品一区二区三区很污很色的| 国产精品特级毛片一区二区三区| 欧美网站大全在线观看| 国产无遮挡又黄又爽又色视频| 精品日韩视频在线观看| 日韩精品久久久久久久| 午夜精品免费在线观看| 久久在线视频精品| 亚洲成av人片www| 精国产品一区二区三区a片| 亚洲三级在线免费观看| 国产一区二区视频在线观看免费| 最新不卡av在线| 国产色无码精品视频国产| 国产精品国产自产拍高清av| 国产aaaaaaaaa| 自拍偷拍国产精品| 青青青在线视频| 亚洲国产精品自拍| 91蜜桃视频在线观看| 精品欧美aⅴ在线网站| 偷偷操不一样的久久| 欧美视频精品一区| av手机天堂网| 欧美另类一区二区三区| 国产又大又黑又粗| 欧美成人福利视频| 午夜视频在线播放| 国产亚洲免费的视频看| 日本亚洲精品| 欧美精品电影在线| 欧美大胆成人| 成人黄色av网站| 成人精品动漫一区二区三区| 韩国一区二区三区美女美女秀| 亚洲精品白浆高清| 日韩欧美第二区在线观看| 999精品视频| 超碰成人免费在线| 久久五月激情| 亚洲综合在线一区二区| 成人av影院在线| 亚洲久久久久久久| 亚洲精品国产精品乱码不99| 日韩精品一区二区av| 欧美午夜在线一二页| 国产白浆在线观看| 亚洲欧美国产精品久久久久久久 | 午夜精品视频一区二区三区在线看| 九九久久九九久久| 性xx色xx综合久久久xx| 亚洲一区日韩精品| av一区二区三区在线| 懂色av粉嫩av浪潮av| 亚洲线精品一区二区三区八戒| 国产精品suv一区| 在线综合+亚洲+欧美中文字幕| 日批免费在线观看| 北条麻妃一区二区三区中文字幕| free性护士videos欧美| 国产欧美日韩中文字幕| 成人直播在线观看| 伊人色综合影院| 亚洲少妇一区| 国产一级片中文字幕| 久久久久国产一区二区三区四区 | 黄色精品在线看| 中文字幕日韩国产| 欧美成人女星排名| jzzjzzjzz亚洲成熟少妇| 久久久久久久色| 四虎国产精品免费久久| 精品在线观看一区二区| 中文字幕午夜精品一区二区三区 | 亚洲av成人无码久久精品| 国产日韩一级二级三级| 久久中文字幕无码| 欧美精品久久天天躁| 麻豆导航在线观看| 色综合久综合久久综合久鬼88| 日韩经典一区| 精品免费一区二区三区蜜桃| 99久久99久久精品国产片果冰| 少妇性饥渴无码a区免费| 成人精品视频网站| 日本精品人妻无码77777| 欧美综合欧美视频| 视频国产在线观看| 高清欧美电影在线| 91麻豆精品国产91久久久久推荐资源| 一级做a爰片久久| 日本成人在线一区| 99久久久无码国产精品性| 精品国产鲁一鲁一区二区张丽| av加勒比在线| 欧美精品手机在线| 久久国产精品美女| 美国av在线播放| 久久99国产精品久久| 亚洲色图 激情小说| 91福利区一区二区三区| 男女网站在线观看| 欧美一级片久久久久久久| 老司机成人在线| 成人在线免费观看av| 91香蕉国产在线观看软件| 中文字幕一区二区三区手机版| 精品福利av导航| 91黄页在线观看| 精品视频一区在线| 中文高清一区| 日本黄色片在线播放| 欧美小视频在线| 精品无吗乱吗av国产爱色| 日本午夜在线亚洲.国产| 一道本一区二区三区| 中文字幕欧美人妻精品一区| 国产欧美一区二区三区在线老狼| 中文字幕在线播放av| 精品国产一区久久久| 成人51免费| 国产aaa免费视频| 91香蕉视频污| 中文字幕二区三区| 日韩在线观看av| 视频一区视频二区欧美| 日韩欧美不卡在线| 久久久久久亚洲综合| 亚洲中文无码av在线| 超碰97人人做人人爱少妇| 香蕉大人久久国产成人av| 免费拍拍拍网站| 国产亚洲精品超碰| 97超碰资源站| 久久露脸国产精品| 国产精品日韩精品中文字幕| 中文字幕 91| 亚洲最新在线观看| 男人的天堂av高清在线| 国产精品自拍网| 尤物在线精品| 欧美大波大乳巨大乳| 91精品国产91久久综合桃花| 成年网站在线视频网站| 日本一区免费在线观看| 国内精品伊人久久久久av一坑| 日产精品久久久久久久| 中文字幕免费国产精品| 亚洲小说春色综合另类电影| 精品一区二区中文字幕| 亚洲欧洲www| 日本激情一区二区| 国产精品影院在线观看| 亚洲精品偷拍| 成人一级片免费看| 亚洲高清av在线| 色猫猫成人app| 久久精品无码中文字幕| 欧美国产精品中文字幕| 亚洲精品久久久蜜桃动漫| 国产精品久久久久久久久久久久久久 | 亚洲乱码国产乱码精品| 按摩亚洲人久久| 羞羞答答一区二区| 搡的我好爽在线观看免费视频| 日韩欧美中文字幕在线观看 | 97视频免费在线观看| 亚洲成av人片一区二区密柚| 性欧美丰满熟妇xxxx性久久久| 7777精品伊人久久久大香线蕉完整版|