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

超實用的Spark數(shù)據(jù)傾斜解決姿勢,學(xué)起來!

大數(shù)據(jù) Spark
本文將結(jié)合實例詳細(xì)闡明Spark數(shù)據(jù)傾斜(Data Skew)的幾種場景及對應(yīng)的解決方案,包括避免數(shù)據(jù)源傾斜、調(diào)整并行度、使用自定義Partitioner、使用Map側(cè)Join代替Reduce側(cè)Join、給傾斜Key加上隨機前綴等。

[[201369]]

本文將結(jié)合實例詳細(xì)闡明Spark數(shù)據(jù)傾斜(Data Skew)的幾種場景及對應(yīng)的解決方案,包括避免數(shù)據(jù)源傾斜、調(diào)整并行度、使用自定義Partitioner、使用Map側(cè)Join代替Reduce側(cè)Join、給傾斜Key加上隨機前綴等。

一、為何要處理數(shù)據(jù)傾斜

1、什么是數(shù)據(jù)傾斜

對Spark/Hadoop這樣的大數(shù)據(jù)系統(tǒng)來講,數(shù)據(jù)量大并不可怕,可怕的是數(shù)據(jù)傾斜。

那何謂數(shù)據(jù)傾斜?數(shù)據(jù)傾斜指的是并行處理的數(shù)據(jù)集中,某一部分(如Spark或Kafka的一個Partition)的數(shù)據(jù)顯著多于其它部分,從而使得該部分的處理速度成為整個數(shù)據(jù)集處理的瓶頸。

2、數(shù)據(jù)傾斜是如何造成的

在Spark中,同一個Stage的不同Partition可以并行處理,而具有依賴關(guān)系的不同Stage之間是串行處理的。假設(shè)某個Spark Job分為Stage 0和Stage 1兩個Stage,且Stage 1依賴于Stage 0,那Stage 0完全處理結(jié)束之前不會處理Stage 1。而Stage 0可能包含N個Task,這N個Task可以并行進行。如果其中N-1個Task都在10秒內(nèi)完成,而另外一個Task卻耗時1分鐘,那該Stage的總時間至少為1分鐘。換句話說,一個Stage所耗費的時間,主要由最慢的那個Task決定。

由于同一個Stage內(nèi)的所有Task執(zhí)行相同的計算,在排除不同計算節(jié)點計算能力差異的前提下,不同Task之間耗時的差異主要由該Task所處理的數(shù)據(jù)量決定。

Stage的數(shù)據(jù)來源主要分為如下兩類:

  • 從數(shù)據(jù)源直接讀取,如讀取HDFS、Kafka
  • 讀取上一個Stage的Shuffle數(shù)據(jù)

二、如何緩解/消除數(shù)據(jù)傾斜

1、盡量避免數(shù)據(jù)源的數(shù)據(jù)傾斜

以Spark Stream通過DirectStream方式讀取Kafka數(shù)據(jù)為例。由于Kafka的每一個Partition對應(yīng)Spark的一個Task(Partition),所以Kafka內(nèi)相關(guān)Topic的各Partition之間數(shù)據(jù)是否平衡,直接決定Spark處理該數(shù)據(jù)時是否會產(chǎn)生數(shù)據(jù)傾斜。

Kafka某一Topic內(nèi)消息在不同Partition之間的分布,主要由Producer端所使用的Partition實現(xiàn)類決定。如果使用隨機Partitioner,則每條消息會隨機發(fā)送到一個Partition中,那么從概率上來講,各Partition間的數(shù)據(jù)會達到平衡。此時源Stage(直接讀取Kafka數(shù)據(jù)的Stage)不會產(chǎn)生數(shù)據(jù)傾斜。

但很多時候,業(yè)務(wù)場景可能會要求將具備同一特征的數(shù)據(jù)順序消費,此時就需要將具有相同特征的數(shù)據(jù)放于同一個Partition中。一個典型的場景是,需要將同一個用戶相關(guān)的PV信息置于同一個Partition中。此時,如果產(chǎn)生了數(shù)據(jù)傾斜,則需要通過其它方式處理。

2、調(diào)整并行度分散同一個Task的不同Key

原理

Spark在做Shuffle時,默認(rèn)使用HashPartitioner(非Hash Shuffle)對數(shù)據(jù)進行分區(qū)。如果并行度設(shè)置得不合適,可能造成大量不相同的Key對應(yīng)的數(shù)據(jù)被分配到了同一個Task上,造成該Task所處理的數(shù)據(jù)遠大于其它Task,從而造成數(shù)據(jù)傾斜。

如果調(diào)整Shuffle時的并行度,使得原本被分配到同一Task的不同Key發(fā)配到不同Task上處理,則可降低原Task所需處理的數(shù)據(jù)量,從而緩解數(shù)據(jù)傾斜問題造成的短板效應(yīng)

 

案例

現(xiàn)有一張測試表,名為student_external,內(nèi)有10.5億條數(shù)據(jù),每條數(shù)據(jù)有一個唯一的id值。現(xiàn)從中取出id取值為9億到10.5億的共1.5億條數(shù)據(jù),并通過一些處理,使得id為9億到9.4億間的所有數(shù)據(jù)對12取模后余數(shù)為8(即在Shuffle并行度為12時該數(shù)據(jù)集全部被HashPartition分配到第8個Task),其它數(shù)據(jù)集對其id除以100取整,從而使得id大于9.4億的數(shù)據(jù)在Shuffle時可被均勻分配到所有Task中,而id小于9.4億的數(shù)據(jù)全部分配到同一個Task中。

處理過程如下:

通過上述處理,一份可能造成后續(xù)數(shù)據(jù)傾斜的測試數(shù)據(jù)即以準(zhǔn)備好。接下來,使用Spark讀取該測試數(shù)據(jù),并通過groupByKey(12)對id分組處理,且Shuffle并行度為12。代碼如下:

本次實驗所使用集群節(jié)點數(shù)為4,每個節(jié)點可被Yarn使用的CPU核數(shù)為16,內(nèi)存為16GB。使用如下方式提交上述應(yīng)用,將啟動4個Executor,每個Executor可使用核數(shù)為12(該配置并非生產(chǎn)環(huán)境下的***配置,僅用于本文實驗),可用內(nèi)存為12GB。

  1. spark-submit --queue ambari --num-executors 4 --executor-cores 12 --executor-memory 12g --class com.jasongj.spark.driver.SparkDataSkew --master yarn --deploy-mode client SparkExample-with-dependencies-1.0.jar 

GroupBy Stage的Task狀態(tài)如下圖所示,Task 8處理的記錄數(shù)為4500萬,遠大于(9倍于)其它11個Task處理的500萬記錄。而Task 8所耗費的時間為38秒,遠高于其它11個Task的平均時間(16秒)。整個Stage的時間也為38秒,該時間主要由最慢的Task 8決定。

在這種情況下,可以通過調(diào)整Shuffle并行度,使得原來被分配到同一個Task(即該例中的Task 8)的不同Key分配到不同Task,從而降低Task 8所需處理的數(shù)據(jù)量,緩解數(shù)據(jù)傾斜。

通過groupByKey(48)將Shuffle并行度調(diào)整為48,重新提交到Spark。新的Job的GroupBy Stage所有Task狀態(tài)如下圖所示。

從上圖可知,記錄數(shù)最多的Task 20處理的記錄數(shù)約為1125萬,相比于并行度為12時Task 8的4500萬,降低了75%左右,而其耗時從原來Task 8的38秒降到了24秒。

在這種場景下,調(diào)整并行度,并不意味著一定要增加并行度,也可能是減小并行度。如果通過groupByKey(11)將Shuffle并行度調(diào)整為11,重新提交到Spark。新Job的GroupBy Stage的所有Task狀態(tài)如下圖所示。

從上圖可見,處理記錄數(shù)最多的Task 6所處理的記錄數(shù)約為1045萬,耗時為23秒。處理記錄數(shù)最少的Task 1處理的記錄數(shù)約為545萬,耗時12秒。

小結(jié)

適用場景:

大量不同的Key被分配到了相同的Task造成該Task數(shù)據(jù)量過大。

解決方案:

調(diào)整并行度。一般是增大并行度,但有時如本例減小并行度也可達到效果。

優(yōu)勢:

實現(xiàn)簡單,可在需要Shuffle的操作算子上直接設(shè)置并行度或者使用spark.default.parallelism設(shè)置。如果是Spark SQL,還可通過SET spark.sql.shuffle.partitions=[num_tasks]設(shè)置并行度。可用最小的代價解決問題。一般如果出現(xiàn)數(shù)據(jù)傾斜,都可以通過這種方法先試驗幾次,如果問題未解決,再嘗試其它方法。

劣勢:

適用場景少,只能將分配到同一Task的不同Key分散開,但對于同一Key傾斜嚴(yán)重的情況該方法并不適用。并且該方法一般只能緩解數(shù)據(jù)傾斜,沒有徹底消除問題。從實踐經(jīng)驗來看,其效果一般。

3、自定義Partitioner

原理

使用自定義的Partitioner(默認(rèn)為HashPartitioner),將原本被分配到同一個Task的不同Key分配到不同Task。

案例

以上述數(shù)據(jù)集為例,繼續(xù)將并發(fā)度設(shè)置為12,但是在groupByKey算子上,使用自定義的Partitioner(實現(xiàn)如下):

由下圖可見,使用自定義Partition后,耗時最長的Task 6處理約1000萬條數(shù)據(jù),用時15秒。并且各Task所處理的數(shù)據(jù)集大小相當(dāng)。

小結(jié)

適用場景:

大量不同的Key被分配到了相同的Task,造成該Task數(shù)據(jù)量過大。

解決方案:

使用自定義的Partitioner實現(xiàn)類代替默認(rèn)的HashPartitioner,盡量將所有不同的Key均勻分配到不同的Task中。

優(yōu)勢:

不影響原有的并行度設(shè)計。如果改變并行度,后續(xù)Stage的并行度也會默認(rèn)改變,可能會影響后續(xù)Stage。

劣勢:

適用場景有限,只能將不同Key分散開,對于同一Key對應(yīng)數(shù)據(jù)集非常大的場景不適用。效果與調(diào)整并行度類似,只能緩解數(shù)據(jù)傾斜而不能完全消除數(shù)據(jù)傾斜。而且需要根據(jù)數(shù)據(jù)特點自定義專用的Partitioner,不夠靈活。

4、將Reduce side Join轉(zhuǎn)變?yōu)镸ap side Join

原理

通過Spark的Broadcast機制,將Reduce側(cè)Join轉(zhuǎn)化為Map側(cè)Join,避免Shuffle從而完全消除Shuffle帶來的數(shù)據(jù)傾斜。

案例

通過如下SQL創(chuàng)建一張具有傾斜Key且總記錄數(shù)為1.5億的大表test。

使用如下SQL創(chuàng)建一張數(shù)據(jù)分布均勻且總記錄數(shù)為50萬的小表test_new。

直接通過Spark Thrift Server提交如下SQL將表test與表test_new進行Join并將Join結(jié)果存于表test_join中。

該SQL對應(yīng)的DAG如下圖所示。從該圖可見,該執(zhí)行過程總共分為三個Stage,前兩個用于從Hive中讀取數(shù)據(jù),同時二者進行Shuffle,通過***一個Stage進行Join并將結(jié)果寫入表test_join中。

從下圖可見,Join Stage各Task處理的數(shù)據(jù)傾斜嚴(yán)重,處理數(shù)據(jù)量***的Task耗時7.1分鐘,遠高于其它無數(shù)據(jù)傾斜的Task約2秒的耗時。

接下來,嘗試通過Broadcast實現(xiàn)Map側(cè)Join。實現(xiàn)Map側(cè)Join的方法,并非直接通過CACHE TABLE test_new將小表test_new進行cache。現(xiàn)通過如下SQL進行Join。

通過如下DAG圖可見,該操作仍分為三個Stage,且仍然有Shuffle存在,唯一不同的是,小表的讀取不再直接掃描Hive表,而是掃描內(nèi)存中緩存的表。

并且數(shù)據(jù)傾斜仍然存在。如下圖所示,最慢的Task耗時為7.1分鐘,遠高于其它Task的約2秒。

正確的使用Broadcast實現(xiàn)Map側(cè)Join的方式是,通過SET spark.sql.autoBroadcastJoinThreshold=104857600;將Broadcast的閾值設(shè)置得足夠大。

再次通過如下SQL進行Join。

通過如下DAG圖可見,該方案只包含一個Stage。

并且從下圖可見,各Task耗時相當(dāng),無明顯數(shù)據(jù)傾斜現(xiàn)象。并且總耗時為1.5分鐘,遠低于Reduce側(cè)Join的7.3分鐘。

小結(jié)

適用場景:

參與Join的一邊數(shù)據(jù)集足夠小,可被加載進Driver并通過Broadcast方法廣播到各個Executor中。

解決方案:

在Java/Scala代碼中將小數(shù)據(jù)集數(shù)據(jù)拉取到Driver,然后通過Broadcast方案將小數(shù)據(jù)集的數(shù)據(jù)廣播到各Executor。或者在使用SQL前,將Broadcast的閾值調(diào)整得足夠多,從而使用Broadcast生效。進而將Reduce側(cè)Join替換為Map側(cè)Join。

優(yōu)勢:

避免了Shuffle,徹底消除了數(shù)據(jù)傾斜產(chǎn)生的條件,可極大提升性能。

劣勢:

要求參與Join的一側(cè)數(shù)據(jù)集足夠小,并且主要適用于Join的場景,不適合聚合的場景,適用條件有限。

5、為skew的key增加隨機前/后綴

原理

為數(shù)據(jù)量特別大的Key增加隨機前/后綴,使得原來Key相同的數(shù)據(jù)變?yōu)镵ey不相同的數(shù)據(jù),從而使傾斜的數(shù)據(jù)集分散到不同的Task中,徹底解決數(shù)據(jù)傾斜問題。Join另一則的數(shù)據(jù)中,與傾斜Key對應(yīng)的部分?jǐn)?shù)據(jù),與隨機前綴集作笛卡爾乘積,從而保證無論數(shù)據(jù)傾斜側(cè)傾斜Key如何加前綴,都能與之正常Join。

 

案例

通過如下SQL,將id為9億到9.08億共800萬條數(shù)據(jù)的id轉(zhuǎn)為9500048或者9500096,其它數(shù)據(jù)的id除以100取整。從而該數(shù)據(jù)集中,id為9500048和9500096的數(shù)據(jù)各400萬,其它id對應(yīng)的數(shù)據(jù)記錄數(shù)均為100條。這些數(shù)據(jù)存于名為test的表中。

對于另外一張小表test_new,取出50萬條數(shù)據(jù),并將id(遞增且唯一)除以100取整,使得所有id都對應(yīng)100條數(shù)據(jù)。

通過如下代碼,讀取test表對應(yīng)的文件夾內(nèi)的數(shù)據(jù)并轉(zhuǎn)換為JavaPairRDD存于leftRDD中,同樣讀取test表對應(yīng)的數(shù)據(jù)存于rightRDD中。通過RDD的join算子對leftRDD與rightRDD進行Join,并指定并行度為48。

從下圖可看出,整個Join耗時1分54秒,其中Join Stage耗時1.7分鐘。

通過分析Join Stage的所有Task可知,在其它Task所處理記錄數(shù)為192.71萬的同時Task 32的處理的記錄數(shù)為992.72萬,故它耗時為1.7分鐘,遠高于其它Task的約10秒。這與上文準(zhǔn)備數(shù)據(jù)集時,將id為9500048為9500096對應(yīng)的數(shù)據(jù)量設(shè)置非常大,其它id對應(yīng)的數(shù)據(jù)集非常均勻相符合。

現(xiàn)通過如下操作,實現(xiàn)傾斜Key的分散處理:

將leftRDD中傾斜的key(即9500048與9500096)對應(yīng)的數(shù)據(jù)單獨過濾出來,且加上1到24的隨機前綴,并將前綴與原數(shù)據(jù)用逗號分隔(以方便之后去掉前綴)形成單獨的leftSkewRDD

將rightRDD中傾斜key對應(yīng)的數(shù)據(jù)抽取出來,并通過flatMap操作將該數(shù)據(jù)集中每條數(shù)據(jù)均轉(zhuǎn)換為24條數(shù)據(jù)(每條分別加上1到24的隨機前綴),形成單獨的rightSkewRDD

將leftSkewRDD與rightSkewRDD進行Join,并將并行度設(shè)置為48,且在Join過程中將隨機前綴去掉,得到傾斜數(shù)據(jù)集的Join結(jié)果skewedJoinRDD

將leftRDD中不包含傾斜Key的數(shù)據(jù)抽取出來作為單獨的leftUnSkewRDD

對leftUnSkewRDD與原始的rightRDD進行Join,并行度也設(shè)置為48,得到Join結(jié)果unskewedJoinRDD

通過union算子將skewedJoinRDD與unskewedJoinRDD進行合并,從而得到完整的Join結(jié)果集

具體實現(xiàn)代碼如下:

從下圖可看出,整個Join耗時58秒,其中Join Stage耗時33秒。

通過分析Join Stage的所有Task可知:

由于Join分傾斜數(shù)據(jù)集Join和非傾斜數(shù)據(jù)集Join,而各Join的并行度均為48,故總的并行度為96

由于提交任務(wù)時,設(shè)置的Executor個數(shù)為4,每個Executor的core數(shù)為12,故可用Core數(shù)為48,所以前48個Task同時啟動(其Launch時間相同),后48個Task的啟動時間各不相同(等待前面的Task結(jié)束才開始)

由于傾斜Key被加上隨機前綴,原本相同的Key變?yōu)椴煌腒ey,被分散到不同的Task處理,故在所有Task中,未發(fā)現(xiàn)所處理數(shù)據(jù)集明顯高于其它Task的情況

 

實際上,由于傾斜Key與非傾斜Key的操作完全獨立,可并行進行。而本實驗受限于可用總核數(shù)為48,可同時運行的總Task數(shù)為48,故而該方案只是將總耗時減少一半(效率提升一倍)。如果資源充足,可并發(fā)執(zhí)行Task數(shù)增多,該方案的優(yōu)勢將更為明顯。在實際項目中,該方案往往可提升數(shù)倍至10倍的效率。

小結(jié)

適用場景:

兩張表都比較大,無法使用Map則Join。其中一個RDD有少數(shù)幾個Key的數(shù)據(jù)量過大,另外一個RDD的Key分布較為均勻。

解決方案:

將有數(shù)據(jù)傾斜的RDD中傾斜Key對應(yīng)的數(shù)據(jù)集單獨抽取出來加上隨機前綴,另外一個RDD每條數(shù)據(jù)分別與隨機前綴結(jié)合形成新的RDD(相當(dāng)于將其數(shù)據(jù)增到到原來的N倍,N即為隨機前綴的總個數(shù)),然后將二者Join并去掉前綴。然后將不包含傾斜Key的剩余數(shù)據(jù)進行Join。***將兩次Join的結(jié)果集通過union合并,即可得到全部Join結(jié)果。

優(yōu)勢:

相對于Map則Join,更能適應(yīng)大數(shù)據(jù)集的Join。如果資源充足,傾斜部分?jǐn)?shù)據(jù)集與非傾斜部分?jǐn)?shù)據(jù)集可并行進行,效率提升明顯。且只針對傾斜部分的數(shù)據(jù)做數(shù)據(jù)擴展,增加的資源消耗有限。

劣勢:

如果傾斜Key非常多,則另一側(cè)數(shù)據(jù)膨脹非常大,此方案不適用。而且此時對傾斜Key與非傾斜Key分開處理,需要掃描數(shù)據(jù)集兩遍,增加了開銷。

6、大表隨機添加N種隨機前綴,小表擴大N倍

原理

如果出現(xiàn)數(shù)據(jù)傾斜的Key比較多,上一種方法將這些大量的傾斜Key分拆出來,意義不大。此時更適合直接對存在數(shù)據(jù)傾斜的數(shù)據(jù)集全部加上隨機前綴,然后對另外一個不存在嚴(yán)重數(shù)據(jù)傾斜的數(shù)據(jù)集整體與隨機前綴集作笛卡爾乘積(即將數(shù)據(jù)量擴大N倍)。

案例

這里給出示例代碼,讀者可參考上文中分拆出少數(shù)傾斜Key添加隨機前綴的方法,自行測試。

小結(jié)

適用場景:

一個數(shù)據(jù)集存在的傾斜Key比較多,另外一個數(shù)據(jù)集數(shù)據(jù)分布比較均勻。

優(yōu)勢:

對大部分場景都適用,效果不錯。

劣勢:

需要將一個數(shù)據(jù)集整體擴大N倍,會增加資源消耗。

三、總結(jié)

對于數(shù)據(jù)傾斜,并無一個統(tǒng)一的一勞永逸的方法。更多的時候,是結(jié)合數(shù)據(jù)特點(數(shù)據(jù)集大小,傾斜Key的多少等)綜合使用上文所述的多種方法。希望本文能對你有所幫助和啟發(fā)。

責(zé)任編輯:武曉燕 來源: DBAplus
相關(guān)推薦

2020-04-01 11:05:24

Spark數(shù)據(jù)傾斜Hadoop

2022-03-22 08:03:08

ReactTsTypeScript

2021-07-12 07:33:31

Nacos微服務(wù)管理

2017-03-07 07:44:52

Spark數(shù)據(jù)傾斜

2022-08-03 10:58:33

前端Svelte代碼

2020-09-17 15:46:24

網(wǎng)絡(luò)安全數(shù)據(jù)技術(shù)

2022-02-23 12:07:20

分布式Spark數(shù)據(jù)傾斜

2017-06-30 13:23:02

2025-04-09 10:58:43

2018-11-01 09:32:19

服務(wù)器機房企業(yè)

2021-11-15 23:47:19

手機內(nèi)存技術(shù)

2017-12-12 16:43:54

SparkHadoop水平

2017-10-12 11:30:34

Spark代碼PR

2021-04-22 07:21:55

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

2021-08-04 07:21:31

Hive 數(shù)據(jù)排查

2023-07-26 07:22:32

2016-11-11 20:16:23

數(shù)據(jù)傾斜spark

2018-12-12 19:10:01

Oracle數(shù)據(jù)庫自動備份

2010-09-14 13:49:38

CSS代碼

2022-12-12 08:29:59

Vite構(gòu)建工具
點贊
收藏

51CTO技術(shù)棧公眾號

亚洲电影免费观看高清| 国产精品国产自产拍在线| 欧美一区亚洲一区| 成人无码精品1区2区3区免费看 | 国产精品一级伦理| 老司机午夜精品| 欧美大片大片在线播放| 波多野结衣av在线免费观看| 欧美伊人亚洲伊人色综合动图| 一区二区三区四区亚洲| 日韩伦理一区二区三区av在线| 国产特级黄色片| 久久国产日本精品| 欧美乱人伦中文字幕在线| 三上悠亚影音先锋| 超碰97久久| 欧美日韩成人在线| 国产h视频在线播放| 欧美成人高清在线| 久久久午夜精品| 97伦理在线四区| 亚洲欧美日韩激情| 在线看片欧美| 久久精彩免费视频| 精品人伦一区二区| 久久电影在线| 日韩视频一区二区| 在线观看亚洲色图| 中文在线免费视频| 一区二区三区高清不卡| 伊人情人网综合| 精品视频一二三| 97久久精品人人爽人人爽蜜臀| 国产有码一区二区| 特级西西444www高清大视频| 国产视频一区三区| 久久噜噜噜精品国产亚洲综合| 在线观看天堂av| 蜜桃一区二区| 日韩精品极品在线观看播放免费视频| 好吊操视频这里只有精品| 成人免费黄色| 欧美在线观看一区二区| 久久久精品在线视频| 丁香花在线观看完整版电影| 亚洲精品美腿丝袜| 亚洲国产精品女人| 国产精品剧情一区二区在线观看| 国产欧美日韩在线观看| 奇米视频888战线精品播放| 婷婷久久久久久| 成人永久aaa| 成人av蜜桃| 高h调教冰块play男男双性文| 国产综合色精品一区二区三区| 国产一区二区在线免费| 91精品国自产| 国产综合色视频| 99久re热视频这里只有精品6| 国产特黄一级片| 国产成人亚洲综合a∨婷婷图片| 成人激情电影一区二区| 国产精品爽爽久久| 国产一区二区精品久久91| 91在线精品观看| www.av日韩| 99久久婷婷国产| 欧美一级二级三级九九九| 国产亚洲依依| 一区免费观看视频| 国产一级大片免费看| 丰满诱人av在线播放| 欧美性色视频在线| 黑森林精品导航| 伊人亚洲精品| 欧美精品一区二区高清在线观看| 国产又粗又猛又色| 精品国产精品久久一区免费式| 中文字幕日韩免费视频| 91嫩草丨国产丨精品| 在线播放亚洲| 国产成人精品视频| 国产黄色大片网站| 91女厕偷拍女厕偷拍高清| 欧美日韩一区综合| 日本免费在线视频| 亚洲超碰97人人做人人爱| 日本在线视频www| 自拍偷拍欧美日韩| 亚洲精美色品网站| 西西444www无码大胆| 天天操综合网| 45www国产精品网站| 中文字幕日韩国产| 成人精品在线视频观看| 亚洲国产精品一区在线观看不卡| 成人免费看片| 色综合一个色综合| 91香蕉国产线在线观看| 偷拍自拍亚洲色图| 久久国产天堂福利天堂| 中文字幕国产在线观看| 国产呦精品一区二区三区网站| 精品国产乱码久久久久久丨区2区| 成人午夜在线观看视频| 亚洲一区二区美女| 奇米影视四色在线| 日韩超碰人人爽人人做人人添| 亚洲成人精品在线| 精品无码国产污污污免费网站 | 操91在线视频| 成人h动漫精品一区二区下载| 国产精品亚洲人在线观看| 欧美日韩亚洲在线| heyzo高清在线| 在线综合+亚洲+欧美中文字幕| 天天插天天射天天干| 91精品动漫在线观看| 国产mv久久久| 香港一级纯黄大片| 亚洲综合精品久久| 三级av免费看| 色偷偷综合网| 国产成人精品电影久久久| 亚洲乱码国产乱码精品精软件| 国产精品免费久久| 成年人视频在线免费| 精品国产一区二区三区成人影院| 久久久999国产| 亚洲视屏在线观看| 久久久久久久久久久电影| 久久国产精品网| 亚洲一区二区电影| 免费99精品国产自在在线| 在线播放国产一区| 国产欧美一区二区精品仙草咪| 日韩a在线播放| 日韩在线黄色| 欧美中文在线免费| 国产精品国产高清国产| 性欧美大战久久久久久久久| 91精品人妻一区二区三区蜜桃2| 久久在线播放| 国产免费一区二区三区在线能观看 | 日韩av成人高清| 久久国产精品亚洲va麻豆| av电影在线地址| 亚洲激情视频网站| 日韩少妇高潮抽搐| 91在线看国产| 国产aaa一级片| 精品日本12videosex| 国产成人精品免费视频| 二区三区在线播放| 欧美亚洲综合色| 99在线视频免费| 久久97超碰国产精品超碰| 一区二区三区在线视频看| 在线免费成人| 欧美大学生性色视频| 亚洲av无码国产精品永久一区| 洋洋成人永久网站入口| 在线xxxxx| 亚洲欧美日韩在线观看a三区 | 人人妻人人澡人人爽精品日本| 亚洲国产日日夜夜| 国产精品无码永久免费不卡| 久久亚洲风情| 欧美亚洲视频一区| 136福利精品导航| 2019中文字幕全在线观看| 国模精品一区二区| 欧美日韩成人综合在线一区二区| 东方av正在进入| 成人福利视频在线| 黑鬼大战白妞高潮喷白浆| 久久精品99久久无色码中文字幕| 成人黄色av免费在线观看| 日本三级在线观看网站| 亚洲精品国产suv| 嫩草影院一区二区三区| 日韩毛片高清在线播放| 国产a级黄色片| 日韩福利电影在线| 黄色录像特级片| 日日狠狠久久偷偷综合色| 国产精品青草久久久久福利99| av免费在线观| 精品亚洲一区二区| 国产一区二区小视频| 五月婷婷综合在线| 亚洲色图日韩精品| 成人动漫av在线| 中文字幕网av| 99精品国产在热久久婷婷| 四虎一区二区| 老司机凹凸av亚洲导航| 国产美女精品视频| 天堂av中文在线观看| 日韩有码在线电影| 神马亚洲视频| 欧美一区午夜视频在线观看| 中文字幕精品无码一区二区| 亚洲欧美在线视频观看| 香蕉网在线播放| 国产精品一区免费视频| 国产精品视频黄色| 最新亚洲视频| 中国成人亚色综合网站| 婷婷激情久久| 国产精品久久久久久久天堂第1集 国产精品久久久久久久免费大片 国产精品久久久久久久久婷婷 | 日韩欧美卡一卡二| 综合久久中文字幕| 精品福利在线看| 欧美成人精品激情在线视频| 久久久不卡网国产精品一区| 久久久久久久穴| 精品一区二区三区在线视频| 国产乱子夫妻xx黑人xyx真爽| 欧美精品一卡| 亚洲国产精品一区在线观看不卡 | 91porny在线| 一区二区成人在线| 搜索黄色一级片| 国产精品色噜噜| www在线观看免费视频| 99久久精品国产一区| 亚洲熟女乱综合一区二区| 久久爱www久久做| 不卡av免费在线| 久久精品女人天堂| 久久久亚洲精品无码| 在线播放精品| 精品成在人线av无码免费看| 欧美一区影院| 性欧美18一19内谢| 97精品国产福利一区二区三区| 欧美日韩在线高清| 亚洲激情播播| 欧美二区在线看| 国产成人三级| 日本在线成人一区二区| 欧美猛男同性videos| 欧美不卡福利| 奇米色欧美一区二区三区| 久久久久高清| 一区二区三区视频免费观看| 麻豆91蜜桃| 米奇777超碰欧美日韩亚洲| 欧洲亚洲一区二区| 国产一区二区三区91| 午夜精品亚洲一区二区三区嫩草| 国产一区二区欧美| 夜夜爽99久久国产综合精品女不卡 | 色婷婷在线观看视频| 精品国产1区2区| 亚洲 欧美 日韩 综合| 欧美视频在线看| 免费的毛片视频| 在线观看日韩国产| 在线免费看av片| 91精品国产91久久久久久最新毛片 | 欧美亚洲天堂| 韩国日本不卡在线| 92国产精品| 国产精品自拍偷拍| 国产一区二区三区精品在线观看 | 日韩一级片免费看| 日韩精品视频免费在线观看| 国内精品在线视频| 久久亚洲私人国产精品va| 欧美野外wwwxxx| 国产不卡在线观看| 国产福利亚洲| 91在线观看网站| 亚洲女娇小黑人粗硬| 色综合久久av| 欧美不卡在线| 干日本少妇首页| 蜜臀精品一区二区三区在线观看| 捷克做爰xxxⅹ性视频| 福利电影一区二区三区| 国产精品亚洲无码| 亚洲欧洲日韩女同| 欧美激情亚洲综合| 欧美少妇bbb| 亚洲高清精品视频| 国产亚洲欧美日韩精品| 91小视频xxxx网站在线| 欧美专区日韩视频| 91精品视频一区二区| 精品国产中文字幕| 久久国产影院| 国模无码视频一区二区三区| 蜜臀久久99精品久久久久久9| 日本精品一二三| 日本一区二区不卡视频| 国产小视频在线观看免费| 在线精品观看国产| 亚洲欧美另类日韩| 中文字幕久热精品视频在线| 成年人视频免费在线播放| 国产欧亚日韩视频| 人人精品亚洲| 神马午夜伦理影院| 视频在线观看一区| 国产香蕉精品视频| 亚洲欧洲日韩一区二区三区| 国产又大又黄又粗| 日韩精品专区在线影院观看 | 欧美大学生性色视频| 电影一区二区| 久久精品人人做人人爽电影| 91精品国产91久久久久久黑人| 亚洲熟妇av一区二区三区| 成人小视频免费观看| 久草手机视频在线观看| 色综合天天性综合| 日本美女一级片| 免费不卡在线观看av| 色婷婷成人网| 日本成人三级电影网站| 在线综合视频| 涩视频在线观看| 亚洲欧美国产77777| 亚洲熟女乱色一区二区三区久久久| 亚洲精品99久久久久| 美女日批视频在线观看| 亚洲a成v人在线观看| 日韩不卡一区| 天堂在线资源视频| 久久久99精品免费观看不卡| 国产成人综合欧美精品久久| 精品国产成人在线影院| 任你弄在线视频免费观看| 亚洲一区二区三区久久| 国产精品成人av| 不用播放器的免费av| 国产精品久99| 97精品人妻一区二区三区| xvideos亚洲| 久久三级毛片| 杨幂一区欧美专区| 精品在线播放午夜| 中日韩一级黄色片| 91精品国产91久久综合桃花| av免费看在线| 91福利入口| 欧美日韩网站| 亚洲图片欧美另类| 五月婷婷激情综合网| 男人天堂综合网| 午夜精品久久久久久久男人的天堂 | 极品销魂美女一区二区三区| 免费成人美女女在线观看| 欧美精品一二三四| av软件在线观看| 国产精品theporn88| 樱桃成人精品视频在线播放| 国产伦精品一区二区三区精品| 天天色图综合网| 青青久在线视频免费观看| 国产成人在线亚洲欧美| 色综合咪咪久久网| 免费国偷自产拍精品视频| 亚洲国产日韩a在线播放性色| 深夜福利免费在线观看| 国产精品第三页| 999国产精品视频| 亚洲熟女乱综合一区二区| 天天操天天干天天综合网| 黄色视屏网站在线免费观看| 国产精品一区二区久久久久| 亚洲澳门在线| 呦呦视频在线观看| 91国偷自产一区二区三区成为亚洲经典 | 欧美成人一区二区视频| 麻豆乱码国产一区二区三区| 成人动漫视频| 亚洲色图38p| 亚洲欧美日韩国产中文在线| 好吊视频一区二区三区| 日本久久精品视频| 91国语精品自产拍| 精品人妻一区二区三区日产乱码卜| 欧洲精品一区二区三区在线观看| 成人影欧美片| 美媛馆国产精品一区二区| 久久精品国产成人一区二区三区| 黄页网站免费观看| 亚洲免费av片| 色妞ww精品视频7777| 丝袜老师办公室里做好紧好爽| 国产精品久久二区二区| 天天操天天射天天舔| 国产在线观看精品| 国产精品久久久一区二区| 农村妇女精品一区二区| 亚洲欧美日韩精品久久| 亚洲精品一二三**|