日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Apache Spark 的设计与实现(job逻辑执行图)

發布時間:2023/12/15 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Apache Spark 的设计与实现(job逻辑执行图) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

Job 邏輯執行圖

General logical plan

典型的 Job 邏輯執行圖如上所示,經過下面四個步驟可以得到最終執行結果:
  • 從數據源(可以是本地 file,內存數據結構, HDFS,HBase 等)讀取數據創建最初的 RDD。上一章例子中的 parallelize() 相當于 createRDD()。
  • 對 RDD 進行一系列的 transformation() 操作,每一個 transformation() 會產生一個或多個包含不同類型 T 的 RDD[T]。T 可以是 Scala 里面的基本類型或數據結構,不限于 (K, V)。但如果是 (K, V),K 不能是 Array 等復雜類型(因為難以在復雜類型上定義 partition 函數)。
  • 對最后的 final RDD 進行 action() 操作,每個 partition 計算后產生結果 result。
  • 將 result 回送到 driver 端,進行最后的 f(list[result]) 計算。例子中的 count() 實際包含了action() 和 sum() 兩步計算。
RDD 可以被 cache 到內存或者 checkpoint 到磁盤上。RDD 中的 partition 個數不固定,通常由用戶設定。RDD 和 RDD 之間 partition 的依賴關系可以不是 1 對 1,如上圖既有 1 對 1 關系,也有多對多的關系。

邏輯執行圖的生成

了解了 Job 的邏輯執行圖后,寫程序時候會在腦中形成類似上面的數據依賴圖。然而,實際生成的 RDD 個數往往比我們想想的個數多。 要解決邏輯執行圖生成問題,實際需要解決:
  • 如何產生 RDD,應該產生哪些 RDD?
  • 如何建立 RDD 之間的依賴關系?

1. 如何產生 RDD,應該產生哪些 RDD?

解決這個問題的初步想法是讓每一個 transformation() 方法返回(new)一個 RDD。事實也基本如此,只是某些 transformation() 比較復雜,會包含多個子 transformation(),因而會生成多個 RDD。這就是 實際 RDD 個數比我們想象的多一些 的原因。 如何計算每個 RDD 中的數據?邏輯執行圖實際上是 computing chain,那么 transformation() 的計算邏輯在哪里被 perform?每個 RDD 里有 compute() 方法,負責接收來自上一個 RDD 或者數據源的 input records,perform transformation() 的計算邏輯,然后輸出 records。 產生哪些 RDD 與 transformation() 的計算邏輯有關,下面討論一些典型的 transformation() 及其創建的 RDD。官網上已經解釋了每個 transformation 的含義。iterator(split) 的意思是 foreach record in the partition。這里空了很多,是因為那些 transformation() 較為復雜,會產生多個 RDD,具體會在下一節圖示出來。 TransformationGenerated RDDsCompute()
map(func)MappedRDDiterator(split).map(f)
filter(func)FilteredRDDiterator(split).filter(f)
flatMap(func)FlatMappedRDDiterator(split).flatMap(f)
mapPartitions(func)MapPartitionsRDDf(iterator(split))
mapPartitionsWithIndex(func)MapPartitionsRDDf(split.index, iterator(split))
sample(withReplacement, fraction, seed)PartitionwiseSampledRDDPoissonSampler.sample(iterator(split)) BernoulliSampler.sample(iterator(split))
pipe(command, [envVars])PipedRDD
union(otherDataset)
intersection(otherDataset)
distinct([numTasks]))
groupByKey([numTasks])
reduceByKey(func, [numTasks])
sortByKey([ascending], [numTasks])
join(otherDataset, [numTasks])
cogroup(otherDataset, [numTasks])
cartesian(otherDataset)
coalesce(numPartitions)
repartition(numPartitions)

2. 如何建立 RDD 之間的聯系?

RDD 之間的數據依賴問題實際包括三部分:
  • RDD 本身的依賴關系。要生成的 RDD(以后用 RDD x 表示)是依賴一個 parent RDD,還是多個 parent RDDs?
  • RDD x 中會有多少個 partition ?
  • RDD x 與其 parent RDDs 中 partition 之間是什么依賴關系?是依賴 parent RDD 中一個還是多個 partition?
第一個問題可以很自然的解決,比如 x = rdda.transformation(rddb) (e.g., x = a.join(b)) 就表示 RDD x 同時依賴于 RDD a 和 RDD b。 第二個問題中的 partition 個數一般由用戶指定,不指定的話一般取 max(numPartitions[parent RDD 1], .., numPartitions[parent RDD n])。 第三個問題比較復雜。需要考慮這個 transformation() 的語義,不同的 transformation() 的依賴關系不同。比如 map() 是 1:1,而 groupByKey() 邏輯執行圖中的 ShuffledRDD 中的每個 partition 依賴于 parent RDD 中所有的 partition,還有更復雜的情況。 再次考慮第三個問題,RDD x 中每個 partition 可以依賴于 parent RDD 中一個或者多個 partition。而且這個依賴可以是完全依賴或者部分依賴。部分依賴指的是 parent RDD 中某 partition 中一部分數據與 RDD x 中的一個 partition 相關,另一部分數據與 RDD x 中的另一個 partition 相關。下圖展示了完全依賴和部分依賴。 前三個是完全依賴,RDD x 中的 partition 與 parent RDD 中的 partition/partitions 完全相關。最后一個是部分依賴,RDD x 中的 partition 只與 parent RDD 中的 partition 一部分數據相關,另一部分數據與 RDD x 中的其他 partition 相關。 在 Spark 中,完全依賴被稱為 NarrowDependency,部分依賴被稱為 ShuffleDependency。其實 ShuffleDependency 跟 MapReduce 中 shuffle 的數據依賴相同(mapper 將其 output 進行 partition,然后每個 reducer 會將所有 mapper 輸出中屬于自己的 partition 通過 HTTP fetch 得到)。
  • 第一種 1:1 的情況被稱為 OneToOneDependency。
  • 第二種 N:1 的情況被稱為 N:1 NarrowDependency。
  • 第三種 N:N 的情況被稱為 N:N NarrowDependency。不屬于前兩種情況的完全依賴都屬于這個類別。
  • 第四種被稱為 ShuffleDependency。
對于 NarrowDependency,具體 RDD x 中的 partitoin i 依賴 parrent RDD 中一個 partition 還是多個 partitions,是由 RDD x 中的 getParents(partition i) 決定(下圖中某些例子會詳細介紹)。還有一種 RangeDependency 的完全依賴,不過該依賴目前只在 UnionRDD 中使用,下面會介紹。 所以,總結下來 partition 之間的依賴關系如下:
  • NarrowDependency (使用黑色實線或黑色虛線箭頭表示)
    • OneToOneDependency (1:1)
      • NarrowDependency (N:1)
    • NarrowDependency (N:N)
    • RangeDependency (只在 UnionRDD 中使用)
  • ShuffleDependency (使用紅色箭頭表示)
之所以要劃分 NarrowDependency 和 ShuffleDependency 是為了生成物理執行圖,下一章會具體介紹。 需要注意的是第三種 NarrowDependency (N:N) 很少在兩個 RDD 之間出現。因為如果 parent RDD 中的 partition 同時被 child RDD 中多個 partitions 依賴,那么最后生成的依賴圖往往與 ShuffleDependency 一樣。只是對于 parent RDD 中的 partition 來說一個是完全依賴,一個是部分依賴,而箭頭數沒有少。所以 Spark 定義的 NarrowDependency 其實是 “each partition of the parent RDD is used by at most one partition of the child RDD“,也就是只有 OneToOneDependency (1:1) 和 NarrowDependency (N:1) 兩種情況。但是,自己設計的奇葩 RDD 確實可以呈現出 NarrowDependency (N:N) 的情況。這里描述的比較亂,其實看懂下面的幾個典型的 RDD 依賴即可。 如何計算得到 RDD x 中的數據(records)?下圖展示了 OneToOneDependency 的數據依賴,雖然 partition 和 partition 之間是 1:1,但不代表計算 records 的時候也是讀一個 record 計算一個 record。 下圖右邊上下兩個 pattern 之間的差別類似于下面兩個程序的差別: code1 of iter.f() int[] array = {1, 2, 3, 4, 5} for(int i = 0; i < array.length; i++)f(array[i]) ? code2 of f(iter) int[] array = {1, 2, 3, 4, 5} f(array) ?

3. 給出一些典型的 transformation() 的計算過程及數據依賴圖

1) union(otherRDD) union() 將兩個 RDD 簡單合并在一起,不改變 partition 里面的數據。RangeDependency 實際上也是 1:1,只是為了訪問 union() 后的 RDD 中的 partition 方便,保留了原始 RDD 的 range 邊界。 2) groupByKey(numPartitions) 上一章已經介紹了 groupByKey 的數據依賴,這里算是 溫故而知新 吧。 groupByKey() 只需要將 Key 相同的 records 聚合在一起,一個簡單的 shuffle 過程就可以完成。ShuffledRDD 中的 compute() 只負責將屬于每個 partition 的數據 fetch 過來,之后使用 mapPartitions() 操作(前面的 OneToOneDependency 展示過)進行 aggregate,生成 MapPartitionsRDD,到這里 groupByKey() 已經結束。最后為了統一返回值接口,將 value 中的 ArrayBuffer[] 數據結構抽象化成 Iterable[]。 groupByKey() 沒有在 map 端進行 combine,因為 map 端 combine 只會省掉 partition 里面重復 key 占用的空間,當重復 key 特別多時,可以考慮開啟 combine。 這里的 ArrayBuffer 實際上應該是 CompactBuffer,An append-only buffer similar to ArrayBuffer, but more memory-efficient for small buffers. ParallelCollectionRDD 是最基礎的 RDD,直接從 local 數據結構 create 出的 RDD 屬于這個類型,比如 val pairs = sc.parallelize(List(1, 2, 3, 4, 5), 3) ? 生成的 pairs 就是 ParallelCollectionRDD。 2) reduceyByKey(func, numPartitions) reduceyByKey() 相當于傳統的 MapReduce,整個數據流也與 Hadoop 中的數據流基本一樣。reduceyByKey() 默認在 map 端開啟 combine(),因此在 shuffle 之前先通過 mapPartitions 操作進行 combine,得到 MapPartitionsRDD,然后 shuffle 得到 ShuffledRDD,然后再進行 reduce(通過 aggregate + mapPartitions() 操作來實現)得到 MapPartitionsRDD。 3) distinct(numPartitions) distinct() 功能是 deduplicate RDD 中的所有的重復數據。由于重復數據可能分散在不同的 partition 里面,因此需要 shuffle 來進行 aggregate 后再去重。然而,shuffle 要求數據類型是 <K, V>。如果原始數據只有 Key(比如例子中 record 只有一個整數),那么需要補充成 <K, null>。這個補充過程由 map() 操作完成,生成 MappedRDD。然后調用上面的 reduceByKey() 來進行 shuffle,在 map 端進行 combine,然后 reduce 進一步去重,生成 MapPartitionsRDD。最后,將 <K, null> 還原成 K,仍然由 map() 完成,生成 MappedRDD。藍色的部分就是調用的 reduceByKey()。 4) cogroup(otherRDD, numPartitions) 與 groupByKey() 不同,cogroup() 要 aggregate 兩個或兩個以上的 RDD。 那么 CoGroupedRDD 與 RDD a 和 RDD b 的關系都必須是 ShuffleDependency 么?是否存在 OneToOneDependency? 首先要明確的是 CoGroupedRDD 存在幾個 partition 可以由用戶直接設定,與 RDD a 和 RDD b 無關。然而,如果 CoGroupedRDD 中 partition 個數與 RDD a/b 中的 partition 個數不一樣,那么不可能存在 1:1 的關系。 再次,cogroup() 的計算結果放在 CoGroupedRDD 中哪個 partition 是由用戶設置的 partitioner 確定的(默認是 HashPartitioner)。那么可以推出:即使 RDD a/b 中的 partition 個數與 CoGroupedRDD 中的一樣,如果 RDD a/b 中的 partitioner 與 CoGroupedRDD 中的不一樣,也不可能存在 1:1 的關系。比如,在上圖的 example 里面,RDD a 是 RangePartitioner,b 是 HashPartitioner,CoGroupedRDD 也是 RangePartitioner 且 partition 個數與 a 的相同。那么很自然地,a 中的每個 partition 中 records 可以直接送到 CoGroupedRDD 中對應的 partition。RDD b 中的 records 必須再次進行劃分與 shuffle 后才能進入對應的 partition。 最后,經過上面分析, 對于兩個或兩個以上的 RDD 聚合,當且僅當聚合后的 RDD 中 partitioner 類別及 partition 個數與前面的 RDD 都相同,才會與前面的 RDD 構成 1:1 的關系。否則,只能是 ShuffleDependency。這個算法對應的代碼可以在 CoGroupedRDD.getDependencies() 中找到,雖然比較難理解。 Spark 代碼中如何表示 CoGroupedRDD 中的 partition 依賴于多個 parent RDDs 中的 partitions? 首先,將 CoGroupedRDD 依賴的所有 RDD 放進數組 rdds[RDD] 中。再次,foreach i,如果 CoGroupedRDD 和 rdds(i) 對應的 RDD 是 OneToOneDependency 關系,那么 Dependecy[i] = new OneToOneDependency(rdd),否則 = new ShuffleDependency(rdd)。最后,返回與每個 parent RDD 的依賴關系數組 deps[Dependency]。 Dependency 類中的 getParents(partition id) 負責給出某個 partition 按照該 dependency 所依賴的 parent RDD 中的 partitions: List[Int]。 getPartitions() 負責給出 RDD 中有多少個 partition,以及每個 partition 如何序列化。 5) intersection(otherRDD) intersection() 功能是抽取出 RDD a 和 RDD b 中的公共數據。先使用 map() 將 RDD[T] 轉變成 RDD[(T, null)],這里的 T 只要不是 Array 等集合類型即可。接著,進行 a.cogroup(b),藍色部分與前面的 cogroup() 一樣。之后再使用 filter() 過濾掉 [iter(groupA()), iter(groupB())] 中 groupA 或 groupB 為空的 records,得到 FilteredRDD。最后,使用 keys() 只保留 key 即可,得到 MappedRDD。 6) join(otherRDD, numPartitions) join() 將兩個 RDD[(K, V)] 按照 SQL 中的 join 方式聚合在一起。與 intersection() 類似,首先進行 cogroup(),得到 <K, (Iterable[V1], Iterable[V2])>類型的 MappedValuesRDD,然后對 Iterable[V1] 和 Iterable[V2] 做笛卡爾集,并將集合 flat() 化。 這里給出了兩個 example,第一個 example 的 RDD 1 和 RDD 2 使用 RangePartitioner 劃分,而 CoGroupedRDD 使用 HashPartitioner,與 RDD 1/2 都不一樣,因此是 ShuffleDependency。第二個 example 中, RDD 1 事先使用 HashPartitioner 對其 key 進行劃分,得到三個 partition,與 CoGroupedRDD 使用的 HashPartitioner(3) 一致,因此數據依賴是 1:1。如果 RDD 2 事先也使用 HashPartitioner 對其 key 進行劃分,得到三個 partition,那么 join() 就不存在 ShuffleDependency 了,這個 join() 也就變成了 hashjoin()。 7) sortByKey(ascending, numPartitions) sortByKey() 將 RDD[(K, V)] 中的 records 按 key 排序,ascending = true 表示升序,false 表示降序。目前 sortByKey() 的數據依賴很簡單,先使用 shuffle 將 records 聚集在一起(放到對應的 partition 里面),然后將 partition 內的所有 records 按 key 排序,最后得到的 MapPartitionsRDD 中的 records 就有序了。 目前 sortByKey() 先使用 Array 來保存 partition 中所有的 records,再排序。 8) cartesian(otherRDD) Cartesian 對兩個 RDD 做笛卡爾集,生成的 CartesianRDD 中 partition 個數 = partitionNum(RDD a) * partitionNum(RDD b)。 這里的依賴關系與前面的不太一樣,CartesianRDD 中每個partition 依賴兩個 parent RDD,而且其中每個 partition 完全依賴 RDD a 中一個 partition,同時又完全依賴 RDD b 中另一個 partition。這里沒有紅色箭頭,因為所有依賴都是 NarrowDependency。 CartesianRDD.getDependencies() 返回 rdds[RDD a, RDD b]。CartesianRDD 中的 partiton i 依賴于 (RDD a).List(i / numPartitionsInRDDb) 和 (RDD b).List(i % numPartitionsInRDDb)。 9) coalesce(numPartitions, shuffle = false) coalesce() 可以將 parent RDD 的 partition 個數進行調整,比如從 5 個減少到 3 個,或者從 5 個增加到 10 個。需要注意的是當 shuffle = false 的時候,是不能增加 partition 個數的(不能從 5 個變為 10 個)。 coalesce() 的核心問題是 如何確立 CoalescedRDD 中 partition 和其 parent RDD 中 partition 的關系。
  • coalesce(shuffle = false) 時,由于不能進行 shuffle,問題變為 parent RDD 中哪些partition 可以合并在一起。合并因素除了要考慮 partition 中元素個數外,還要考慮 locality 及 balance 的問題。因此,Spark 設計了一個非常復雜的算法來解決該問題(算法部分我還沒有深究)。注意Example: a.coalesce(3, shuffle = false)展示了 N:1 的 NarrowDependency。
  • coalesce(shuffle = true) 時,由于可以進行 shuffle,問題變為如何將 RDD 中所有 records 平均劃分到 N 個 partition 中。很簡單,在每個 partition 中,給每個 record 附加一個 key,key 遞增,這樣經過 hash(key) 后,key 可以被平均分配到不同的 partition 中,類似 Round-robin 算法。在第二個例子中,RDD a 中的每個元素,先被加上了遞增的 key(如 MapPartitionsRDD 第二個 partition 中 (1, 3) 中的 1)。在每個 partition 中,第一個元素 (Key, Value) 中的 key 由 (new Random(index)).nextInt(numPartitions) 計算得到,index 是該 partition 的索引,numPartitions 是 CoalescedRDD 中的 partition 個數。接下來元素的 key 是遞增的,然后 shuffle 后的 ShuffledRDD 可以得到均分的 records,然后經過復雜算法來建立 ShuffledRDD 和 CoalescedRDD 之間的數據聯系,最后過濾掉 key,得到 coalesce 后的結果 MappedRDD。
10) repartition(numPartitions) 等價于 coalesce(numPartitions, shuffle = true)

Primitive transformation()

combineByKey() 分析了這么多 RDD 的邏輯執行圖,它們之間有沒有共同之處?如果有,是怎么被設計和實現的? 仔細分析 RDD 的邏輯執行圖會發現,ShuffleDependency 左邊的 RDD 中的 record 要求是 <key, value> 型的,經過 ShuffleDependency 后,包含相同 key 的 records 會被 aggregate 到一起,然后在 aggregated 的 records 上執行不同的計算邏輯。實際執行時(后面的章節會具體談到)很多 transformation() 如 groupByKey(),reduceByKey() 是邊 aggregate 數據邊執行計算邏輯的,因此共同之處就是 aggregate 同時 compute()。Spark 使用 combineByKey() 來實現這個 aggregate + compute() 的基礎操作。 combineByKey() 的定義如下: def combineByKey[C](createCombiner: V => C,mergeValue: (C, V) => C,mergeCombiners: (C, C) => C,partitioner: Partitioner,mapSideCombine: Boolean = true,serializer: Serializer = null): RDD[(K, C)] ? 其中主要有三個參數 createCombiner,mergeValue 和 mergeCombiners。簡單解釋下這三個函數及 combineByKey() 的意義,注意它們的類型: 假設一組具有相同 K 的 <K, V> records 正在一個個流向 combineByKey(),createCombiner 將第一個 record 的 value 初始化為 c (比如,c = value),然后從第二個 record 開始,來一個 record 就使用 mergeValue(c, record.value) 來更新 c,比如想要對這些 records 的所有 values 做 sum,那么使用 c = c + record.value。等到 records 全部被 mergeValue(),得到結果 c。假設還有一組 records(key 與前面那組的 key 均相同)一個個到來,combineByKey() 使用前面的方法不斷計算得到 c'。現在如果要求這兩組 records 總的 combineByKey() 后的結果,那么可以使用 final c = mergeCombiners(c, c') 來計算。

Discussion

至此,我們討論了如何生成 job 的邏輯執行圖,這些圖也是 Spark 看似簡單的 API 背后的復雜計算邏輯及數據依賴關系。 整個 job 會產生哪些 RDD 由 transformation() 語義決定。一些 transformation(), 比如 cogroup() 會被很多其他操作用到。 RDD 本身的依賴關系由 transformation() 生成的每一個 RDD 本身語義決定。如 CoGroupedRDD 依賴于所有參加 cogroup() 的 RDDs。 RDD 中 partition 依賴關系分為 NarrowDependency 和 ShuffleDependency。前者是完全依賴,后者是部分依賴。NarrowDependency 里面又包含多種情況,只有前后兩個 RDD 的 partition 個數以及 partitioner 都一樣,才會出現 NarrowDependency。 從數據處理邏輯的角度來看,MapReduce 相當于 Spark 中的 map() + reduceByKey(),但嚴格來講 MapReduce 中的 reduce() 要比 reduceByKey() 的功能強大些,詳細差別會在 Shuffle details 一章中繼續討論。

轉載于:https://my.oschina.net/u/559635/blog/749768

總結

以上是生活随笔為你收集整理的Apache Spark 的设计与实现(job逻辑执行图)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

av看片网址 | 黄色亚洲大片免费在线观看 | 午夜久久福利视频 | 一区二区在线电影 | 久久久久久久久影视 | 欧美激情视频一区二区三区免费 | 国产成人久久精品77777 | 色天天综合久久久久综合片 | 亚洲在线免费视频 | 黄色三级免费观看 | 欧美激精品 | 天天射天天射天天射 | 99久久99久久免费精品蜜臀 | 日韩三级免费观看 | 国产一级免费电影 | 亚洲一区二区视频在线播放 | 999久久久免费精品国产 | 91成人网页版 | 久久久伊人网 | 在线观看国产中文字幕 | 久久中文欧美 | 日韩在线电影一区二区 | 国内精品久久影院 | 麻豆91小视频 | 97成人资源站 | 午夜精品一区二区国产 | 久久国产电影 | www.亚洲精品在线 | 国产精品网站一区二区三区 | 一区二区三区在线观看免费 | 狠狠插狠狠干 | 最新在线你懂的 | 亚洲v欧美v国产v在线观看 | 久久精品99精品国产香蕉 | 精品久久精品久久 | 精品国产欧美一区二区三区不卡 | 91桃色在线免费观看 | 亚洲午夜久久久久久久久电影网 | 中文字幕丝袜美腿 | 日韩午夜一级片 | 亚洲欧美激情精品一区二区 | 免费涩涩网站 | 一区二区三区日韩视频在线观看 | 亚洲免费资源 | 久久婷婷开心 | 麻豆视频91 | 亚洲精品乱码白浆高清久久久久久 | 菠萝菠萝在线精品视频 | 精品99视频 | 色综合久久综合网 | 韩日精品中文字幕 | 成人av免费网站 | 亚洲成av人影片在线观看 | 色婷婷激情 | 999热线在线观看 | 天天鲁一鲁摸一摸爽一爽 | 97国产精品亚洲精品 | 亚洲成人免费在线观看 | 亚洲精品在线一区二区三区 | 久久久久久久久久久成人 | av大全免费在线观看 | 欧美日韩在线观看一区二区三区 | 在线高清一区 | 最新影院| 久草视频在线免费看 | 国产一级片直播 | 日韩免费专区 | 日韩专区在线 | 天天操天天干天天综合网 | 国产成人精品999在线观看 | 蜜桃传媒一区二区 | 操老逼免费视频 | www.com.日本一级 | 免费亚洲成人 | 久久精品国产亚洲精品 | a级国产乱理伦片在线播放 久久久久国产精品一区 | 国产综合视频在线观看 | 综合久久2023| 国产中出在线观看 | 欧美一级电影片 | 麻豆一级视频 | 波多野结衣精品在线 | 国产福利91精品一区二区三区 | 色噜噜狠狠狠狠色综合 | 久久久免费看视频 | 狠狠操影视 | 97超级碰碰碰视频在线观看 | 又大又硬又黄又爽视频在线观看 | 337p日本欧洲亚洲大胆裸体艺术 | 国产黄色片在线 | av888.com| 黄色不卡av | 欧美专区亚洲专区 | 亚洲高清视频一区二区三区 | 亚洲一区二区黄色 | 国产高清视频免费在线观看 | 免费看av在线 | 精品免费视频123区 午夜久久成人 | 亚洲自拍自偷 | 蜜臀av在线一区二区三区 | 成人av一级片 | 91免费的视频在线播放 | 永久免费精品视频网站 | 香蕉在线视频观看 | 成年人电影免费看 | 成人小视频在线观看免费 | 91在线蜜桃臀 | 久久精品视频观看 | 国产一区免费视频 | 久久精品99国产精品酒店日本 | 精品久久视频 | 精品亚洲午夜久久久久91 | 成人中文字幕+乱码+中文字幕 | 一区二区不卡在线观看 | 亚洲精品国产成人 | 美女视频国产 | 免费看一级一片 | 国产黄在线 | 中文字幕在线免费97 | 四虎成人精品永久免费av九九 | 亚洲精品av在线 | 欧美成人一区二区 | 九九综合九九综合 | 精品91久久久久 | 爱av在线网 | 久久女同性恋中文字幕 | 六月丁香激情综合 | 久久专区 | 激情视频一区二区 | 一本之道乱码区 | 麻豆视频免费网站 | 99精品免费| 最近2019中文免费高清视频观看www99 | 五月天丁香综合 | 91日韩在线专区 | 欧亚久久 | 天天操综合网站 | 亚洲91精品在线观看 | 91女子私密保健养生少妇 | 99爱在线| 欧美午夜久久 | 综合网中文字幕 | 亚洲国产中文字幕在线观看 | 一区二区三区动漫 | 国产伦精品一区二区三区无广告 | 激情欧美一区二区三区 | 丁香视频| 成人午夜av电影 | 国产精品成人av在线 | 亚洲美女免费精品视频在线观看 | 一级成人免费视频 | 69精品久久久 | 国产精品久久久久国产a级 激情综合中文娱乐网 | 亚洲成aⅴ人片久久青草影院 | 97视频在线 | 久久精品96 | 国产中文字幕在线观看 | 黄色免费在线看 | 久久这里有 | 91精品国产欧美一区二区 | 六月婷色 | 亚洲精品国产成人 | 国产69久久 | www国产一区 | 免费观看十分钟 | 久久中文精品视频 | 国产午夜激情视频 | 国产亚洲免费观看 | 在线观看韩日电影免费 | 日韩精品视频在线免费观看 | 亚洲精品国产精品国自产观看浪潮 | 国产99久久 | 日韩a在线观看 | 国产色视频网站2 | 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 99热精品免费观看 | 国产精品午夜久久 | 涩涩成人在线 | 亚洲在线观看av | 麻豆激情电影 | 成人9ⅰ免费影视网站 | 国产麻豆电影 | 亚洲综合成人专区片 | 五月婷久 | 奇米777777 | 欧美国产日韩一区二区三区 | 亚洲一区日韩精品 | 欧美视屏一区二区 | 最新国产福利 | 成人亚洲精品国产www | 成人综合婷婷国产精品久久免费 | www.99热精品 | 日韩午夜精品 | 国产精品嫩草55av | 免费高清无人区完整版 | 国产涩涩在线观看 | 亚洲国产精品电影在线观看 | 蜜臀av性久久久久蜜臀av | 久久99九九99精品 | 亚洲成av人影片在线观看 | 国产精品初高中精品久久 | 一级国产视频 | 成人av电影免费观看 | 91人人干 | 久久99久久99精品免观看软件 | 免费观看黄色12片一级视频 | 国产黄色片在线免费观看 | 成人久久久久久久久 | 波多野结衣电影一区二区 | www.亚洲精品 | 99色国产| 伊人影院得得 | 精品国产一区二区三区日日嗨 | 91久久人澡人人添人人爽欧美 | 国产成人亚洲在线电影 | www.99在线观看 | 国产精品第52页 | av综合 日韩 | 激情综合五月 | 另类老妇性bbwbbw高清 | 天堂av官网 | av在线播放免费 | 国产一级一片免费播放放 | 免费在线一区二区三区 | 亚洲视频久久久 | 免费午夜视频在线观看 | 日本黄色大片儿 | 久草视频中文 | 中文字幕一区二区三区四区久久 | 中文在线资源 | 国产精成人品免费观看 | 久草视频在线资源站 | av大全在线 | 国产在线观看污片 | 99在线观看精品 | 91片黄在线观看 | 久久国产精品视频观看 | 国产一级黄 | 天堂网av 在线 | 免费视频一区二区 | 日韩av电影一区 | 国产视频精品免费 | 久久久黄色免费网站 | 国产精品久久久久av免费 | 国产成人亚洲在线观看 | 日韩av免费一区 | 亚洲精品久久久久www | 久久精品人人做人人综合老师 | 91亚洲精品久久久蜜桃网站 | 国产精品久久久久久久久久久久久 | 在线免费观看视频你懂的 | 一区二区三区免费在线播放 | 一区三区视频在线观看 | 精品自拍网| 免费国产在线精品 | 久草视频在线免费播放 | 丁香花在线视频观看免费 | av免费试看 | 国产成人免费观看 | 热re99久久精品国产99热 | 丁香狠狠 | 精品电影一区 | 欧美极品xxx | 色姑娘综合天天 | 国产日产高清dvd碟片 | 97小视频 | 久久电影国产免费久久电影 | 亚洲成人资源网 | 久久久久久久久久久高潮一区二区 | 免费久久99精品国产 | 国产成人亚洲在线电影 | 日日干激情五月 | 国产不卡av在线播放 | 中文字幕一区二区三区视频 | 色视频在线观看 | 成人一区二区三区在线观看 | 欧美激情精品久久久久久免费印度 | 日韩在线视 | 四虎在线免费观看 | 国产精品日韩在线观看 | 深夜免费福利网站 | 国产剧情久久 | 精品中文字幕在线 | 视频国产一区二区三区 | 成人小视频免费在线观看 | 国产一区电影在线观看 | 中文视频一区二区 | 香蕉视频在线播放 | 欧美一区二区日韩一区二区 | 亚洲视频专区在线 | 欧美日韩免费网站 | 国产一区国产二区在线观看 | 91观看视频 | 啪啪精品 | 国产又粗又猛又黄 | 日日躁天天躁 | 国产精品久久久久国产a级 激情综合中文娱乐网 | 麻豆精品传媒视频 | 欧美另类v | 国内精品久久久久影院优 | 国产精品 亚洲精品 | 日日夜夜操av | 日韩1级片 | 亚洲一级片在线观看 | 国产九九热视频 | 综合网色 | 久久调教视频 | 婷婷丁香在线观看 | www成人av | 久久综合色一综合色88 | www.日日操.com | 国产精品热| 久久视频网址 | 香蕉久草 | 最新中文字幕在线资源 | 国产不卡在线观看 | 国产免费精彩视频 | 中文字幕av有码 | 国产馆在线播放 | 国产成人三级在线观看 | 国产高清在线免费 | 在线精品视频在线观看高清 | 色com| 成人免费在线电影 | 五月天婷婷综合 | 青草视频网| 欧美另类交人妖 | 91精品爽啪蜜夜国产在线播放 | 亚洲精品国产欧美在线观看 | 伊人热| 久草视频在线资源 | 欧美看片| 91热视频 | 欧美色图亚洲图片 | 久草视频在线看 | 精品日韩中文字幕 | 黄色免费观看视频 | 99久久久国产精品免费观看 | 毛片黄色一级 | 久久久久久久久艹 | 欧美三级在线播放 | 伊人色**天天综合婷婷 | 美女国产网站 | 亚洲三级精品 | 91av官网| 一区在线观看视频 | 亚洲精品乱码久久久久久按摩 | 国产96精品| 免费看久久 | 欧美性生交大片免网 | 91精品国自产在线 | 97国产一区| 天天色图 | 久草在线欧美 | 男女视频91 | 日韩欧美视频在线观看免费 | 国产精品99久久久久久人免费 | 天天射天| 国产精品一区二区果冻传媒 | 欧美日韩激情视频8区 | 91在线看视频 | www日韩在线 | 欧美日韩高清在线一区 | 深爱激情综合 | 超级碰99| 久久精品国产免费看久久精品 | 天天操欧美| 国产在线精品二区 | 国模精品一区二区三区 | 色五月色开心色婷婷色丁香 | 国产九九精品视频 | 国产日韩欧美综合在线 | 久久精品久久99 | 色婷婷狠狠操 | 成人在线视频一区 | 最新中文在线视频 | 国产+日韩欧美 | 992tv在线观看 | 国产精品美女在线 | 2019久久精品 | 中文字幕一区在线 | 日韩理论片在线 | 精品久久久久久久久久久久久久久久久久 | 在线观看中文字幕一区二区 | 91久久人澡人人添人人爽欧美 | 深夜国产在线 | 在线小视频 | av在线播放不卡 | 久久精品一区二区三区四区 | 欧美成人播放 | 日韩激情片在线观看 | 欧美va天堂在线电影 | 久久精品伊人 | 香蕉色综合 | 99国产精品久久久久久久久久 | 久久极品 | 国产视频综合在线 | 国产精品久久视频 | 免费看三级网站 | 亚洲精品中文在线资源 | 欧美日韩精品综合 | 久久综合久色欧美综合狠狠 | 一本色道久久综合亚洲二区三区 | 精品国产一区二区三区噜噜噜 | 中文字幕资源站 | 91久久久国产精品 | 国产精品12 | 国产精品一区二区久久久 | 成人在线免费观看视视频 | 成人av在线电影 | 五月天综合激情 | 久久久久久久久久久精 | 99c视频在线 | 在线观看亚洲专区 | 中文字幕欧美日韩va免费视频 | 国产电影黄色av | 在线不卡的av | 亚洲激情 | 天天干天天怕 | 国产日韩精品一区二区在线观看播放 | 日韩欧美高清 | 国产高清免费在线播放 | 激情综合五月天 | 在线观看日韩一区 | 精品国产午夜 | 国产精品久久久久影院日本 | 毛片3| 在线免费黄色 | 久草国产视频 | 91在线观看欧美日韩 | 日韩最新中文字幕 | 色综合久久88色综合天天人守婷 | 日韩av在线不卡 | 国产不卡免费 | av字幕在线| 午夜视频免费 | 国产免费又粗又猛又爽 | 91中文在线视频 | 精品国产精品国产偷麻豆 | 欧美日韩1区 | 国产成人三级在线观看 | 日韩精品亚洲专区在线观看 | 欧美日韩一区二区在线观看 | 亚洲婷婷丁香 | 99精品欧美一区二区蜜桃免费 | 精品一区二区免费视频 | 国产麻豆视频在线观看 | 日韩欧美视频二区 | 蜜臀aⅴ国产精品久久久国产 | 久久天堂亚洲 | 亚洲国产精品va在线看黑人 | 国产v视频 | 亚洲精品国产成人 | 色视频在线观看免费 | 国内毛片毛片 | 国产综合精品久久 | 成人av免费电影 | 人人干免费 | 五月天综合色 | 亚洲国产精品99久久久久久久久 | 久久久久久国产精品 | 成人a免费 | 少妇精品久久久一区二区免费 | 93久久精品日日躁夜夜躁欧美 | 超碰在线天天 | 亚洲三级在线免费观看 | 91资源在线免费观看 | 国产999精品久久久久久 | 天天摸天天操天天舔 | 欧美日一级片 | 色中文字幕在线观看 | 国产女人40精品一区毛片视频 | 成人影音在线 | 在线免费中文字幕 | 亚洲成人资源在线 | 精品日韩中文字幕 | 一区二区 精品 | 日韩在线 | 国产精品ssss在线亚洲 | 亚洲国产黄色 | 在线国产专区 | 天天狠狠操 | 国产精品久久婷婷六月丁香 | 五月婷婷在线视频观看 | 天天干天天干天天干天天干天天干天天干 | 伊人狠狠 | 成人va视频 | 天天色成人 | 亚洲欧洲国产日韩精品 | 午夜婷婷在线观看 | 亚洲国内精品视频 | 激情久久久久 | 亚洲欧美日本国产 | 国产极品尤物在线 | 天天干国产 | 国产剧情久久 | 永久中文字幕 | 日韩欧美精品一区二区 | 欧美a级片网站 | aaa黄色毛片| 久久免费黄色大片 | 四虎影视成人永久免费观看视频 | 在线看黄色av | av亚洲产国偷v产偷v自拍小说 | 日韩欧美在线高清 | 日韩区在线观看 | 91成人蝌蚪 | 在线免费黄色 | 免费在线观看黄色网 | 日韩精品视频免费 | 欧美乱码精品一区 | 天天综合精品 | 国产91电影在线观看 | 国产精品久久久久久久久久直播 | 九七在线视频 | 成人 国产 在线 | 欧美日韩国产精品一区二区 | 日韩精品久久久久久 | 久久福利国产 | 国产成人精品999在线观看 | 91九色免费视频 | 91色蜜桃 | 三级av网站 | 久久99久久99精品免观看软件 | 亚一亚二国产专区 | 狠狠狠狠狠狠狠干 | 欧美日韩三区二区 | 亚洲天堂网在线播放 | 色综合激情久久 | 日韩欧美一区二区三区视频 | 天天做日日爱夜夜爽 | www.黄色片.com| 国产高清视频免费最新在线 | 成人h视频在线播放 | 亚洲综合情 | 全久久久久久久久久久电影 | 99精品视频一区二区 | 久久66热这里只有精品 | 久久精品99国产精品酒店日本 | 97在线观看免费视频 | 99色精品视频 | 日韩网站在线看片你懂的 | 天天碰天天操视频 | 免费看三级黄色片 | 欧美精品一区二区在线播放 | 久久久精品久久日韩一区综合 | 久久免费视屏 | 亚洲粉嫩av | 国产91精品一区二区麻豆亚洲 | 国产一区私人高清影院 | 亚洲免费观看在线视频 | 精品久久一区二区 | 精品在线一区二区三区 | 91视频免费看网站 | 色欧美日韩 | 六月丁香激情综合色啪小说 | 日韩欧美视频一区二区三区 | 在线观看中文字幕av | 欧美日韩午夜爽爽 | 久久精品激情 | av在线播放不卡 | 综合色综合| 丝袜制服综合网 | 色婷婷在线视频 | 人人超在线公开视频 | 久久精品五月 | 1000部18岁以下禁看视频 | 国产99久久精品一区二区300 | 免费男女网站 | 日韩成人免费观看 | 看国产黄色大片 | 欧美视频一区二 | 日本精a在线观看 | 国内丰满少妇猛烈精品播放 | 97精品国产97久久久久久免费 | 99热在线国产 | 日韩剧| 日本韩国精品一区二区在线观看 | 91av片| 人人看黄色| 精品国产一区二区三区av性色 | 亚洲成年人免费网站 | 久久精品国产精品 | 国产精品美女久久 | 99综合电影在线视频 | 五月开心色 | 亚洲成人av片 | 成人网页在线免费观看 | 国产成人福利片 | 久久调教视频 | 中文字幕在线视频一区二区 | 亚洲在线网址 | 99精品一区 | 国产成人综| 日韩欧美aaa | 日韩在线三区 | 国产日韩欧美网站 | 中文字幕在线观看第二页 | 天天干,狠狠干 | 二区三区av | 国产99久久99热这里精品5 | 国产99久久九九精品 | 9999激情 | 国产高清精品在线观看 | 日韩丝袜| 亚洲色视频 | 亚洲精品国产拍在线 | 综合久久综合久久 | 欧美性生活小视频 | 中文字幕在线观看三区 | 国产精品成人免费精品自在线观看 | 友田真希x88av | 天天射天天干天天操 | 国产精品一区二区在线看 | x99av成人免费 | 成人久久久久久久久久 | 国产黄色播放 | 免费观看v片在线观看 | 综合色婷婷| 国产精品99久久久精品免费观看 | 337p日本大胆噜噜噜噜 | 欧美日韩破处 | 九九热只有精品 | 激情综合色播五月 | 精品国产a| 九九热精品国产 | 99久久久久免费精品国产 | 日韩精品一区二区在线 | 夜夜婷婷 | 国产视频在线观看一区二区 | 久久女教师 | 美女网站视频免费都是黄 | 日韩成人黄色 | 操夜夜操| 亚州欧美视频 | 丝袜美腿av | 亚洲精品乱码久久久久久蜜桃动漫 | 99久久精品国产免费看不卡 | 国产亚洲精品电影 | 911香蕉视频 | 狠狠色丁香久久婷婷综合_中 | 玖玖爱国产在线 | 日本午夜在线亚洲.国产 | 中文字幕av播放 | 99热这里只有精品在线观看 | 色婷婷九月 | av大片免费在线观看 | 丁香九月婷婷 | 丁香六月婷婷开心 | 在线观看91久久久久久 | 国产精品日韩在线观看 | 精品日韩在线一区 | 天天操网站 | 国产亚洲日 | 日韩精品一区二区三区三炮视频 | 免费a视频 | 日韩在线视频国产 | 国产精品久久久久久久久费观看 | 超碰人人在线 | 国产无套精品久久久久久 | 精品一区在线 | 日本福利视频在线 | 97手机电影网 | 国产成人高清 | 国产成人一区二区三区久久精品 | 在线播放 一区 | 97在线视频免费看 | 99热99re6国产在线播放 | 国产一区视频在线播放 | 香蕉视频国产在线观看 | 午夜影院在线观看18 | 婷婷精品 | 国产午夜精品一区二区三区 | 六月丁香在线观看 | 国产伦精品一区二区三区在线 | 亚洲天堂网站 | 国产破处在线播放 | 久久99热这里只有精品国产 | 97色婷婷人人爽人人 | 在线免费视 | 成 人 黄 色 视频播放1 | 操天天操| 日韩在线第一区 | 免费福利在线视频 | 欧美国产三区 | 日韩视频图片 | 涩涩在线| 国产黄色在线看 | 成年在线观看 | 中文字幕一区在线 | 日韩欧美一区二区三区黑寡妇 | 午夜精品一区二区三区免费 | 精品亚洲视频在线 | 亚洲激情在线 | 国产一级视频在线观看 | 丁香综合 | 国产亚洲视频系列 | 国产在线国产 | 黄色app网站在线观看 | 91人网站 | 国产精品一区二区在线看 | 中国一级片视频 | 中文字幕在线观看免费高清完整版 | 久久毛片视频 | 天天操天天是 | 国产一级性生活 | 911久久香蕉国产线看观看 | 欧美成人一区二区 | 最近高清中文在线字幕在线观看 | 日韩精品最新在线观看 | 免费看一级特黄a大片 | 久久久久久久影院 | 成人免费观看av | 国产精品九九九九九 | 国产精品久久久久久久免费 | 久久久电影网站 | 在线观看 国产 | 蜜臀av免费一区二区三区 | 国产精在线 | 国产黄免费在线观看 | 久久图| www.狠狠 | 91香蕉嫩草| 欧美狠狠色 | 中文字幕你懂的 | 麻豆视频国产在线观看 | 亚洲精品视频在线免费播放 | 99精品欧美一区二区蜜桃免费 | 国内精品在线观看视频 | 日日干天天操 | 久久爱影视i | 日韩av在线小说 | 最新av在线免费观看 | 美女网站久久 | 亚洲精品99久久久久中文字幕 | 婷婷精品视频 | 中文字幕一区二区三区四区 | 国产一性一爱一乱一交 | 99久久99久久精品国产片果冰 | 日三级在线 | 久久欧美视频 | 日韩高清精品免费观看 | 色五月成人 | 免费看的黄网站 | 久久久久激情电影 | 婷婷中文字幕 | 精品久久99 | se视频网址| 欧美男同视频网站 | 久久精品视频在线播放 | 日韩免费三级 | 国产91影院 | 欧美成人黄| 日韩不卡高清视频 | 精品免费久久 | 日韩免费在线观看网站 | 久久久久久黄色 | 亚洲欧美日韩一二三区 | 婷婷久久精品 | 欧美精品亚洲二区 | 亚洲精品一区二区三区四区高清 | 久久av电影| 激情黄色一级片 | 精品国产免费看 | 亚洲欧美日韩精品久久奇米一区 | 香蕉一区| 精品在线不卡 | 超碰在线人人爱 | 久久污视频 | 在线视频 日韩 | 成人在线一区二区三区 | 国产精品久久影院 | 欧美孕交vivoestv另类 | 久久精品国产久精国产 | 91精品国产综合久久久久久久 | 高潮久久久 | 国产一级久久 | 国产精品嫩草影院123 | www.99在线观看 | 国产日产在线观看 | 亚洲人成免费 | 亚洲a免费 | 亚洲精品麻豆 | 国产在线中文字幕 | 国产日本在线观看 | 依人成人综合网 | 日韩精品在线免费观看 | 一级一级一片免费 | 欧美黄污视频 | 国产一级视屏 | 中文字幕免费观看全部电影 | 国产成本人视频在线观看 | 中文字幕有码在线播放 | 摸bbb搡bbb搡bbbb | 国产在线观看h | 天天操天天能 | 午夜精品电影一区二区在线 | 久久婷婷一区 | 亚洲一二三区精品 | 99精品久久精品一区二区 | 久久99精品久久久久久三级 | 午夜成人免费电影 | 蜜桃av久久久亚洲精品 | 婷婷六月中文字幕 | 九九精品久久久 | 欧美激情视频在线免费观看 | 国产高潮久久 | 波多野结衣在线播放一区 | 99热在线免费观看 | 欧亚日韩精品一区二区在线 | 国产免费中文字幕 | 免费视频你懂的 | 久久在线看 | 精品在线99| 久久9精品| 91精品国产九九九久久久亚洲 | 久久视频网址 | 久久精品爱爱视频 | 日本久久精品视频 | 精品国产1区二区 | 一区二区不卡高清 | 国产专区在线看 | 男女激情片在线观看 | 国产精品12345 | 欧美日韩在线电影 | 91亚洲视频在线观看 | 欧美aa一级片 | 久久在线免费观看视频 | 欧美亚洲另类在线视频 | 天堂网av在线 | 国产免费精彩视频 | 色综合久久中文字幕综合网 | 在线观看国产一区二区 | 成人毛片久久 | 91精品无人成人www | 91精品一区二区三区蜜桃 | 免费a现在观看 | 青青草国产精品视频 | 成人动漫精品一区二区 | 欧美日韩大片在线观看 | 国产精品九九热 | 中文字幕 国产精品 | 国产在线观看你懂得 | 精品久久久久久久久久久久 | 亚洲精品久久久久久中文传媒 | 黄色软件视频大全免费下载 | 国产成人精品女人久久久 | 国产精品久久久久久模特 | 亚洲精品黄色在线观看 | 天天操人人要 | 激情久久久久久久久久久久久久久久 | 成人av视屏 | 日韩中文在线视频 | 中文字幕国产一区二区 | 久久精品视频国产 | 女人18精品一区二区三区 | 午夜精品一区二区三区在线观看 | 夜夜嗨av色一区二区不卡 | 久久精品小视频 | 欧美日韩久久不卡 | 国产精品ⅴa有声小说 | 亚洲特级片 | 玖玖爱免费视频 | 美女网站视频免费黄 | 久久久久国产精品一区二区 | 国产精品毛片一区二区 | 青草草在线 | www.福利视频| 一区二区三区在线免费观看视频 | 日韩av免费一区 | 欧美成人基地 | 久久精品国亚洲 | 91成人在线免费观看 | 成人性生交大片免费看中文网站 | 玖草在线观看 | 国产精品久久一区二区三区不卡 | 精品中文字幕在线 | 九九九九九九精品任你躁 | 久久久久免费精品视频 | 婷婷色5月 | 伊人资源站 | 黄色片视频免费 | 国产精品永久免费观看 | 午夜91在线 | 免费亚洲黄色 | 成人免费视频a | 午夜久久久精品 | 国产美女网站在线观看 | 亚洲精品一区中文字幕乱码 | 亚洲色图 校园春色 | 中文字幕av全部资源www中文字幕在线观看 | 国产成人一区二区三区免费看 | 精品嫩模福利一区二区蜜臀 | 国产一级a毛片视频爆浆 | 亚洲第一成网站 | 久久天天操 | 日韩a在线观看 | 亚洲欧美日韩精品久久奇米一区 | 久久免费视频网站 | 国内精品久久久久久久久久久久 | 美女网站在线看 | 狠狠操导航 | 日本在线视频一区二区三区 | 五月激情姐姐 | 免费观看一区二区三区视频 | 一区二区成人国产精品 | 狠狠干综合 | 亚洲在线视频观看 | 欧美日韩中文另类 | 韩日三级在线 | 成人久久视频 | 国产精品成人国产乱 | 欧美aaa一级| 99re6热在线精品视频 | 成人国产精品久久久 | 成年人黄色大片在线 | 久久精品视频免费观看 | 免费色婷婷| 九九热视频在线播放 | 五月婷婷在线视频观看 | 久久免费视频这里只有精品 | 国产在线精品福利 | 国产免费观看高清完整版 | 日韩电影一区二区三区 | 国产一区二区电影在线观看 | 国产成人精品一区二区三区在线 | 亚洲精品一区二区三区新线路 | 久久精品高清视频 | 青草视频免费观看 | 日本黄色大片儿 | 天天插综合 | 麻豆视频大全 | 国产精品久久久久av福利动漫 | 国产精品一区二区精品视频免费看 | 欧美日韩久久一区 | 亚洲成人软件 | 日本美女xx | 国产中文字幕91 | 久久呀| 免费能看的黄色片 | 五月婷久| 久久社区视频 | 开心色停停 | 国产小视频国产精品 | 亚洲国产影院av久久久久 | 在线观看a视频 | 韩国av电影在线观看 | 黄色免费在线看 | 欧美一级乱黄 | 色资源网在线观看 | 成人黄色毛片 | 国产免费久久av | 日韩免费视频在线观看 | 国产91在线播放 | 欧美极品xxxx | 国产一级一片免费播放放 | 中文字幕在线视频第一页 | 国产美女精品人人做人人爽 | 国产在线久久久 | 国产视频 久久久 | 五月婷婷久久丁香 | 成人97视频 | 在线观看免费视频 | 中文乱码视频在线观看 | 在线观看免费观看在线91 | 欧美亚洲精品一区 | 97国产精品 | 免费99| 国产精品69av | а天堂中文最新一区二区三区 | 中文字幕在线观 | 操操碰| 2019国产精品 | 五月婷婷电影网 | 亚洲乱亚洲乱妇 | 日韩视频一二三区 | 国产精品视频最多的网站 | 久久99精品国产99久久 | 日韩一二三在线 | 久久成人高清视频 | 久久se视频 | 天天干天天操人体 | 中国美女一级看片 | 草久电影 | 欧美午夜理伦三级在线观看 | av在线精品 | 欧美视屏一区二区 | 一级黄色在线视频 | 91成人在线视频 | 国产91精品一区二区麻豆亚洲 | 2023年中文无字幕文字 | 国产精品剧情在线亚洲 | 人人看97 | 国产精品一区在线观看你懂的 | 成人在线播放免费观看 | 国产精品视频最多的网站 | 91精品国产亚洲 | 五月天久久久久 |