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

10 億級(jí)海量數(shù)據(jù)運(yùn)算下,Apache Spark 的四個(gè)技術(shù)應(yīng)用實(shí)踐

原創(chuàng)
大數(shù)據(jù) Spark
本文主要介紹 Apache Spark 如何實(shí)現(xiàn)蘇寧中臺(tái)商品價(jià)格信息的 TB 級(jí)別復(fù)雜業(yè)務(wù)數(shù)據(jù)處理運(yùn)算,以及其中碰到的問(wèn)題和解決方案。

[[196475]]

【51CTO.com原創(chuàng)稿件】2013 年,蘇寧大數(shù)據(jù)團(tuán)隊(duì)以 Hadoop 生態(tài)系統(tǒng)為核心構(gòu)建了整套大數(shù)據(jù)平臺(tái),為整個(gè)蘇寧集團(tuán)所有業(yè)務(wù)團(tuán)隊(duì)提供大數(shù)據(jù)的存儲(chǔ)以及計(jì)算能力。

在蘇寧中臺(tái)供應(yīng)鏈計(jì)算等應(yīng)用場(chǎng)景下,我們基于 Apache Spark 來(lái)構(gòu)建整套零售核心數(shù)據(jù)計(jì)算與分析平臺(tái),解決海量數(shù)據(jù)離線和在線計(jì)算時(shí)效和性能問(wèn)題。

本文主要介紹 Apache Spark 如何實(shí)現(xiàn)蘇寧中臺(tái)商品價(jià)格信息的 TB 級(jí)別復(fù)雜業(yè)務(wù)數(shù)據(jù)處理運(yùn)算,以及其中碰到的問(wèn)題和解決方案。

蘇寧大數(shù)據(jù)平臺(tái)和整體框架結(jié)構(gòu)

蘇寧大數(shù)據(jù)平臺(tái)的整體架構(gòu)以開(kāi)源的基礎(chǔ)平臺(tái)為主,輔助以自研的組件。

圖 1:蘇寧大數(shù)據(jù)平臺(tái)架構(gòu)

圖 2:大數(shù)據(jù)開(kāi)發(fā)平臺(tái)

綜合商品價(jià)格運(yùn)算系統(tǒng)中 Spark 的應(yīng)用

在整個(gè)綜合商品價(jià)格運(yùn)算系統(tǒng)中,我們對(duì)供應(yīng)鏈等數(shù)據(jù)進(jìn)行了整合,生成了目前全部可售商品的價(jià)格庫(kù)存等數(shù)據(jù)。

該數(shù)據(jù)的整合涉及到多個(gè)外圍系統(tǒng)的數(shù)據(jù)整合和業(yè)務(wù)的執(zhí)行。在該項(xiàng)目中,我們運(yùn)用 Spark 技術(shù)來(lái)解決海量數(shù)據(jù)抽取、海量數(shù)據(jù)運(yùn)算的問(wèn)題

整體流程可以描述為:

  • 使用 Spark 從上游系統(tǒng)的 DB2、MySQL 生產(chǎn)環(huán)境備庫(kù)中抽取全量數(shù)據(jù)。
  • 使用 Spark 進(jìn)行數(shù)據(jù)的關(guān)聯(lián)和聚合,將各個(gè)源頭數(shù)據(jù)加工轉(zhuǎn)換成計(jì)算所需要的數(shù)據(jù)維度。
  • 運(yùn)用 Spark 的 Map 進(jìn)行全量數(shù)據(jù)的運(yùn)算轉(zhuǎn)換。
  • 存儲(chǔ)結(jié)果到 HDFS 中,并且在 Hive 表中建立外部表映射到 HDFS 目錄。

下面講述 Apache Spark 的四個(gè)技術(shù)應(yīng)用實(shí)踐。

使用 DataFrame 實(shí)現(xiàn)異構(gòu)數(shù)據(jù)庫(kù)海量數(shù)據(jù)抽取

數(shù)據(jù)處理的規(guī)劃:由于上游系統(tǒng)的數(shù)據(jù),尚未同步到大數(shù)據(jù)存儲(chǔ)系統(tǒng)中(HDFS,Hive,HBase),項(xiàng)目需要獨(dú)立進(jìn)行數(shù)據(jù)的 ETL 工作。

這些上游系統(tǒng)的數(shù)據(jù)存在以下特點(diǎn):

  • 數(shù)據(jù)量較大:兩個(gè)主要數(shù)據(jù)源頭數(shù)據(jù)量在 10 億級(jí)。
  • 存儲(chǔ)介質(zhì)不同:DB2,MySQL,Hive。
  • 存儲(chǔ)的分布不同:業(yè)務(wù)庫(kù)有 10 個(gè)庫(kù) 1000 張表,也有 5 個(gè)庫(kù) 100 張表,和不分表等存儲(chǔ)結(jié)構(gòu),分庫(kù)的規(guī)則有取表名后綴的模,有取表名后綴的區(qū)間等。
  • 在系統(tǒng)需求上,又需要將整個(gè)運(yùn)算任務(wù)壓縮到 1 小時(shí)之內(nèi)。我們最終采用的方案是使用 SparkSQL 的 JDBC 接口直接進(jìn)行數(shù)據(jù)的抽取和計(jì)算,相當(dāng)于將數(shù)據(jù) ETL 和數(shù)據(jù)的業(yè)務(wù)處理放置在一個(gè)程序中。
  • 相對(duì)于 Sqoop,這樣的解決方案是輕量級(jí)的,1000 個(gè) DataFrame 的 Load 要比 1000 個(gè) Sqoop 任務(wù)的資源消耗要低很多,以及調(diào)度開(kāi)銷(xiāo)的消耗也少很多。
  • 便于數(shù)據(jù)業(yè)務(wù)代碼,業(yè)務(wù)針對(duì)動(dòng)態(tài)表的切換,可以將讀取當(dāng)前表編號(hào)的模塊直接嵌入到 Spark 的代碼中進(jìn)行。

對(duì)于 DataFrame 在加載數(shù)據(jù)前的數(shù)據(jù)庫(kù) Schema 性能問(wèn)題,有了一個(gè)較好的優(yōu)化方案,以下是優(yōu)化前和優(yōu)化后,DataFrame 在創(chuàng)建過(guò)程中的流程:

圖 3 :優(yōu)化前 DataFrame 創(chuàng)建流程

圖 4 :優(yōu)化后的 DataFrame 創(chuàng)建流程

在使用該方案后,任務(wù) DataFrame 的 Load 數(shù)據(jù)時(shí)間從原先的接近 30 分鐘縮短為 5 分鐘以內(nèi)。

使用 SparkSQL 結(jié)合 ZipPartition 實(shí)現(xiàn)多層次多維度數(shù)據(jù)關(guān)聯(lián)和優(yōu)化

電商和互聯(lián)網(wǎng)的運(yùn)營(yíng)一般會(huì)涉及到數(shù)據(jù)維度的擴(kuò)散,為了簡(jiǎn)化運(yùn)營(yíng)端的操作難度和提高數(shù)據(jù)提供方的性能,一般會(huì)使用維度擴(kuò)散的方案,將上游運(yùn)營(yíng)系統(tǒng)的數(shù)據(jù)進(jìn)行數(shù)據(jù)的擴(kuò)散,放置到下游數(shù)據(jù)使用方<K,V>存儲(chǔ)中。

在進(jìn)行維度擴(kuò)散時(shí)經(jīng)常會(huì)有數(shù)據(jù)層次的問(wèn)題,數(shù)據(jù)需要多層的關(guān)聯(lián)和層次不同的數(shù)據(jù)需要關(guān)聯(lián)的情況。例如,上游運(yùn)營(yíng)的數(shù)據(jù)為全國(guó)、地區(qū)、城市維度并且有優(yōu)先級(jí),下游數(shù)據(jù)服務(wù)方的維度統(tǒng)一為城市維度。

圖 5:多層關(guān)聯(lián)示意圖

在應(yīng)用系統(tǒng)中,一般的做法是使用點(diǎn)關(guān)聯(lián)查詢,從***優(yōu)先級(jí)的維度進(jìn)行關(guān)聯(lián),關(guān)聯(lián)到則返回,關(guān)聯(lián)不到則繼續(xù)向下一個(gè)優(yōu)先級(jí)進(jìn)行關(guān)聯(lián),直到最終結(jié)果。

但是在 Spark 中,我們是需要運(yùn)用類(lèi)似于數(shù)據(jù)庫(kù)關(guān)聯(lián)的模式解決該問(wèn)題。

使用***優(yōu)先級(jí)進(jìn)行左關(guān)聯(lián),然后過(guò)濾出未關(guān)聯(lián)到的數(shù)據(jù),再依次將未關(guān)聯(lián)到的數(shù)據(jù)進(jìn)行下面優(yōu)先級(jí)的關(guān)聯(lián),直到生成結(jié)果。可以表示為:

  1. DataSet LeftJoin DimensionA =>    DataSetA 
  2. DataSetA Filter(A.Field == NULL) =>    DataSetToJoinB 
  3. DataSetA    Filter(A.Field != NULL) => DataSetAFinal 
  4. DataSetToJoinB LeftJoin DimensionB =>    DataSetB 
  5.               … 
  6. DataSetFinal = DataSetAFinal UNION    DataSetBFinal UNION DataSetCFinal 

這里就出現(xiàn)一個(gè)問(wèn)題:

  • 同樣的數(shù)據(jù)被多次使用,這里從技術(shù)上可以采用 Cache 的方法應(yīng)對(duì)。
  • 在使用 Cache 對(duì)數(shù)據(jù)緩存的方法上,假如***優(yōu)先級(jí)的數(shù)據(jù)少,則實(shí)際上大量的數(shù)據(jù)都會(huì)需要 Cache 并且落到***一層。

針對(duì)可能緩存多次數(shù)據(jù)的問(wèn)題,我們嘗試了另外一種方法,全部進(jìn)行左關(guān)聯(lián),并且?guī)蟽?yōu)先級(jí)。最終,我們使用 Group By 的方法對(duì)優(yōu)先級(jí)進(jìn)行了處理,可以表示為:

  1. DataSet    LeftJoin DimensionA with A => DataSetA 
  2. DataSet    LeftJoin DimensionB with B => DataSetB 
  3. DataSet    LeftJoin DimensionC with C => DataSetC 
  4. DataSetA    UNION DataSetB UINION DataSetC => DataSetToGroupBy 
  5. DataSetFinal    = (DataSetToGroupBy GroupBy Dimension).ApplyPriority() 

這里方案就只需要進(jìn)行一次的數(shù)據(jù) Cache。

最終我們根據(jù)兩種方案對(duì)實(shí)際測(cè)試的結(jié)果進(jìn)行取舍,該部分的優(yōu)化和一般的數(shù)據(jù)庫(kù)優(yōu)化一樣,都需要考慮到實(shí)際的數(shù)據(jù)關(guān)聯(lián)的情況和業(yè)務(wù)要求,獲取***化的方案。已達(dá)到***的任務(wù)運(yùn)行效益。

通過(guò)并行控制 DAG,優(yōu)化執(zhí)行時(shí)間

在進(jìn)行復(fù)雜業(yè)務(wù)的處理過(guò)程中,我們發(fā)現(xiàn)有部分?jǐn)?shù)據(jù)未進(jìn)行分表分庫(kù),并且數(shù)據(jù)量相對(duì)較大(約 20 億),這部分?jǐn)?shù)據(jù)的載入效率直接影響了后面的整個(gè)效率。

例如,我們正常使用 128 核進(jìn)行運(yùn)算,但一旦運(yùn)行到該步驟,則變成了單個(gè)核進(jìn)行運(yùn)行,時(shí)間長(zhǎng)達(dá) 5 分鐘。而 5 分鐘對(duì)于系統(tǒng)運(yùn)算有嚴(yán)格時(shí)間區(qū)間要求的業(yè)務(wù)需求是非常嚴(yán)峻的。

針對(duì)該問(wèn)題,我們使用 Driver 端并行提交任務(wù)的方法進(jìn)行解決。這是根據(jù)我們的任務(wù)模式所決定的,Driver 需要大量的時(shí)間建立數(shù)據(jù)的整個(gè)流程(4000 多張表的 DataFrame),并在最終存儲(chǔ)結(jié)果 action 代碼執(zhí)行之前就進(jìn)行數(shù)據(jù)的加載。

具體操作流程是:

  • 將該部分?jǐn)?shù)據(jù)標(biāo)記為 Cache。
  • 執(zhí)行 countSync 直接進(jìn)行數(shù)據(jù)加載。
  • 在必須用到該步驟的流程進(jìn)行 Get 命令阻塞 Driver 主線程,確保數(shù)據(jù)加載后進(jìn)行后續(xù)的操作。
  • 后續(xù)步驟直接使用已經(jīng)緩存的數(shù)據(jù)進(jìn)行運(yùn)算。

該方案可以用下圖表示:

圖 6:并行優(yōu)化示意圖

計(jì)算結(jié)果是通過(guò)并行的加載后,我們將整個(gè)的流程縮短了 5 分鐘。我們也在其他對(duì)于運(yùn)行時(shí)間有嚴(yán)格要求的項(xiàng)目中使用該方法對(duì)于業(yè)務(wù)流程中需要獨(dú)立計(jì)算,資源占用小,但是耗時(shí)較長(zhǎng)的模塊進(jìn)行了優(yōu)化,都一定程度上縮短了所需要的時(shí)間。

Spark 的 ClassLoader 所帶來(lái)的問(wèn)題和解決方案

該問(wèn)題出現(xiàn)的原因是公司對(duì)運(yùn)維和研發(fā)的數(shù)據(jù)隔離有明確的要求,代碼和研發(fā)的配置中不允許出現(xiàn)生產(chǎn)環(huán)境的數(shù)據(jù)庫(kù)配置。

原先的配置都是由運(yùn)維在 Websphere,Wildfly 等中間件中,通過(guò) JNDI 的方法配置給實(shí)際的應(yīng)用程序。

但是項(xiàng)目中又需要使用 JDBC 去直接連接生產(chǎn)環(huán)境的數(shù)據(jù)庫(kù),這樣就帶來(lái)了數(shù)據(jù)庫(kù)連接的問(wèn)題。

我們采用自定義的 JDBC 封裝原先的 JDBC,讓外層的 JDBC 以 Token 的方式獲取實(shí)際的數(shù)據(jù)庫(kù)連接,并且由實(shí)際的 JDBC 進(jìn)行操作。

在這種需求下,我們?cè)谔幚磉^(guò)程中考慮到目前分布式協(xié)調(diào)組件的壓力,將數(shù)據(jù)庫(kù)的 Token 封裝到 Jar 包,使用 ClassLoader 去讀取 Token 數(shù)據(jù)。

正常情況下,我們?cè)?Spark 端使用到的 Classloader 順序來(lái)加載 Token 文件:

ExtClassLoader-> AppClassLoader -> MutableURLClassLoader.

然而,在集群運(yùn)行時(shí),我們?cè)?Driver 主線程中的 ClassLoader 是 AppClassLoader,而它無(wú)法讀取到 http 的 jar 包里面的 token 文件。

我們進(jìn)行了簡(jiǎn)單的方案,將當(dāng)期線程中的 ClassLoader 替換成為當(dāng)期業(yè)務(wù)代碼類(lèi)的 ClassLoader。

Spark 應(yīng)用的實(shí)踐總結(jié)

我們?cè)趦r(jià)格運(yùn)算系統(tǒng)中使用了 SOA 模式中的 Aggregate Reporting 模式,將多個(gè)產(chǎn)品線的數(shù)據(jù)進(jìn)行了整合,提供了一個(gè)業(yè)務(wù)聚合的數(shù)據(jù)集市。

在模塊設(shè)計(jì)上,我們將數(shù)據(jù)的抽取和數(shù)據(jù)的運(yùn)算集成到一起,這樣在帶來(lái)效率和便利的同時(shí)也必然帶來(lái)模塊耦合。

從目前的實(shí)踐中,可以得出幾個(gè)結(jié)論:

  • 使用 JDBC 抽取大量數(shù)據(jù)表直接進(jìn)行計(jì)算是可行的,尤其針對(duì)分表分庫(kù)和可以進(jìn)行并行抽取的數(shù)據(jù)庫(kù)。但是有幾點(diǎn)需要特別關(guān)注:

①DataFrame 在大量創(chuàng)建時(shí),對(duì)帶來(lái)的 Driver 端時(shí)間消耗需要進(jìn)行優(yōu)化,減少數(shù)據(jù)流轉(zhuǎn)的時(shí)間。

②數(shù)據(jù)源中一旦有任何一個(gè)出現(xiàn)失敗,整個(gè)任務(wù)就可能需要重新運(yùn)算,這個(gè)是將 ETL 和運(yùn)算放到一個(gè)模塊帶來(lái)的問(wèn)題。

③DataFrame 大量并行抽取時(shí),對(duì)數(shù)據(jù)庫(kù)的 IO 壓力是比較大的,Spark 難以對(duì)這部分的并行度進(jìn)行控制。

需要根據(jù)實(shí)際情況考慮使用合并抽取(Union多張表),或者進(jìn)行任務(wù)拆分。任務(wù)拆分可以解決抽取時(shí)并行度和計(jì)算時(shí)并行度和資源要求不一樣的問(wèn)題。

  • ZipPartition 是數(shù)據(jù)關(guān)聯(lián)的最終解決方案,通過(guò) SparkSQL 和 RDD 的 JOIN 時(shí)維度層次不一樣,或者其他難以 JOIN 的問(wèn)題都可以通過(guò)這個(gè)方法解決。

但由于 ZipPartition 是 RDD 底層的操作,開(kāi)發(fā)人員幾乎完全控制 Worker 的關(guān)聯(lián)模型,它的性能調(diào)優(yōu)顯得尤其重要。

而對(duì)于有層次結(jié)構(gòu)的關(guān)聯(lián),使用 JOIN – FILTER –UNION 和 JOIN – UNION –GROUPBY,則需要分析實(shí)際數(shù)據(jù)的情況,再進(jìn)行取舍。

  • 在 Driver 端進(jìn)行并行可以解決部分計(jì)算時(shí)間的問(wèn)題,但需要滿足幾個(gè)條件:

①可以并行的時(shí)間點(diǎn),必須是在集群相對(duì)空閑的時(shí)候,例如:Driver 端在進(jìn)行初始化 RDD 的時(shí)候,在編排大型 DAG 的時(shí)候。

②可并行的數(shù)據(jù)必須在最終使用之前確認(rèn)加載到 Cache。

③不應(yīng)該對(duì)過(guò)于大的數(shù)據(jù)集進(jìn)行并行加載操作。

  • Spark 在 ClassLoader 層面進(jìn)行了變動(dòng),將配置文件封裝在 jar 包中有可能無(wú)法讀取,正確的做法是將配置信息使用同一配置管理,例如基于 Zookeeper 配置。

蘇寧未來(lái)的開(kāi)發(fā)方向

蘇寧在 IT 的系統(tǒng)架構(gòu)方面未來(lái)會(huì)根據(jù)各種不同的應(yīng)用需求使用異構(gòu)化的數(shù)據(jù)存儲(chǔ),在數(shù)據(jù)架構(gòu)層面逐漸向 DataLake+Big DataWarehousing 的模式發(fā)展。

數(shù)據(jù)服務(wù)必須具備以下能力:

  • 數(shù)據(jù)治理能力:各個(gè)系統(tǒng)通過(guò)統(tǒng)一的規(guī)范進(jìn)行數(shù)據(jù)的業(yè)務(wù)分類(lèi),數(shù)據(jù)輸出。其他系統(tǒng)和分析人員可以使用統(tǒng)一的數(shù)據(jù)規(guī)范運(yùn)用數(shù)據(jù)。

數(shù)據(jù)需要能夠支持快速的輸出,并且保持與業(yè)務(wù)系統(tǒng)實(shí)時(shí)同步。

  • 數(shù)據(jù)分析能力:在統(tǒng)一數(shù)據(jù)治理的基礎(chǔ)上進(jìn)行數(shù)據(jù)的分析,挖掘數(shù)據(jù)對(duì)于運(yùn)營(yíng)系統(tǒng)和銷(xiāo)售系統(tǒng)的價(jià)值。

我們將使用 Apache Spark 平臺(tái)結(jié)合 Hadoop 生態(tài)圈的其他工具進(jìn)行開(kāi)發(fā),逐步形成以 Spark,Storm 等為引擎的一體化數(shù)據(jù)處理分析平臺(tái),提升整個(gè)蘇寧的數(shù)據(jù)運(yùn)用能力。

話題討論

當(dāng)前大數(shù)據(jù)架構(gòu)最火熱的莫過(guò)于分布式計(jì)算架構(gòu) Hadoop 和流數(shù)據(jù)處理框架 Spark/Storm 這兩類(lèi)。

網(wǎng)上逐漸有一種聲音說(shuō) Hadoop 的日子已經(jīng)快到頭了,真是這樣嗎?未來(lái)大數(shù)據(jù)架構(gòu)究竟該走向何方呢? 歡迎大家直接在底部參與評(píng)論!

[[196477]]

王卓偉

蘇寧云商 IT 總部高級(jí)技術(shù)經(jīng)理

擁有多年 IT 平臺(tái)研發(fā)和管理工作經(jīng)驗(yàn),先后在聯(lián)創(chuàng),焦點(diǎn),蘇寧等大型互聯(lián)網(wǎng)和 IT 企業(yè)工作,現(xiàn)主要承擔(dān)蘇寧易購(gòu)價(jià)格數(shù)據(jù)分析和實(shí)時(shí)處理優(yōu)化提升,負(fù)責(zé)價(jià)格搜索響應(yīng)提升系統(tǒng),在大數(shù)據(jù)和數(shù)據(jù)分析上有多年的實(shí)戰(zhàn)經(jīng)驗(yàn),專(zhuān)注 Java,大數(shù)據(jù),SOA 等技術(shù)領(lǐng)域。

【51CTO原創(chuàng)稿件,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文作者和出處為51CTO.com】

責(zé)任編輯:武曉燕 來(lái)源: 51CTO技術(shù)棧
相關(guān)推薦

2022-03-29 15:17:51

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

2016-08-22 15:15:14

數(shù)據(jù)實(shí)踐

2022-09-13 15:22:04

邊緣計(jì)算云計(jì)算

2022-10-26 14:55:53

AIoT物聯(lián)網(wǎng)人工智能

2021-08-02 10:22:29

大數(shù)據(jù)安全云計(jì)算數(shù)據(jù)安全

2020-08-11 07:00:00

大數(shù)據(jù)IT技術(shù)

2021-03-08 15:42:54

數(shù)據(jù)庫(kù)Apache Iceb開(kāi)源

2022-04-24 22:57:10

混合云云計(jì)算數(shù)據(jù)安全

2023-11-09 18:07:25

Pycharm插件

2022-03-30 14:13:53

安全漏洞首席信息安全官

2022-02-08 23:16:34

元宇宙技術(shù)VR/AR

2023-11-03 00:28:44

ApacheFlink

2011-07-01 16:07:18

云應(yīng)用集成云計(jì)算

2020-12-29 08:00:00

Windows 10Windows微軟

2021-12-03 14:37:38

數(shù)據(jù)備份存儲(chǔ)備份

2024-01-25 08:59:52

大數(shù)據(jù)vivo架構(gòu)

2011-07-25 14:39:06

組策略

2020-09-10 10:16:09

開(kāi)源代碼安全性漏洞惡意組件

2022-12-13 14:41:01

技術(shù)人工智能

2011-05-18 09:32:14

java
點(diǎn)贊
收藏

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

欧美日韩性视频在线| 国产在线国偷精品免费看| 亚洲精品在线观看www| 男人亚洲天堂网| 狠狠v欧美ⅴ日韩v亚洲v大胸| 久久精品九九| 日韩性xxxx爱| 97精品人妻一区二区三区蜜桃| 成人美女黄网站| 亚洲欧美影音先锋| 久久国产精品精品国产色婷婷 | 亚洲综合无码一区二区| 极品尤物一区二区三区| 亚洲网站在线免费观看| 在线播放精品| 神马久久久久久| 超碰97在线资源站| 国产精品久一| 欧美亚洲综合久久| 国产3p露脸普通话对白| 日本三级视频在线播放| 99在线精品观看| 91久久久久久国产精品| av图片在线观看| 欧美日韩网址| 久久精品美女视频网站| 国产精品无码久久久久久| 久久av网站| 欧美色图一区二区三区| 免费看又黄又无码的网站| 黄色网址免费在线观看| 国产欧美一区二区精品婷婷| 精品乱码一区| 亚洲精品97久久中文字幕无码| 免费xxxx性欧美18vr| 欧美一级电影免费在线观看| 久久亚洲AV无码| 亚洲最新色图| 久久精品中文字幕一区| 日本美女xxx| 窝窝社区一区二区| 亚洲精品在线观看网站| 中文字幕av一区二区三区人妻少妇| 97久久网站| 欧洲av在线精品| av免费中文字幕| 涩涩av在线| 亚洲v中文字幕| av在线免费观看国产| av网址在线| 亚洲人被黑人高潮完整版| 一区二区不卡在线观看| 91社区在线观看播放| 日本一区二区免费在线| 色女孩综合网| 在线观看免费高清完整| 国产精品麻豆99久久久久久| 亚洲欧美久久234| 午夜在线视频| 日韩毛片视频在线看| 一区二区冒白浆视频| 欧美a在线看| 亚洲欧美色综合| 国产高清不卡无码视频| 欧美寡妇性猛交xxx免费| 亚洲一区二区欧美日韩| 日韩网站在线免费观看| 毛片在线网站| 在线国产电影不卡| 一级片视频免费观看| 在线观看欧美| 精品人在线二区三区| 中国xxxx性xxxx产国| 欧美一区自拍| 国产亚洲精品美女久久久| www成人啪啪18软件| 午夜免费一区| 久久久亚洲福利精品午夜| 久草国产精品视频| 日韩电影一区二区三区| 国产视频999| 亚洲国产精品久久久久久久| 26uuu精品一区二区在线观看| 日本婷婷久久久久久久久一区二区| 日本三级视频在线观看| 亚洲国产精品久久不卡毛片 | 久久久久久久久久综合 | 一道本视频在线观看| 成人激情久久| 日韩精品久久久久 | 外国成人激情视频| 久久久中精品2020中文| 中文字幕高清在线免费播放| 久久se精品一区精品二区| 97人摸人人澡人人人超一碰| 日韩三级电影网| 国产精品久久久久9999吃药| 999一区二区三区| 成人精品三级| 亚洲成人激情视频| 青青草华人在线视频| 黄色欧美成人| 国产精品专区第二| 无码国精品一区二区免费蜜桃| 国产精品入口麻豆九色| 欧美午夜性视频| 成人免费观看49www在线观看| 日韩精品免费在线播放| 在线免费观看亚洲视频| 久久影院亚洲| 国产丝袜不卡| 成人免费看片| 在线观看精品一区| 天堂www中文在线资源| 久久一区91| 日本免费久久高清视频| aaa国产视频| 中文字幕电影一区| 男人日女人逼逼| 日本一区二区三区播放| 国产性色av一区二区| 精品小视频在线观看| 精品综合久久久久久8888| 欧美日韩精品久久久免费观看| av网站在线免费| 欧美日韩日日骚| 亚洲午夜久久久久久久久红桃| 国精品一区二区| 91色琪琪电影亚洲精品久久| 国产爆初菊在线观看免费视频网站 | 久久亚洲高清| 国产精选在线| 亚洲成人免费网站| 欧美性x x x| 蜜桃av一区二区三区电影| 欧美亚洲一级二级| 中文在线а√在线8| 亚洲第一区中文99精品| 欧美黑人一级片| 国产一区二区精品久久99| 亚洲一区二区在线看| 精品视频在线一区二区在线| 国产一区二区免费| 91porny九色| 国产亚洲一区二区三区在线观看 | 欧美成人aaa片一区国产精品| 麻豆成人久久精品二区三区红 | 欧美午夜不卡视频| 色噜噜日韩精品欧美一区二区| 999亚洲国产精| 国产一区二区三区高清| 草草视频在线| 日韩精品在线免费观看视频| 天堂а√在线中文在线新版| 91欧美一区二区| 99精品免费在线观看| 国产探花一区| 国产精品入口免费视| 亚洲s色大片| 91精品国产乱码| 欧美黄片一区二区三区| 国产成人激情av| 中文精品无码中文字幕无码专区 | 午夜精品视频在线观看一区二区 | 国产精品美女黄网| brazzers在线观看| 亚洲精品在线观看www| 小泽玛利亚一区二区三区视频| 欧美国产日韩亚洲一区| 亚洲综合婷婷久久| 欧美一区二区三区另类| 国产精品一区二区三区在线观| 大菠萝精品导航| 亚洲欧洲日产国码av系列天堂| 欧美国产一级片| 亚洲天堂精品视频| 激情综合激情五月| 久久精品一区二区国产| 亚洲春色在线视频| 欧美一级大片在线视频| 91国产美女视频| yiren22亚洲综合伊人22| 欧美一区二区三区在线观看| 日韩成人高清视频| 国产欧美日韩不卡免费| 超碰91在线播放| 国产精品色网| 最新不卡av| 欧洲在线一区| 91精品久久久久久久久| 91破解版在线观看| 中文字幕精品一区二区精品| 成人乱码一区二区三区| 91极品视觉盛宴| 久青草视频在线观看| 久久精品夜夜夜夜久久| 制服.丝袜.亚洲.中文.综合懂| 久久综合伊人| 欧美大黑帍在线播放| 国产精品亚洲片在线播放| av日韩免费电影| 欧美精品总汇| 欧美高清自拍一区| 在线观看麻豆| 亚洲另类图片色| www.国产精品视频| 欧美性受极品xxxx喷水| 国产极品美女高潮无套嗷嗷叫酒店| 欧美国产国产综合| 国产xxxxxxxxx| 国产酒店精品激情| 91色国产在线| 香蕉久久国产| 2018中文字幕第一页| 999久久久亚洲| 蜜桃成人在线| 国产图片一区| av在线不卡一区| 四虎国产精品成人免费影视| 欧洲亚洲妇女av| av女在线播放| 欧美另类极品videosbest最新版本| 91九色在线porn| 亚洲欧洲视频在线| 天天摸天天碰天天爽天天弄| 日韩欧美电影一二三| 91国内精品视频| 欧美午夜视频网站| 日韩电影在线观看一区二区| 五月婷婷激情综合网| 青青草手机在线观看| 中文字幕一区二区三区色视频| 久久久久亚洲av成人无码电影| av午夜一区麻豆| 亚洲成av人片在线观看无| 国产精品18久久久久久vr| 91av视频免费观看| 美女视频黄久久| 最新中文字幕2018| 日本中文一区二区三区| 国产一线二线三线在线观看| 天堂va蜜桃一区二区三区| 欧美日韩亚洲第一| 美女91精品| 国产自偷自偷免费一区| 丝袜脚交一区二区| 北条麻妃视频在线| 久久亚洲视频| 污污网站免费看| 久久99精品久久久久| 天天操天天干天天做| 精品一区二区精品| 在线免费观看av网| 国产一区二区导航在线播放| 日本黄色三级网站| 国产成人av在线影院| 秘密基地免费观看完整版中文 | 日韩一二三四区| 亚洲精品久久久蜜桃动漫| 精品成a人在线观看| 婷婷丁香一区二区三区| 亚洲精品色婷婷福利天堂| 久久精品国产亚洲a∨麻豆| 国产亚洲精品一区二555| 波多野结衣在线影院| 日韩亚洲欧美成人| 人妖欧美1区| 欧美一级片在线播放| 精品视频在线一区二区在线| 亚洲va国产va天堂va久久| 一区二区三区四区精品视频| 久久九九视频| 成人一级毛片| 青青在线视频免费观看| 日韩视频中文| 天天爽人人爽夜夜爽| 国产最新精品免费| 逼特逼视频在线观看| 久久免费美女视频| av最新在线观看| 性欧美大战久久久久久久久| 国语对白做受69按摩| 日韩亚洲欧美在线观看| 天堂在线免费av| 中文字幕日韩av电影| 欧美人动性xxxxz0oz| 日韩av理论片| 日韩欧洲国产| 日韩jizzz| 好看不卡的中文字幕| 久久久久久久久久久久久久国产| 精品一区二区三区视频| 性久久久久久久久久久| 中文字幕一区二区三区视频| 黄色片免费观看视频| 这里是久久伊人| 久久国产精品高清一区二区三区| 美女精品视频一区| 搜成人激情视频| 国产一区免费观看| 999国产精品999久久久久久| 少妇性饥渴无码a区免费| 国产一区视频在线看| 一级片手机在线观看| 亚洲成av人片观看| 99在线观看免费| 色综久久综合桃花网| 欧美调教sm| 99视频在线免费观看| 日韩aaaa| 亚洲五月天综合| 99视频在线观看一区三区| 18岁成人毛片| 欧美日韩一区国产| 欧美日本韩国一区二区| 欧美激情喷水视频| 亚洲影视资源| 亚洲国产成人不卡| 久久99伊人| 菠萝菠萝蜜网站| 亚洲.国产.中文慕字在线| 国产成人麻豆精品午夜在线| www.精品av.com| ww久久综合久中文字幕| 久久久久久高清| 亚洲三级网站| 高清中文字幕mv的电影| 亚洲欧美欧美一区二区三区| 中国黄色一级视频| 亚洲日本中文字幕| 都市激情亚洲一区| 久久久久久久久久久久久久久久av| 精品福利电影| 精品久久久久一区二区| 亚洲一区二区三区在线播放| www五月婷婷| 欧美成在线视频| 日韩影片在线观看| 国产精品88久久久久久妇女 | 美女又爽又黄视频毛茸茸| 亚洲午夜影视影院在线观看| 国产成人精品免费看视频| 美女国内精品自产拍在线播放| 粉嫩av国产一区二区三区| 91免费视频黄| 国产河南妇女毛片精品久久久 | 在线免费不卡电影| 久久精品蜜桃| 国产精品永久免费观看| 婷婷激情综合| 可以看的av网址| 亚洲国产精品久久久男人的天堂| 婷婷伊人综合中文字幕| 96精品视频在线| 亚洲瘦老头同性70tv| 99草草国产熟女视频在线| 国产女人aaa级久久久级| 色婷婷久久综合中文久久蜜桃av| 日韩在线视频网| 美女精品久久| 九九热只有这里有精品| 26uuu另类欧美亚洲曰本| 久久久久久av无码免费看大片| 色吧影院999| 日韩欧美中文字幕在线视频 | 九色综合狠狠综合久久| 国产一二三区精品| 精品国产乱码久久久久久闺蜜| 国产精品电影| 亚洲国产精品www| 国产高清在线精品| 国产成人亚洲欧洲在线| 国产午夜精品美女视频明星a级| 丁香久久综合| 三级在线免费观看| 99久久精品久久久久久清纯| 香蕉污视频在线观看| 久久久精品一区二区| 国产精品玖玖玖在线资源| 国内外免费激情视频| 亚洲女爱视频在线| 少妇一区二区三区四区| 国产精品狠色婷| 国产一区日韩一区| 亚洲精品午夜视频| 欧美一区二区福利视频| 亚洲一区站长工具| 艳母动漫在线观看| 91麻豆swag| a天堂在线视频| 日本精品中文字幕| 欧美日韩视频| 先锋影音av在线| 精品国产伦一区二区三区免费 | 丁香五月网久久综合| 免费永久网站黄欧美| 成熟的女同志hd| 亚洲视频国产视频| 亚洲精品黑牛一区二区三区| 国产成人手机视频|