国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

【技術(shù)難點】Spark性能調(diào)優(yōu)-RDD算子調(diào)優(yōu)篇

共 8809字,需瀏覽 18分鐘

 ·

2021-03-05 12:00


Spark調(diào)優(yōu)之RDD算子調(diào)優(yōu)

不廢話,直接進入正題!

1. RDD復(fù)用

在對RDD進行算子時,要避免相同的算子和計算邏輯之下對RDD進行重復(fù)的計算,如下圖所示:

RDD的重復(fù)計算

對上圖中的RDD計算架構(gòu)進行修改,得到如下圖所示的優(yōu)化結(jié)果:

RDD架構(gòu)優(yōu)化

2. 盡早filter

獲取到初始RDD后,應(yīng)該考慮盡早地過濾掉不需要的數(shù)據(jù),進而減少對內(nèi)存的占用,從而提升Spark作業(yè)的運行效率。

3. 讀取大量小文件-用wholeTextFiles

當我們將一個文本文件讀取為 RDD 時,輸入的每一行都會成為RDD的一個元素。

也可以將多個完整的文本文件一次性讀取為一個pairRDD,其中鍵是文件名,值是文件內(nèi)容。

val input:RDD[String] = sc.textFile("dir/*.log"

如果傳遞目錄,則將目錄下的所有文件讀取作為RDD。文件路徑支持通配符。

但是這樣對于大量的小文件讀取效率并不高,應(yīng)該使用 wholeTextFiles
返回值為RDD[(String, String)],其中Key是文件的名稱,Value是文件的內(nèi)容。

def wholeTextFiles(path: String, minPartitions: Int = defaultMinPartitions): RDD[(String, String)])

wholeTextFiles讀取小文件:

val filesRDD: RDD[(String, String)] =
sc.wholeTextFiles("D:\\data\\files", minPartitions = 3)
val linesRDD: RDD[String] = filesRDD.flatMap(_._2.split("\\r\\n"))
val wordsRDD: RDD[String] = linesRDD.flatMap(_.split(" "))
wordsRDD.map((_, 1)).reduceByKey(_ + _).collect().foreach(println)

4. mapPartition和foreachPartition

  • mapPartitions

map(_….)  表示每一個元素

mapPartitions(_….)  表示每個分區(qū)的數(shù)據(jù)組成的迭代器

普通的map算子對RDD中的每一個元素進行操作,而mapPartitions算子對RDD中每一個分區(qū)進行操作。

如果是普通的map算子,假設(shè)一個partition有1萬條數(shù)據(jù),那么map算子中的function要執(zhí)行1萬次,也就是對每個元素進行操作。

map 算子

如果是mapPartition算子,由于一個task處理一個RDD的partition,那么一個task只會執(zhí)行一次function,function一次接收所有的partition數(shù)據(jù),效率比較高。

mapPartition 算子

比如,當要把RDD中的所有數(shù)據(jù)通過JDBC寫入數(shù)據(jù),如果使用map算子,那么需要對RDD中的每一個元素都創(chuàng)建一個數(shù)據(jù)庫連接,這樣對資源的消耗很大,如果使用mapPartitions算子,那么針對一個分區(qū)的數(shù)據(jù),只需要建立一個數(shù)據(jù)庫連接。

mapPartitions算子也存在一些缺點:對于普通的map操作,一次處理一條數(shù)據(jù),如果在處理了2000條數(shù)據(jù)后內(nèi)存不足,那么可以將已經(jīng)處理完的2000條數(shù)據(jù)從內(nèi)存中垃圾回收掉;但是如果使用mapPartitions算子,但數(shù)據(jù)量非常大時,function一次處理一個分區(qū)的數(shù)據(jù),如果一旦內(nèi)存不足,此時無法回收內(nèi)存,就可能會OOM,即內(nèi)存溢出。

因此,mapPartitions算子適用于數(shù)據(jù)量不是特別大的時候,此時使用mapPartitions算子對性能的提升效果還是不錯的。(當數(shù)據(jù)量很大的時候,一旦使用mapPartitions算子,就會直接OOM)

在項目中,應(yīng)該首先估算一下RDD的數(shù)據(jù)量、每個partition的數(shù)據(jù)量,以及分配給每個Executor的內(nèi)存資源,如果資源允許,可以考慮使用mapPartitions算子代替map。

  • foreachPartition

rrd.foreache(_….) 表示每一個元素

rrd.forPartitions(_….)  表示每個分區(qū)的數(shù)據(jù)組成的迭代器

在生產(chǎn)環(huán)境中,通常使用foreachPartition算子來完成數(shù)據(jù)庫的寫入,通過foreachPartition算子的特性,可以優(yōu)化寫數(shù)據(jù)庫的性能。

如果使用foreach算子完成數(shù)據(jù)庫的操作,由于foreach算子是遍歷RDD的每條數(shù)據(jù),因此,每條數(shù)據(jù)都會建立一個數(shù)據(jù)庫連接,這是對資源的極大浪費,因此,對于寫數(shù)據(jù)庫操作,我們應(yīng)當使用foreachPartition算子。

與mapPartitions算子非常相似,foreachPartition是將RDD的每個分區(qū)作為遍歷對象,一次處理一個分區(qū)的數(shù)據(jù),也就是說,如果涉及數(shù)據(jù)庫的相關(guān)操作,一個分區(qū)的數(shù)據(jù)只需要創(chuàng)建一次數(shù)據(jù)庫連接,如下圖所示:

foreachPartition 算子

使用了foreachPartition 算子后,可以獲得以下的性能提升:

  1. 對于我們寫的function函數(shù),一次處理一整個分區(qū)的數(shù)據(jù);

  2. 對于一個分區(qū)內(nèi)的數(shù)據(jù),創(chuàng)建唯一的數(shù)據(jù)庫連接;

  3. 只需要向數(shù)據(jù)庫發(fā)送一次SQL語句和多組參數(shù);

在生產(chǎn)環(huán)境中,全部都會使用foreachPartition算子完成數(shù)據(jù)庫操作。foreachPartition算子存在一個問題,與mapPartitions算子類似,如果一個分區(qū)的數(shù)據(jù)量特別大,可能會造成OOM,即內(nèi)存溢出。

5. filter+coalesce/repartition(減少分區(qū))

在Spark任務(wù)中我們經(jīng)常會使用filter算子完成RDD中數(shù)據(jù)的過濾,在任務(wù)初始階段,從各個分區(qū)中加載到的數(shù)據(jù)量是相近的,但是一旦進過filter過濾后,每個分區(qū)的數(shù)據(jù)量有可能會存在較大差異,如下圖所示:

分區(qū)數(shù)據(jù)過濾結(jié)果

根據(jù)上圖我們可以發(fā)現(xiàn)兩個問題:

  1. 每個partition的數(shù)據(jù)量變小了,如果還按照之前與partition相等的task個數(shù)去處理當前數(shù)據(jù),有點浪費task的計算資源;

  2. 每個partition的數(shù)據(jù)量不一樣,會導致后面的每個task處理每個partition數(shù)據(jù)的時候,每個task要處理的數(shù)據(jù)量不同,這很有可能導致數(shù)據(jù)傾斜問題。

如上圖所示,第二個分區(qū)的數(shù)據(jù)過濾后只剩100條,而第三個分區(qū)的數(shù)據(jù)過濾后剩下800條,在相同的處理邏輯下,第二個分區(qū)對應(yīng)的task處理的數(shù)據(jù)量與第三個分區(qū)對應(yīng)的task處理的數(shù)據(jù)量差距達到了8倍,這也會導致運行速度可能存在數(shù)倍的差距,這也就是數(shù)據(jù)傾斜問題。

針對上述的兩個問題,我們分別進行分析:

  1. 針對第一個問題,既然分區(qū)的數(shù)據(jù)量變小了,我們希望可以對分區(qū)數(shù)據(jù)進行重新分配,比如將原來4個分區(qū)的數(shù)據(jù)轉(zhuǎn)化到2個分區(qū)中,這樣只需要用后面的兩個task進行處理即可,避免了資源的浪費。

  2. 針對第二個問題,解決方法和第一個問題的解決方法非常相似,對分區(qū)數(shù)據(jù)重新分配,讓每個partition中的數(shù)據(jù)量差不多,這就避免了數(shù)據(jù)傾斜問題。

那么具體應(yīng)該如何實現(xiàn)上面的解決思路?我們需要coalesce算子。

repartition與coalesce都可以用來進行重分區(qū),其中repartition只是coalesce接口中shuffle為true的簡易實現(xiàn),coalesce默認情況下不進行shuffle,但是可以通過參數(shù)進行設(shè)置。

假設(shè)我們希望將原本的分區(qū)個數(shù)A通過重新分區(qū)變?yōu)锽,那么有以下幾種情況:

  1. A > B(多數(shù)分區(qū)合并為少數(shù)分區(qū))

    • A與B相差值不大

      此時使用coalesce即可,無需shuffle過程。

    • A與B相差值很大

      此時可以使用coalesce并且不啟用shuffle過程,但是會導致合并過程性能低下,所以推薦設(shè)置coalesce的第二個參數(shù)為true,即啟動shuffle過程。

  2. A < B(少數(shù)分區(qū)分解為多數(shù)分區(qū))

此時使用repartition即可,如果使用coalesce需要將shuffle設(shè)置為true,否則coalesce無效。

我們可以在filter操作之后,使用coalesce算子針對每個partition的數(shù)據(jù)量各不相同的情況,壓縮partition的數(shù)量,而且讓每個partition的數(shù)據(jù)量盡量均勻緊湊,以便于后面的task進行計算操作,在某種程度上能夠在一定程度上提升性能。

注意:local模式是進程內(nèi)模擬集群運行,已經(jīng)對并行度和分區(qū)數(shù)量有了一定的內(nèi)部優(yōu)化,因此不用去設(shè)置并行度和分區(qū)數(shù)量。

6. 并行度設(shè)置

Spark作業(yè)中的并行度指各個stage的task的數(shù)量。

如果并行度設(shè)置不合理而導致并行度過低,會導致資源的極大浪費,例如,20個Executor,每個Executor分配3個CPU core,而Spark作業(yè)有40個task,這樣每個Executor分配到的task個數(shù)是2個,這就使得每個Executor有一個CPU core空閑,導致資源的浪費。

理想的并行度設(shè)置,應(yīng)該是讓并行度與資源相匹配,簡單來說就是在資源允許的前提下,并行度要設(shè)置的盡可能大,達到可以充分利用集群資源。合理的設(shè)置并行度,可以提升整個Spark作業(yè)的性能和運行速度。

Spark官方推薦,task數(shù)量應(yīng)該設(shè)置為Spark作業(yè)總CPU core數(shù)量的2~3倍。之所以沒有推薦task數(shù)量與CPU core總數(shù)相等,是因為task的執(zhí)行時間不同,有的task執(zhí)行速度快而有的task執(zhí)行速度慢,如果task數(shù)量與CPU core總數(shù)相等,那么執(zhí)行快的task執(zhí)行完成后,會出現(xiàn)CPU core空閑的情況。如果task數(shù)量設(shè)置為CPU core總數(shù)的2~3倍,那么一個task執(zhí)行完畢后,CPU core會立刻執(zhí)行下一個task,降低了資源的浪費,同時提升了Spark作業(yè)運行的效率。

Spark作業(yè)并行度的設(shè)置如下:

val conf = new SparkConf().set("spark.default.parallelism""500")

原則:讓 cpu 的 core(cpu 核心數(shù)) 充分利用起來, 如有100個 core,那么并行度可以設(shè)置為200~300

7. repartition/coalesce調(diào)節(jié)并行度

Spark 中雖然可以設(shè)置并行度的調(diào)節(jié)策略,但是,并行度的設(shè)置對于Spark SQL是不生效的,用戶設(shè)置的并行度只對于Spark SQL以外的所有Spark的stage生效。

Spark SQL的并行度不允許用戶自己指定,Spark SQL自己會默認根據(jù)hive表對應(yīng)的HDFS文件的split個數(shù)自動設(shè)置Spark SQL所在的那個stage的并行度,用戶自己通 spark.default.parallelism 參數(shù)指定的并行度,只會在沒Spark SQL的stage中生效。

由于Spark SQL所在stage的并行度無法手動設(shè)置,如果數(shù)據(jù)量較大,并且此stage中后續(xù)的transformation操作有著復(fù)雜的業(yè)務(wù)邏輯,而Spark SQL自動設(shè)置的task數(shù)量很少,這就意味著每個task要處理為數(shù)不少的數(shù)據(jù)量,然后還要執(zhí)行非常復(fù)雜的處理邏輯,這就可能表現(xiàn)為第一個有Spark SQL的stage速度很慢,而后續(xù)的沒有Spark SQL的stage運行速度非???。

為了解決Spark SQL無法設(shè)置并行度和task數(shù)量的問題,我們可以使用repartition算子。

repartition 算子使用前后對比圖如下:

repartition 算子使用前后對比圖

Spark SQL這一步的并行度和task數(shù)量肯定是沒有辦法去改變了,但是,對于Spark SQL查詢出來的RDD,立即使用repartition算子,去重新進行分區(qū),這樣可以重新分區(qū)為多個partition,從repartition之后的RDD操作,由于不再涉及Spark SQL,因此stage的并行度就會等于你手動設(shè)置的值,這樣就避免了Spark SQL所在的stage只能用少量的task去處理大量數(shù)據(jù)并執(zhí)行復(fù)雜的算法邏輯。使用repartition算子的前后對比如上圖所示。

8. reduceByKey本地預(yù)聚合

reduceByKey相較于普通的shuffle操作一個顯著的特點就是會進行map端的本地聚合,map端會先對本地的數(shù)據(jù)進行combine操作,然后將數(shù)據(jù)寫入給下個stage的每個task創(chuàng)建的文件中,也就是在map端,對每一個key對應(yīng)的value,執(zhí)行reduceByKey算子函數(shù)。

reduceByKey算子的執(zhí)行過程如下圖所示:

reduceByKey 算子執(zhí)行過程

使用reduceByKey對性能的提升如下:

  1. 本地聚合后,在map端的數(shù)據(jù)量變少,減少了磁盤IO,也減少了對磁盤空間的占用;

  2. 本地聚合后,下一個stage拉取的數(shù)據(jù)量變少,減少了網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)量;

  3. 本地聚合后,在reduce端進行數(shù)據(jù)緩存的內(nèi)存占用減少;

  4. 本地聚合后,在reduce端進行聚合的數(shù)據(jù)量減少。

基于reduceByKey的本地聚合特征,我們應(yīng)該考慮使用reduceByKey代替其他的shuffle算子,例如groupByKey。

groupByKey與reduceByKey的運行原理如下圖1和圖2所示:

圖1:groupByKey原理
圖2:reduceByKey原理

根據(jù)上圖可知,groupByKey不會進行map端的聚合,而是將所有map端的數(shù)據(jù)shuffle到reduce端,然后在reduce端進行數(shù)據(jù)的聚合操作。由于reduceByKey有map端聚合的特性,使得網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)量減小,因此效率要明顯高于groupByKey。

9. 使用持久化+checkpoint

Spark持久化在大部分情況下是沒有問題的,但是有時數(shù)據(jù)可能會丟失,如果數(shù)據(jù)一旦丟失,就需要對丟失的數(shù)據(jù)重新進行計算,計算完后再緩存和使用,為了避免數(shù)據(jù)的丟失,可以選擇對這個RDD進行checkpoint,也就是將數(shù)據(jù)持久化一份到容錯的文件系統(tǒng)上(比如HDFS)。

一個RDD緩存并checkpoint后,如果一旦發(fā)現(xiàn)緩存丟失,就會優(yōu)先查看checkpoint數(shù)據(jù)存不存在,如果有,就會使用checkpoint數(shù)據(jù),而不用重新計算。也即是說,checkpoint可以視為cache的保障機制,如果cache失敗,就使用checkpoint的數(shù)據(jù)。

使用checkpoint的優(yōu)點在于提高了Spark作業(yè)的可靠性,一旦緩存出現(xiàn)問題,不需要重新計算數(shù)據(jù),缺點在于,checkpoint時需要將數(shù)據(jù)寫入HDFS等文件系統(tǒng),對性能的消耗較大。

持久化設(shè)置如下:

sc.setCheckpointDir(‘HDFS’)
rdd.cache/persist(memory_and_disk)
rdd.checkpoint

10. 使用廣播變量

默認情況下,task中的算子中如果使用了外部的變量,每個task都會獲取一份變量的復(fù)本,這就造成了內(nèi)存的極大消耗。一方面,如果后續(xù)對RDD進行持久化,可能就無法將RDD數(shù)據(jù)存入內(nèi)存,只能寫入磁盤,磁盤IO將會嚴重消耗性能;另一方面,task在創(chuàng)建對象的時候,也許會發(fā)現(xiàn)堆內(nèi)存無法存放新創(chuàng)建的對象,這就會導致頻繁的GC,GC會導致工作線程停止,進而導致Spark暫停工作一段時間,嚴重影響Spark性能。

假設(shè)當前任務(wù)配置了20個Executor,指定500個task,有一個20M的變量被所有task共用,此時會在500個task中產(chǎn)生500個副本,耗費集群10G的內(nèi)存,如果使用了廣播變量, 那么每個Executor保存一個副本,一共消耗400M內(nèi)存,內(nèi)存消耗減少了5倍。

廣播變量在每個Executor保存一個副本,此Executor的所有task共用此廣播變量,這讓變量產(chǎn)生的副本數(shù)量大大減少。

在初始階段,廣播變量只在Driver中有一份副本。task在運行的時候,想要使用廣播變量中的數(shù)據(jù),此時首先會在自己本地的Executor對應(yīng)的BlockManager中嘗試獲取變量,如果本地沒有,BlockManager就會從Driver或者其他節(jié)點的BlockManager上遠程拉取變量的復(fù)本,并由本地的BlockManager進行管理;之后此Executor的所有task都會直接從本地的BlockManager中獲取變量。

對于多個Task可能會共用的數(shù)據(jù)可以廣播到每個Executor上:

val 廣播變量名= sc.broadcast(會被各個Task用到的變量,即需要廣播的變量)

廣播變量名.value//獲取廣播變量

11. 使用Kryo序列化

默認情況下,Spark使用Java的序列化機制。Java的序列化機制使用方便,不需要額外的配置,在算子中使用的變量實現(xiàn)Serializable接口即可,但是,Java序列化機制的效率不高,序列化速度慢并且序列化后的數(shù)據(jù)所占用的空間依然較大。

Spark官方宣稱Kryo序列化機制比Java序列化機制性能提高10倍左右,Spark之所以沒有默認使用Kryo作為序列化類庫,是因為它不支持所有對象的序列化,同時Kryo需要用戶在使用前注冊需要序列化的類型,不夠方便,但從Spark 2.0.0版本開始,簡單類型、簡單類型數(shù)組、字符串類型的Shuffling RDDs 已經(jīng)默認使用Kryo序列化方式了。

Kryo序列化注冊方式的代碼如下:

public class MyKryoRegistrator implements KryoRegistrator{
  @Override
  public void registerClasses(Kryo kryo){
    kryo.register(StartupReportLogs.class);
  }
}

配置Kryo序列化方式的代碼如下:

//創(chuàng)建SparkConf對象
val conf = new SparkConf().setMaster(…).setAppName(…)
//使用Kryo序列化庫
conf.set("spark.serializer""org.apache.spark.serializer.KryoSerializer");  
//在Kryo序列化庫中注冊自定義的類集合
conf.set("spark.kryo.registrator""bigdata.com.MyKryoRegistrator"); 


--end--


掃描下方二維碼
添加好友,備注【交流
可私聊交流,也可進資源豐富學習群


更文不易,點個“在看”支持一下??

瀏覽 36
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報
評論
圖片
表情
推薦
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 一级a片在线| 一级黄色视频免费看| 北条麻妃久久网站| 奇米久久| 国产成人精品电影| 九九视频免费在线观看| 亚洲天堂2017| 北条麻妃无码精品AV怎么看| 国产性生活视频| 91爱逼| 婷婷午夜精品久久久久久性色AV| 精品在线播放| 免费涩涩无遮挡18国产| 国产黄色视频在线播放| 人人草超碰| 久久久久999| 中文字幕av久久爽Av| 超碰免费在线观看| 精品中文一区二区三区| 亚洲精品一区二区三区四区五区六区| 超碰最新在线| 亚洲黄色在线| 好好的日视频| 91福利在线视频| 美日韩毛片| 青草成人在线| 国产一级片内射| 91久久亚洲| 水蜜桃网址| 69av电影| 12——13女人毛片毛片| AV在线直播| 人妻无码HEYZO少妇精品| 亚洲黄色在线看| 国产精品一区二| 特级毛片AAAAAA蜜桃| 黄色成人毛片| 熟女少妇一区二区| 中文字幕免费AV| 中文字幕国产视频| 久久成人18免费网站波多野结衣| 欧美一级a视频免费放| 亚洲一区二区在线视频| 青青草视频在线观看| 国产一二| 在线观看日韩AV| 青娱乐AV| 51妺嘿嘿午夜福利视频| 色婷婷影院| 成人免费福利| 99久久婷婷| 国产裸体美女网站| 日韩欧美天堂| 欧美精品91| 亚洲天堂av在线观看| 我想看操逼| 欧美a在线观看| 特黄特色免费大片| 69精品在线| 久草福利在线观看| 久久av一区二区三区观看| 婷婷色色婷婷| 俺来也影院| 国产欧美在线看| 亚洲无码在线免费观看| 久久久久久大香蕉| 人人操天天操| 国产日韩欧美久久| www天天干| 黄色成人毛片| 日韩成人区| 欧美激情伊人久久五月天| 亚洲色图网站| 操逼精品| 亚洲自拍小说| 日本精品乱伦| 久久久久亚洲AV无码麻豆| 久久久XXX| 亚洲av毛片| WWW.豆花视频精品| 天天射网| 日韩一区二区三区在线视频| 91欧美视频| 91视频网站入口| 麻豆人妻换人妻好紧| 久草大香蕉在线| 亚洲一区中文字幕| 波多野结衣视频免费在线观看| 国产高清视频在线观看| 免费高清无码| 51无码| 91鲁| 长腿女神打扫偷懒被主人猛操惩罚| 亚洲视频一区二区三区四区娇小视频在线观看视频 | 操逼逼一区二区三区| 怡春院在线| 亚州操B| 免费视频A| 短发妹子双人啪啪秀| 热久久在线观看| 强奸乱伦制服丝袜| 人妻夜夜爽天天爽| 中文黄片| 91搞| 国产乱子伦一区二区三区视频| 17c精品麻豆一区二区免费| 一级片视频在线观看| 亚洲乱码日产精品BD在线观看 | 中文字幕日韩无码片| 三级久久网| 一道本不卡视频| 大香蕉伊人手机在线| 中文√在线天堂8| AV电影一区| 中文字幕在线永久| 东北操逼视频| 亚洲日本中文| 亚洲1区2区| 五月丁香激情四射| 久久理论| 国产亚洲99久久精品| VA电影| 日韩精品123| 91蜜桃在线| 黄片伊人| A黄色绿像| 国产激情免费| 久久婷婷无码视频| 91国内精品| 狠狠插网站| 日韩精品成人片| 天天操电影| 国产成人无码区免费AV片在线| 婷婷五月综合在线| 色综合婷婷| 一级黄色录像视频| 性性性性性XXXXX| 亚洲综合图色40p| 影音先锋成人在线视频| 免费网站观看www在线观| 国产成人无码AⅤ片免费播放| 91在线无码精品秘入口三人| 午夜福利爱爱视频| 日韩无码电影网站| 性生活无码| 黄色片大全| 国产精久久| 国产精品资源在线观看| 亚洲AV无码精品国产| 白嫩外女BBwBBwBBw| 国产成人午夜福利在线| 日韩欧美三级| 韩剧《邻居的妻子》电视剧| 亚洲aaa在线| 人妻一区二区在线| 亚洲高清视频免费| 嫩苞又嫩又紧AV无码| 亚洲欧美精品在线| 午夜精品久久久久久久99黑人 | 澳门午夜黄色在线| 天堂va欧美ⅴa亚洲va一夜 | 成人区色情综合小说| AV电影天堂网| 91蝌蚪91九色| 韩日AV| 北条麻妃人妻中文无码| 人人看人人摸人人操| 久久婷视频| 蜜桃成人久久| 夜夜骑夜夜撸| 激情操逼网| 国产三级网| 五月丁香在线观看| 日本成人激情视频| 色色综合热| 五月婷婷国产| www.91n| 嫩BBB嫩BBB嫩BBB| 北条麻妃久久网站| 天天拍天天日| 好男人av| 美女肏逼| 91综合娱乐| 88海外华人免费一区| 亚洲精品色婷婷| 欧美mv日韩mv国产| 超碰A片| 国产一区无码| 亚洲AV无码久| 国产女人十八水真多| 黄色a级片| 99精品久久久久久无码| 中文字幕婷婷| 久操精品视频| wwwwww黄| 簧片网站在线观看| 蜜桃av秘无码一区二区三区| 手机看片福利一区二区| 精品一区二区免费视频| 婷婷狠狠操| 夜夜狠狠躁日日躁| 色操人 | 免费视频A| 蜜桃视频成人app| 无码-ThePorn| 国产免看一级a一片成人aⅴ| 蜜臀久久99精品久久久| 欧美精品成人免码在线| 综合网亚洲| 中文日韩| 日本A片在线免费观看| 在线天堂AV| 日本草逼视频| 做爱视频91| 鸡巴操骚逼视频| 欧美精品日韩在线观看| 国产97视频| 久99在线视频| 操逼视频网站免费观看| 麻豆一级| 激情深爱五月天| www.sese| 日韩精品一区二区三免费视频| 啪啪视频在线观看| 风流少妇一区二区三区91| 在线视频你懂得| 麻豆艾秋MD0056在线| h网站在线看| 久久AV秘一区二区三区水生| 黄色欧美视频| 粉嫩99精品99久久久久久特污兔 | 亚洲卡一卡二| 免费操b视频| 香蕉综合在线| 国产毛片毛片毛片| 亚洲黄色在线观看| A级黄色毛片| 一级中国毛片| 欧美操B| 五月天在线电影| 九九小视频| A片在线视频| 久久91人妻无码精品蜜桃HD| 欧美日韩第一区| 丰满人妻一区二区三区不卡二| 国产高清在线| 日韩成人不卡| 丰满人妻一区二区| 91在线观看| 国产美女免费视频| 国产插逼视频| 美女网站黄| 久久久久一区二区三区| 亚洲小说欧美激情另类A片小说 | 久久久久久无码| 99色视频| 澳门午夜黄色在线| 日韩在线视频一区二区三区| 三级国产| 一区二区中文| 国产欧美在线视频| 欧一美一婬一伦一区| 成人中文字幕网站| 午夜福利大香蕉| 日韩人妻精品中文字幕免费| 影音先锋AV天堂| 在线中文字幕AV| 山东熟妇搡BBBB搡BBBB| 国产精品国产三级国产AⅤ| 欧美日韩国产精品成人| 中文字幕亚洲精品| 激情网站在线| 中文字幕-区二区三区四区视频中国 | 免费观看无码视频| 日本在线不卡视频| 亚洲精品成AV人片天堂无码 | 欧美性爱综合网| 午夜免费福利视频| 88AV在线播放| 人人干人人看| 久久精品视频国产| 青春草在线观看视频| 99久久黄色| 熟女老阿V8888AV| 国产黄片在线免费观看| 国产午夜成人视频| 一级黄片免费观看| 国产操比网| 黄色A片免费视频| 成人欧美| 人妖和人妖互交性XXXX视频| av在线观看中文字幕| 国产中文字幕亚洲综合欧美| 国产精品无码免费| 99综合网| 欧美日韩在线视频免费播放| 色老板最新网址| 正在播放亚洲| 亚洲A片一区二区三区电影网 | 特黄色视频| 国产精品一级片| 99精品9| 日韩在线成人| 影音先锋成人视频| 99久久婷婷| 在线观看免费黄色视频| 欧美69影院| 色五月综合| 国产SUV精品一区二区| 风流少妇一区二区三区91| 男女日日批黄色三级| 免费黄色视频网站大全| 综合+夜夜| 国产在线观看你懂的| 亚洲AV无码成人精品区欧洲| 亚洲日韩精品在线视频| 黄色A片免费看| 日本视频网| 一本无码视频| 亚洲天堂影院| 久久国产乱子伦精品免费午夜...| 欧美综合国产| 99久久久精品久久久久久| 97人妻一区二区三区| 亚洲午夜福利一区二区三区| 精品成人免费视频| 牛牛精品视频一区二区| 国产精品五月天| 亚州AV操屄| 黑人巨大翔田千里AⅤ| 天天无码| 大香蕉最新视频| www.91爱爱,com| 亚洲国产精品精JIZZ老师| 久久xx| 欧美日韩免费观看视频| 最新在线中文字幕| 麻豆911精一区二区| www.A片| 国产一区视频在线| 日本伊人大香蕉| 可以免费观看的AV| 国产凹凸视频| 日本三级黄色视频| 欧美一级性爱视频| 女公务员人妻呻吟求饶| 亚洲操逼逼| 欧洲黄色片| 第一福利成人AV导航| 国产三级片视频在线观看| 91成人在线免费视频| 黄色网址五月天| 黄片网站在线看| 国产成人毛片18女人18精品| 精品人妻一区二区蜜桃视频| 国产老女人操逼视频| 久久亚洲av| A免费观看| 亭亭五月丁香| 亚洲激情国产| 天天干天天拍| AV资源在线免费观看| 亚洲无码动漫| 国产无码AV成在线| 久色网| 国产不卡在线视频| 韩国精精品视频| 日韩中文字幕免费在线观看| 天天躁狠狠躁av| 欧美高清无码视频| 综合插插| 欧美一级黃色A片免费看小优视频| 中文字幕成人网站中文字幕| 99热在线看| 日韩精品视频免费| 女人天堂AV| 亚洲第一中文字幕| 亚洲秘无码一区二区三区胖子| 欧美老妇操逼视频| 黄色网址av| 成人a视频| 亚洲国产成人av| а√最新版天堂中文在线| 国产又爽又黄网站免费观看| 69成人网| 成人自拍在线| 奶头和荫蒂添的好舒服囗交漫画| 男女啊啊啊| 国产伦子伦一级A片免费看老牛| 七十路の高齢熟妇无码| 一区二区三区福利| 99热国产精品| 人人妻人人澡人人爽人人爽| 亚洲青草视频| 国产日韩在线视频| 2022天天干| www.婷婷五月天| 日韩无码操逼| 日韩欧美视频一区国产欧美在线 | 青青久草| 三级片男人的天堂| 精品一区二区三区蜜桃臀www| 91久久久久国产一区二区| 男女91| 白浆av| 在线国产日韩| 性色aV中文字幕| 俺去草| 天天干天天射天天| 成人无码一区二区| 无码aⅴ| 五丁香在线观看AV| 99热网| 精品中文字幕视频| 国产福利av| 97人妻人人澡人| 污污污污污www网站免费民国| 四川少扫搡BBBBB搡B| 中文字幕AV在线免费观看| 波多野结衣视频网站| 日本欧美在线播放中文| 色欲成人AV| 亚洲成人视频在线| 国产成人午夜高潮毛片| 久久毛久久久j| 国产日韩一区| 日韩成人AV毛片| 内射视频网站| 永久免费一区二区| 亚洲一区视频在线| 久热精品视频| 国产三级三级三级| 最新中文字幕无码| 草久久| 日韩一级二级三级| 最好看2019中文在线播放电影| 尤物无码| 91成人视频在线免费观看| 国产欧美日韩三级| 国产乱子伦一区二区三精品| 婷婷看片| 免费av一区二区| 黄色av免费| 色网站操逼| 插吧插吧综合网| av黄色在线观看| 黄色工厂这里只有精品| 中文字幕成人av| 91精品亚洲| 人妻制服丝袜| 91视频福利网| 嫩草av| 亚洲美女在线观看| 天天夜夜有| 久久久天堂国产精品女人| 久久精品国产精品| 婷婷亚洲国产| 天堂亚洲AV无码精品成人| 中文字幕在线观看网址最新地址 | 中文字幕无码在线观看| 成人视频在线观看黄色18| 成人精品一区日本无码网站suv/ | 91探花秘在线播放| 人人摸人人色| 黄片高清无码在线观看| 国产精品久久久久久亚洲毛片 | 亚洲欧洲有码在线| 黄色小网站在线观看| 97亚洲视频| 日韩av在线不卡| 无码群交东京热| 西西444WWW无码精品| 波多野结衣视频无码| 91久久| 亚洲黄片视频| 日本内射在线播放| 国产一区二区免费在线观看| 五月天福利导航| 欧美黄色网址| 亚洲成人在线免费| 午夜福利av在线| 午夜无码福利| 性天堂| 翔田千里无码免费播放| 人妻丝袜中出北条麻妃| 国产中文字幕在线视频| 欧美操b视频| 午夜性爱福利视频| 外国成人视频| 九九九久久久| 77久久| 六月婷婷在线| 翔田千里无码精品| 日韩五码| 玖玖资源网站| 男女啪啪啪网站| 国产视频一区二区在线| 久久综合99| 精品久久电影| 嫩BBB槡BBBB槡BBBB免费视频 | 天天天天操| 国产精品一级A片| 日韩二区| 91久久久久久久| 亚洲三级片无码| 高潮91PORN蝌蚪九色| 狼友视频一国产| 亚洲无码中文字幕在线播放| 天天躁日日躁狠狠| 欧一美一婬一伦一区?| 成人肏逼视频在线| 超碰日本| 永久免费av| 久久国产乱子伦精品免费午夜...| 亚洲成人无码片| 成人无码免费毛片A片| 天天色色综合| 在线免费观看无码视频| 日韩成人无码电影网站| 丁香五香天堂| 一级无码毛片| 中文字幕免费看| 18禁无码永久免费网站大全| 天天干天天日天天干天天日| 午夜福利影院在线| 久热超碰| av自拍| 成人福利午夜A片公司| 日本色天堂| 3DAV一区二区三区动漫| 毛片毛片毛片| 亚洲日韩Av无码中文字幕美国| 69xx视频| 免费在线观看AV网站| 日本一区二区精品| 久久手机电影| 日韩性爱网| 日韩成人黄色电影| 欧美大骚逼| 北条麻妃99精品青青久久| 欧美成人精品A片免费一区99| 亚洲在线免费观看| 中文字幕在线观看免费高清完整版在线观看| 亚洲欧美日韩色图| 丰满人妻一区二区三区四区53| 中文在线不卡| 成人二区三区| 蜜桃传媒一区二区| 伊人亚洲综合| 丁香在线视频| 最新国产精品| 国产精品扒开腿做爽爽爽视频| 2024av在线| 人人摸人人操人人摸| 日韩黄色网| 国产乱视频| 99精品视频免费看| 777777国产7777777| 成人777777免费视频色| 天堂成人AV| 91视频成人版一区二区| 99热综合| 伊人东京热| 久久精品一区二区三区蜜芽的特点| 在线免费观看视频黄| www.xxx国产| 日韩美女性爱| 亚洲国产视频在线观看| 91国黄色毛片在线观看| 丁香五月在线视频| 毛片A片| 亚洲无码在线免费| 亚洲福利视频网站| 免费在线观看黄片视频| 91成人视频免费观看| 日韩黄色视频在线观看| 国产91探花系列在线观看| 午夜精品视频| 国产黄色片在线观看| 成人在线国产| AV中文字幕在线播放| 欧美日韩亚洲视频| 亚洲AV无码成人精品区在线欢看| 欧美18成人| 99人人爽| 伊人三级| 精品无码一区二区人妻久久蜜桃 | av视屏| 欧美大鸡巴视频| 中字无码AV| 逼逼AV网站-日韩电影| 中文字幕亚洲视频| 亚洲a视频| 老熟女露脸25分钟91秒| 无码在线免费视频| 久久久久久久久国产精品| 亚洲激情图| 狠狠干综合网| 91精品婷婷国产综合久久蝌蚪| 东京热第一页| 大香蕉青青| 91福利区| 伊人三级| 欧美3P视频| 亚洲AV无码一区二区三竹菊| 少妇高潮视频| 日本成人电影| 内射免费看| 久久99精品久久久久久| 国产精品久久精品| 亚洲456| 激情亚洲婷婷| 再深点好爽灬轻点久久国产| 亚洲AV永久无码成人| 欧性猛交ⅩXXX乱大交| 三级在线网| 久久电影精品| 免费无码国产在线| 91AV在线观看视频| 中文字幕H| 亚洲AV无码成人精品久久久| 黄色成人毛片| 国产AV无遮挡| 黑人又粗又大XXXXOO| 色999网址| 亚洲黄色在线| 婷婷在线视频| 五月天网址| 中国熟妇| 中文在线视频| 91午夜福利| 波多野结衣一区| 人成视频在线观看| 国产伦子伦一级A片免费看小说 | 人人超碰人人| 亚洲成人AAAAA| 日韩一区二区三区无码| japanese在线观看| 午夜免费小视频| 日本黄色三级| 伊人逼逼| 人人操超碰在线观看| 亚洲狠狠撸| 国产精品美女在线观看| 91丨PORN丨国产| 激情五月俺也去| av在线天堂网| 狠狠热视频| 欧美日韩一区二区三区四区| 婷婷午夜福利| 超碰97老师| 中文字幕精品视频在线观看| 黄色一级片免费观看| 成人理伦A级A片在线论坛 | 在线观看无码高清| 亚洲精品成人无码毛片| 狼友在线观看| 国产二级片| 成年人黄色网址| 伊人99热| 国产成人AV在线| 韩国午夜福利| 2025精品偷拍视频| 高清无码一区| 91人妻人人澡人人爽人人精品| 日本成人性爱视频网站一区| 无码人妻日韩精品一区二区三| 婷婷开心色四房播播在线| 久久免费操| 日韩AV无码网站| 成人A片在线播放| 亚洲人一级电影| 16一17女人毛片| 中文在线第一页| 五月天操逼网站| 人人干人人操人人| 国产成人精品久久| 91丨九色丨国产在线| 伊人影院视频| 无码人妻精品一区二区三区蜜桃91| 熊猫成人网| 青青自拍视频| 亚洲毛片网| 亚洲永久免费| 大香蕉超碰| 一级黄色A片| 久久久国产探花视频| 男女操逼视频网站免费观看| 中文无码日韩| 亚洲欧美婷婷五月色综合| 亚洲va欧美ⅴa在线| 亚洲香蕉视频网站| 麻豆91蜜桃传媒在线观看| www.欧美视频| 国产主播中文字幕| 天天操人人| 91色在线| 97超碰人妻| 婷婷五月天激情小说| 一级无码毛片| 中文字幕浅井香舞被黑人俘虏| 老女人操逼网| 青青热久| 在线免费观看成人网站| 九色PORNY国产成人| 色视频在线播放| 天天射天天射| 日本A片免费看| 強姧伦一区二区三区在线播放| 中文字幕有码在线| 国产精品一麻了麻了| 激情av在线观看| 学生妹一级| 第一色网站| 中文字幕超清在线观看| 日本欧美在线视频| 手机在线观看av| 日韩精品视频在线免费观看| 2017人人操| 人人妻人人爱| 大香蕉大香蕉大香蕉| 999热这里只有精品| 一本之道DVD不卡视频| 日韩日韩日韩| 日韩综合在线视频| 黄色毛片电影| 亚洲免费专区| 免费AV在线| 久久精品综合| 国产一级乱伦| av资源观看| 日韩av高清| AAA三级片| 国产黃色AAA片| 一区二区不卡| 午夜亚洲福利视频| 8x8拨牐拨牐拨牐永久免费| 国产91探花精品一区二区| 一级a免一级a做免费线看内裤的注意事项| 亚洲AV无码一区东京热久久| 欧美熟妇精品一级A片视色| 99激情| 国产激情免费视频| 麻豆黄色电影| 老鸭窝成人视频| 91丨牛牛丨国产| 国产成人免费观看| 亚洲欧美精品| 影音先锋中文字幕资源| 国产又粗又大又黄视频| 翔田千里中文字幕无码| www.日本黄色视频| 麻豆国产精品一区| 日本免费一区二区三区| av字幕网| 天天做天天爱夜夜爽| 狼人色综合| 日韩欧美国产成人| 中文字幕一区二区三区四虎在线| 青青草视频在线观看| 久久久久久麻豆| 91探花秘入囗| 久久一道| 99热这里有精品| h网站在线观看| 一区二区在线不卡| 一区二区三区高清不卡| 五月天一区二区三区| 99久久婷婷国产精品2020| 婷婷五月av| 午夜福利干B在线免费小视频| 先锋成人影音| www.污污污| 欧美香蕉视频| www.91自拍| 成人aV免费观看| 久久精品99国产国产精| 老湿机福利院| 人妻无码高清| 九九热在线视频| 北条麻妃一区二区三区在线观看| 免费人成视频观看| 日B视频在线观看| 激情久久婷婷| 日韩Av无码一区二区三区不卡| 国产无遮挡又黄又爽在线观看| 少妇一级婬片内射视频| 中国老女人性爱视频| 在线无码视频播放| 国产一级一片免费播放放a| 天天干天天日蜜臀色欲av| 黄色视频A| 成人黄色免费观看| www操逼| 欧美亚洲系列| 五月天综合在线| 日韩AV中文| 国产91无码精品秘入口新欢| 久久中文字幕免费| 天天色天天撸| 亚洲激情内射| 婷婷五月精品中文字幕| 一区二区三区四区五区六区高清无吗视频 | 一道本一区二区| 91视频在线观看18| 久久久久久亚洲AV黄床| 亚洲免费视频网| 成人小说在线观看| 成人片成人网久久蜜桃臀| 日本白嫩的BBw| 亚洲成人在线无码| 亚洲日韩Av无码中文字幕美国 | 操骚逼视频| 一级成人电影| 日韩一级片免费看| 亚洲一区二区在线免费观看| 一区二区在线不卡| 无码精品在线观看| 亚洲国产毛片| 亚洲中文无码视频| 麻豆传媒av| chinese搡老熟老妇人| 亚洲国产色情| 国产av高清| 人妻综合第一页| 天天操天天操天天操天天操| 在线免费看av| 天天搞天天色| 影音先锋成人AV资源| 熟练中出-波多野结衣| 五月天网址| 玖玖色资源| 久久久成人片| 免费观看无码| 欧美色图亚洲另类| 国外成人性视频免费| 日韩av免费在线观看| 亚洲搞清视频日本| 国产精品久久久久久久久久久久久久久久 | 另类性姿势BBwBBW| 无码国产精品一区二区性色AV| 国产视频在线播放| 手机免费AV| 伊人三级| 色噜| 婷婷中文在线| 亚洲人妻电影一区| 亚洲伊人成人| 婷婷五月在线观看| 免费一级婬片AA片观看| 日本精品视频一区二区| 91九色91蝌蚪91窝成人| 人人爱人人操| 久草网视频| 精品1区| 91人妻视频| 人人舔人人草| www.一区二区| 在线免费观看黄色视频| 国产人成| 日韩在线精品视频| 亚洲18禁| 91aV视频| 日本黄色一级| 最近中文字幕高清2019中文字幕| 青青草网站在线观看| 超碰人人人人人| 就去se超碰| 国产成人精品无码片子的价格| 亚洲乱伦视频| 韩国日本美国免费毛片| 午夜免费小视频| 激情综合婷婷| 手机在线成人视频| 人妻av无码| 免费激情| 日韩视频成人| 人人爽久久涩噜噜噜网站| 91精品久久久久| 色婷婷香蕉在线一区二区| 黄色片一区二区| 无码高清| 91久久超碰| 91av在线免费观看| 91无码视频在线观看| www.日韩一区| 色噜噜av| 成年人久久| 天天爽天天搞| 久久亚洲无码| 大地影视官网第三页入口| 日皮视频免费在线观看| 国产二区视频| 日韩欧美国产精品综合嫩V| 成人网视频| 免费人成视频观看| 少妇熟女一区| 全部免费黄色视频| 青青色在线视频| 东京热精品视频|