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

終于有人將Spark的技術框架講明白了

開發 架構 Spark
Spark是加州大學伯克利分校的AMP實驗室開源的類似MapReduce的通用并行計算框架,擁有MapReduce所具備的分布式計算的優點。但不同于MapReduce的是,Spark更多地采用內存計算,減少了磁盤讀寫,比MapReduce性能更高。

 [[423922]]

Spark是加州大學伯克利分校的AMP實驗室開源的類似MapReduce的通用并行計算框架,擁有MapReduce所具備的分布式計算的優點。但不同于MapReduce的是,Spark更多地采用內存計算,減少了磁盤讀寫,比MapReduce性能更高。同時,它提供了更加豐富的函數庫,能更好地適用于數據挖掘與機器學習等分析算法。

Spark在Hadoop生態圈中主要是替代MapReduce進行分布式計算,如下圖所示。同時,組件SparkSQL可以替換Hive對數據倉庫的處理,組件Spark Streaming可以替換Storm對流式計算的處理,組件Spark ML可以替換Mahout數據挖掘算法庫。

Spark在Hadoop生態圈中的位置

01Spark的運行原理

如今,我們已經不再需要去學習煩瑣的MapReduce設計開發了,而是直接上手學習Spark的開發。這一方面是因為Spark的運行效率比MapReduce高,另一方面是因為Spark有豐富的函數庫,開發效率也比MapReduce高。

首先,從運行效率來看,Spark的運行速度是Hadoop的數百倍。為什么會有如此大的差異呢?關鍵在于它們的運行原理,Hadoop總要讀取磁盤,而Spark更多地是在進行內存計算,如下圖所示。

Hadoop的運行總是在讀寫磁盤

前面談到,MapReduce的主要運算過程,實際上就是循環往復地執行Map與Reduce的過程。但是,在執行每一個Map或Reduce過程時,都要先讀取磁盤中的數據,然后執行運算,最后將執行的結果數據寫入磁盤。因此,MapReduce的執行過程,實際上就是讀數據、執行Map、寫數據、再讀數據、執行Reduce、再寫數據的往復過程。這樣的設計雖然可以在海量數據中減少對內存的占用,但頻繁地讀寫磁盤將耗費大量時間,影響運行效率。

相反,Spark的執行過程只有第一次需要從磁盤中讀數據,然后就可以執行一系列操作。這一系列操作也是類似Map或Reduce的操作,然而在每次執行前都是從內存中讀取數據、執行運算、將執行的結果數據寫入內存的往復過程,直到最后一個操作執行完才寫入磁盤。這樣整個執行的過程中都是對內存的讀寫,雖然會大量占用內存資源,然而運行效率將大大提升。

Spark框架的運行原理如下圖所示,Spark在集群部署時,在NameNode節點上部署了一個Spark Driver,然后在每個DataNode節點上部署一個Executor。Spark Driver是接收并調度任務的組件,而Executor則是分布式執行數據處理的組件。同時,在每一次執行數據處理任務之前,數據文件已經通過HDFS分布式存儲在各個DataNode節點上了。因此,在每個節點上的Executor會首先通過Reader讀取本地磁盤的數據,然后執行一系列的Transformation操作。每個Transformation操作的輸入是數據集,在Spark中將其組織成彈性分布式數據集(RDD),從內存中讀取,最后的輸出也是RDD,并將其寫入內存中。這樣,整個一系列的Transformation操作都是在內存中讀寫,直到最后一個操作Action,然后通過Writer將其寫入磁盤。這就是Spark的運行原理。

Spark框架的運行原理圖

同時,Spark擁有一個非常豐富的函數庫,許多常用的操作都不需要開發人員自己編寫,直接調用函數庫就可以了。這樣大大提高了軟件開發的效率,只用寫更少的代碼就能執行更加復雜的處理過程。在這些豐富的函數庫中,Spark將其分為兩種類型:轉換(Transfer)與動作(Action)。

Transfer的輸入是RDD,輸出也是RDD,因此它實際上是對數據進行的各種Trans-formation操作,是Spark要編寫的主要程序。同時,RDD也分為兩種類型:普通RDD與名-值對RDD。

普通RDD,就是由一條一條的記錄組成的數據集,從原始文件中讀取出來的數據通常都是這種形式,操作普通RDD最主要的函數包括map、flatMap、filter、distinct、union、intersection、subtract、cartesian等。

名-值對RDD,就是k-v存儲的數據集,map操作就是將普通RDD的數據轉換為名-值對RDD。有了名-值對RDD,才能對其進行各種reduceByKey、joinByKey等復雜的操作。操作名-值對RDD最主要的函數包括reduceByKey、groupByKey、combineByKey、mapValues、flatMapValues、keys、values、sortByKey、subtractByKey、join、leftOuterJoin、rightOuterJoin、cogroup等。

所有Transfer函數的另外一個重要特征就是,它們在處理RDD數據時都不會立即執行,而是延遲到下一個Action再執行。這樣的執行效果就是,當所有一系列操作都定義好以后,一次性執行完成,然后立即寫磁盤。這樣在執行過程中就減少了等待時間,進而減少了對內存的占用時間。

Spark的另外一種類型的函數就是Action,它們輸入的是RDD,輸出的是一個數據結果,通常拿到這個數據結果就要寫磁盤了。根據RDD的不同,Action也分為兩種:針對普通RDD的操作,包括collect、count、countByValue、take、top、reduce、fold、aggregate、foreach等;針對名-值對RDD的操作,包括countByKey、collectAsMap、lookup等。

02Spark的設計開發

Spark的設計開發支持3種語言,Scala、Python與Java,其中Scala是它的原生語言。Spark是在Scala語言中實現的,它將Scala作為其應用程序框架,能夠與Scala緊密集成。Scala語言是一種類似Java的函數式編程語言,它在運行時也使用Java虛擬機,可以與Java語言無縫結合、相互調用。同時,由于Scala語言采用了當前比較流行的函數式編程風格,所以代碼更加精簡,編程效率更高。

前面講解的那段計算詞頻的代碼如下:

  1. 1val textFile = sc.textFile("hdfs://..."
  2. 2val counts = textFile.flatMap(line => line.split("")) 
  3. 3    .map(word => (word, 1)) 
  4. 4    .reduceByKey(_ + _) 
  5. 5counts.saveAsTextFile("hdfs://..."

為了實現這個功能,前面講解的MapReduce框架需要編寫一個Mapper類和一個Reducer類,還要通過一個驅動程序把它們串聯起來才能夠執行。然而,在Spark程序中通過Scala語言編寫,只需要這么5行代碼就可以實現,編程效率大大提升。這段代碼如果使用Java語言編寫,那么需要編寫成這樣:

  1.  1JavaRDD<String> textFile = sc.textFile("hdfs://..."); 
  2.  2JavaRDD<String> words = textFile.flatMap( 
  3.  3  new FlatMapFunction<String, String>() { 
  4.  4  public Iterable<String> call(String s) {  
  5.  5    return Arrays.asList(s.split(" ")); } 
  6.  6}); 
  7.  7JavaPairRDD<String, Integer> pairs = words.mapToPair( 
  8.  8  new PairFunction<String, String, Integer>() { 
  9.  9  public Tuple2<String, Integer> call(String s) {  
  10. 10    return new Tuple2<String, Integer>(s, 1); } 
  11. 11}); 
  12. 12JavaPairRDD<String, Integer> counts= pairs.reduceByKey( 
  13. 13  new Function2<IntegerIntegerInteger>() { 
  14. 14  public Integer call(Integer a, Integer b) { return a + b; } 
  15. 15}); 
  16. 16counts.saveAsTextFile("hdfs://..."); 

很顯然,采用Scala語言編寫的Spark程序比Java語言的更精簡,因而更易于維護與變更。所以,Scala語言將會成為更多大數據開發團隊的選擇。

下圖是一段完整的Spark程序,它包括初始化操作,如SparkContext的初始化、對命令參數args的讀取等。接著,從磁盤載入數據,通過Spark函數處理數據,最后將結果數據存入磁盤。

完整的Spark程序

03Spark SQL設計開發

在未來的三五年時間里,整個IT產業的技術架構將會發生翻天覆地的變化。數據量瘋漲,原有的數據庫架構下的存儲成本將越來越高,查詢速度越來越慢,數據擴展越來越困難,因此需要向著大數據技術轉型。

大數據轉型要求開發人員熟悉Spark/Scala的編程模式、分布式計算的設計原理、大量業務數據的分析與處理,還要求開發人員熟悉SQL語句。

因此,迫切需要一個技術框架,能夠支持開發人員用SQL語句進行編程,然后將SQL語言轉化為Spark程序進行運算。這樣的話,大數據開發的技術門檻會大大降低,更多普通的Java開發人員也能夠參與大數據開發。這樣的框架就是Spark SQL+Hive。

Spark SQL+Hive的設計思路就是,將通過各種渠道采集的數據存儲于Hadoop大數據平臺的Hive數據庫中。Hive數據庫中的數據實際上存儲在分布式文件系統HDFS中,并將這些數據文件映射成一個個的表,通過SQL語句對數據進行操作。在對Hive數據庫的數據進行操作時,通過Spark SQL將數據讀取出來,然后通過SQL語句進行處理,最后將結果數據又存儲到Hive數據庫中。

  1. 1CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name 
  2. 2  [(col_name data_type [COMMENT col_comment], ...)] 
  3. 3  [COMMENT table_comment] 
  4. 4  [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)] 
  5. 5  [CLUSTERED BY (col_name, col_name, ...) 
  6. 6  [SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS] 
  7. 7  [ROW FORMAT row_format] 
  8. 8  [STORED AS file_format] 
  9. 9  [LOCATION hdfs_path] 

首先,通過以上語句在Hive數據庫中建表,每個表都會在HDFS上映射成一個數據庫文件,并通過HDFS進行分布式存儲。完成建表以后,Hive數據庫的表不支持一條一條數據的插入,也不支持對數據的更新與刪除操作。數據是通過一個數據文件一次性載入的,或者通過類似insert into T1 select * from T2的語句將查詢結果載入表中。

  1. 1# 從NameNode節點中加載數據文件 
  2. 2LOAD DATA LOCAL INPATH './examples/files/kv1.txt' OVERWRITE INTO TABLE pokes; 
  3. 3# 從NameNode節點中加載數據文件到分區表 
  4. 4LOAD DATA LOCAL INPATH './examples/files/kv2.txt'  
  5. 5OVERWRITE INTO TABLE invites PARTITION (ds='2008-08-15'); 
  6. 6# 從HDFS中加載數據文件到分區表 
  7. 7LOAD DATA INPATH '/user/myname/kv2.txt' OVERWRITE  
  8. 8INTO TABLE invites PARTITION (ds='2008-08-15'); 

加載數據以后,就可以通過SQL語句查詢和分析數據了:

  1. 1SELECT a1, a2, a3 FROM a_table 
  2. 2LEFT JOIN | RIGHT JOIN | INNER JOIN | SEMI JOIN b_table 
  3. 3ON a_table.b = b_table.b 
  4. 4WHERE a_table.a4 = "xxx" 

注意,這里的join操作除了有左連接、右連接、內連接以外,還有半連接(SEMI JOIN),它的執行效果類似于in語句或exists語句。

有了Hive數據庫,就可以通過Spark SQL去讀取數據,然后用SQL語句對數據進行分析了:

  1.  1import org.apache.spark.sql.{SparkSession, SaveMode} 
  2.  2import java.text.SimpleDateFormat 
  3.  3object UDFDemo { 
  4.  4  def main(args: Array[String]): Unit = { 
  5.  5    val spark = SparkSession 
  6.  6    .builder() 
  7.  7    .config("spark.sql.warehouse.dir",""
  8.  8    .enableHiveSupport() 
  9.  9    .appName("UDF Demo"
  10. 10    .master("local"
  11. 11    .getOrCreate() 
  12. 12 
  13. 13    val dateFormat =  new SimpleDateFormat("yyyy"
  14. 14    spark.udf.register("getYear", (date:Long) => dateFormat.format(date).toInt) 
  15. 15    val df = spark.sql("select getYear(date_key) year, * from etl_fxdj"
  16. 16    df.write.mode(SaveMode.Overwrite).saveAsTable("dw_dm_fx_fxdj"
  17. 17  } 
  18. 18} 

在這段代碼中,首先進行了Spark的初始化,然后定義了一個名為getYear的函數,接著通過spark.sql()對Hive表中的數據進行查詢與處理。最后,通過df.write.mode().saveAsTable()將結果數據寫入另一張Hive表中。其中,在執行SQL語句時,可以將getYear()作為函數在SQL語句中調用。

有了Spark SQL+Hive的方案,在大數據轉型的時候,實際上就是將過去存儲在數據庫中的表變為Hive數據庫的表,將過去的存儲過程變為Spark SQL程序,將過去存儲過程中的函數變為Spark自定義函數。這樣就可以幫助企業更加輕松地由傳統數據庫架構轉型為大數據架構。

本書摘編自《架構真意:企業級應用架構設計方法論與實踐》,經出版方授權發布。

 

責任編輯:武曉燕 來源: 數倉寶貝庫
相關推薦

2021-08-31 19:14:38

技術埋點運營

2021-09-03 18:38:13

數據湖數據倉庫

2021-09-26 15:58:05

MySQL SQL 語句數據庫

2021-04-12 07:36:15

Scrapy爬蟲框架

2022-11-01 18:21:14

數據埋點SDK

2021-06-13 12:03:46

SaaS軟件即服務

2021-10-09 00:02:04

DevOps敏捷開發

2022-03-27 20:32:28

Knative容器事件模型

2021-08-04 20:35:03

可視化SeabornMatplotlib

2022-04-27 18:25:02

數據采集維度

2021-03-25 11:24:25

爬蟲技術開發

2021-10-17 20:38:30

微服務內存組件

2020-11-03 07:04:39

云計算公有云私有云

2021-10-12 18:31:40

流量運營前端

2021-12-03 18:25:56

數據指標本質

2021-06-29 11:21:41

數據安全網絡安全黑客

2020-11-30 08:34:44

大數據數據分析技術

2021-02-14 00:21:37

區塊鏈數字貨幣金融

2022-04-12 18:29:41

元數據系統架構

2021-03-03 21:31:24

量化投資利潤
點贊
收藏

51CTO技術棧公眾號

日韩毛片久久久| 国产午夜免费视频| 欧美日韩美女| 久久精品欧美日韩精品| 成人日韩在线电影| 国产原创中文在线观看 | 欧美黄免费看| 精品日韩在线一区| 黄色一级免费大片| 欧美黄色视屏| 国产情人综合久久777777| 91免费观看网站| 国产精品免费av一区二区| 第一会所sis001亚洲| 欧美一卡在线观看| 久久国产乱子伦免费精品| 国产在线激情| 久久久亚洲精品石原莉奈| 成人黄色影片在线| 欧美一区二区激情视频| 一区二区三区国产精华| 亚洲夜晚福利在线观看| 欧美午夜精品一区二区| 成人黄色视屏网站| 欧美日韩国产专区| 国产a级片免费看| 飘雪影视在线观看免费观看| 国产一区二区三区久久久| 57pao成人国产永久免费| 中国一级片在线观看| 精品国产一区一区二区三亚瑟| 日韩av成人高清| 欧美精品成人在线| 永久av免费网站| 欧美色爱综合| 亚洲欧洲国产一区| 国产激情视频网站| 亚洲国产中文在线| 91麻豆精品国产91| 日本女优爱爱视频| 92国产精品| 欧美日韩国产影院| 又粗又黑又大的吊av| 国内高清免费在线视频| 亚洲精品免费看| 黄色一级片网址| 伦xxxx在线| 日韩一区欧美小说| 在线观看日韩羞羞视频| 伊人免费在线| 中文字幕在线免费不卡| 视频一区二区三区在线观看| 欧美成人免费| 久久久久久久综合| 日本一区二区三区视频在线播放 | 亚洲GV成人无码久久精品| 精品成人一区| 久久久久久久影院| 国产小视频在线免费观看| 国产欧美另类| 欧美一区二区色| youjizz在线视频| 爽好久久久欧美精品| 国产国语videosex另类| 中文字幕第2页| 久久se精品一区精品二区| 国产欧洲精品视频| 国产欧美熟妇另类久久久| 国产在线播放一区二区三区| 亚洲伊人一本大道中文字幕| www.好吊色| 成人黄色在线网站| 欧美久久综合性欧美| 国产三级视频在线| 1024亚洲合集| 福利视频一区二区三区四区| 少妇视频一区| 欧美在线免费观看亚洲| 在线免费黄色网| 99久久香蕉| 亚洲欧美日韩高清| 日韩av网站在线播放| 欧美日韩精品| 欧美伊久线香蕉线新在线| 中文 欧美 日韩| 国产美女久久久久| 国产专区一区二区| fc2在线中文字幕| 亚洲激情自拍视频| 欧美黄网站在线观看| 欧美高清免费| 亚洲福利视频久久| 少妇高潮惨叫久久久久| 欧美性色综合| 国产精品黄色av| www三级免费| 国产亚洲欧美日韩俺去了| www.黄色网址.com| 亚洲天堂导航| 欧美一区二区三区在| 久久精品老司机| 欧美成人综合| 国产精品久久一区| 天堂av资源在线| 日韩一区在线免费观看| 国产av无码专区亚洲精品| 精品国产鲁一鲁****| 亚洲欧美在线磁力| 国产大片aaa| 狠狠色狠狠色综合| 日韩精品另类天天更新| 波多野在线观看| 91精品综合久久久久久| 亚洲黄色小说视频| 野花国产精品入口| 97人人模人人爽人人少妇| 国产精品ⅴa有声小说| 午夜视频在线观看一区二区| 男女污污视频网站| 清纯唯美日韩| 国产97在线播放| 天天干天天操av| 亚洲另类在线制服丝袜| 国产视频1区2区3区| 蜜桃一区二区三区| 2021久久精品国产99国产精品| 国产乱色精品成人免费视频 | 久久国产精品99久久久久久老狼 | 色嗨嗨av一区二区三区| 亚洲啪av永久无码精品放毛片| 欧美韩日高清| 国产精品久久电影观看| 日韩a在线看| 精品久久久久国产| 漂亮人妻被黑人久久精品| 欧美在线观看天堂一区二区三区| 国产噜噜噜噜噜久久久久久久久| 国产黄在线播放| 色欧美88888久久久久久影院| 漂亮人妻被黑人久久精品| 亚洲精品国产日韩| 国产精选在线观看91| a篇片在线观看网站| 欧美精品色一区二区三区| 久久久久亚洲AV成人无在| 三级亚洲高清视频| 日韩精品伦理第一区| 成人在线视频播放| 国产一区二区三区久久精品| 中文字字幕在线中文| 91丨九色丨国产丨porny| 九九爱精品视频| 美女网站色精品尤物极品姐弟| 久久久久久国产精品美女| 黄色av网站免费在线观看| 亚洲一区二区三区中文字幕在线| 在线观看一区二区三区四区| 黄色在线一区| 久久精品五月婷婷| 久久野战av| 日日噜噜噜夜夜爽亚洲精品 | 在线观看日韩羞羞视频| 91精品一久久香蕉国产线看观看| 久久视频免费观看| 性猛交富婆╳xxx乱大交天津| 一区二区不卡在线播放 | 亚州国产精品久久久| 无码国产精品一区二区色情男同| 欧美日韩免费看| 调教驯服丰满美艳麻麻在线视频| 久久精品国产99国产精品| 最新精品视频| 大陆精大陆国产国语精品| 91av视频在线| 五月婷婷在线视频| 日韩欧美一区二区免费| 天天爽夜夜爽夜夜爽精品| 久久久久久久久99精品| 欧美一级xxxx| 亚洲美女少妇无套啪啪呻吟| 欧美精品与人动性物交免费看| 日韩欧国产精品一区综合无码| 欧美肥老妇视频| 日韩a在线看| 777色狠狠一区二区三区| 国产网址在线观看| 中文字幕不卡一区| wwwxxx色| 亚洲在线免费| 中文字幕第一页亚洲| 精品精品国产三级a∨在线| 国产黑人绿帽在线第一区| 亚洲大胆人体大胆做受1| 日韩精品免费在线观看| 91麻豆成人精品国产| 亚洲成人自拍一区| 成人一区二区三| 亚洲草久电影| 欧美日韩成人一区二区三区| 亚洲一区二区小说| 欧美孕妇性xx| dy888亚洲精品一区二区三区| 精品亚洲男同gayvideo网站| 国产口爆吞精一区二区| 色综合天天综合在线视频| 中文字幕av播放| 国产亚洲欧美一级| 免费日本黄色网址| 国产精品一区二区果冻传媒| 成人性视频欧美一区二区三区| 欧美三级午夜理伦三级中文幕| 欧美日韩精品一区| 精品亚洲自拍| 亚洲综合中文字幕在线| 成人黄页网站视频| 欧美专区福利在线| xxx.xxx欧美| 欧美大胆a视频| 欧美成人视屏| 亚洲日本成人女熟在线观看| 天堂网2014av| 欧美大黄免费观看| 99久久精品免费看国产交换| 色88888久久久久久影院按摩 | 成人影视免费观看| 国产91精品入口| 亚洲一区二区中文字幕在线观看| 日韩二区在线观看| 国产欧美高清在线| 日韩香蕉视频| 日韩国产一级片| 国产一区二区三区自拍| 大桥未久一区二区三区| 亚洲精品二区三区| 国产高清免费在线| 国产大片一区| 国产高清精品软男同| 久久精品国产大片免费观看| 先锋在线资源一区二区三区| 综合色就爱涩涩涩综合婷婷| 久久久久无码国产精品一区| 卡一精品卡二卡三网站乱码| 国产精品yjizz| 丁香婷婷成人| 久久久久成人精品免费播放动漫| 久久久久97| 久久久亚洲综合网站| 天堂网av成人| 欧美日韩国产不卡在线看| 国产成人黄色| 亚欧精品在线| 婷婷综合社区| 欧美黄网在线观看| 国产精品激情电影| 香港三级韩国三级日本三级| 国产亚洲激情| 一本色道无码道dvd在线观看| 久久国产日本精品| 污污网站免费观看| 国内精品第一页| www.黄色网| 亚洲专区**| 日韩中文字幕视频在线| 日本成a人片在线观看| 久久久精品视频成人| 在线观看午夜av| 97在线视频免费播放| 忘忧草在线日韩www影院| 国产成人+综合亚洲+天堂| 国外成人福利视频| 91久久伊人青青碰碰婷婷| 国产精品一区二区三区美女| 久久本道综合色狠狠五月| av一区二区高清| 26uuu成人| 在线欧美亚洲| 成人在线免费播放视频| 麻豆国产精品视频| 又色又爽又黄18网站| 久久亚洲精品小早川怜子| 超碰人人干人人| 亚洲国产成人精品视频| 人人草在线观看| 91麻豆精品国产91久久久更新时间| 亚洲乱色熟女一区二区三区| 亚洲女同性videos| 成人video亚洲精品| 91精品国产色综合| 成人黄色毛片| 久久超碰亚洲| 综合一区二区三区| 91传媒久久久| 国产精品亚洲第一| 国产123在线| 亚洲第一福利视频在线| 中文字幕人妻互换av久久 | 好吊色一区二区三区| 亚洲欧美日韩精品久久奇米色影视| 欧美日韩欧美| 欧美一级bbbbb性bbbb喷潮片| vam成人资源在线观看| 狠狠色综合欧美激情| 国产精品x453.com| 免费黄色日本网站| 国产成人精品一区二| 人人妻人人澡人人爽| 五月激情六月综合| 国产乱淫a∨片免费观看| 亚洲色图欧美制服丝袜另类第一页| 国产网站在线免费观看| 日韩av电影在线免费播放| 91精品短视频| 青青草原国产免费| 日韩av在线免费观看不卡| 波多野结衣一二三区| 亚洲视频 欧洲视频| 国产成人精品亚洲| 日韩电影中文 亚洲精品乱码| 宅男在线观看免费高清网站| 国产精品第1页| 中文有码一区| 国产毛片视频网站| 成人免费的视频| 性色av无码久久一区二区三区| 色妹子一区二区| 免费一级在线观看| 2019精品视频| 加勒比色综合久久久久久久久| 男人草女人视频| 久久国产精品无码网站| 国产一二三四视频| 欧美亚洲综合网| 国产永久免费高清在线观看视频| 久久久女女女女999久久| 日韩精品亚洲专区在线观看| 亚洲第一精品区| 激情综合一区二区三区| 日本欧美一区二区三区不卡视频| 日韩欧美aaa| 麻豆av电影在线观看| 欧洲亚洲妇女av| 久久91成人| 爆乳熟妇一区二区三区霸乳| 久久久国产一区二区三区四区小说 | 国产精品果冻传媒| 夜夜亚洲天天久久| 亚洲第一视频在线| 久久久久久久久91| 电影一区二区在线观看| 可以在线看的av网站| 成人h版在线观看| 成人精品在线看| 亚洲精品美女久久久久| 一级毛片久久久| 欧美亚洲爱爱另类综合| 日韩成人av影视| 成人自拍小视频| 精品国产1区二区| 国产污视频在线播放| 欧美精品123| 日韩精品乱码免费| 国产大屁股喷水视频在线观看| 欧美卡1卡2卡| 欧美色图天堂| 欧美二区三区在线| 免费国产亚洲视频| 欧美成人三级视频| 亚洲国产日韩欧美综合久久| 欧美片第一页| 一区二区三区一级片| 不卡的av电影| 日本一本在线观看| 久热爱精品视频线路一| 国产精品极品国产中出| 国产精品-区区久久久狼| 国产免费观看久久| www.成人免费视频| 日本电影亚洲天堂| 国产精品福利在线观看播放| 成人免费看片载| 日本精品视频一区二区| 成人video亚洲精品| 久久99热只有频精品91密拍| 日韩二区三区四区| 九热这里只有精品| 国产亚洲欧美日韩精品| 亚洲2区在线| 国产超碰在线播放| 夜夜亚洲天天久久| 狠狠v欧美ⅴ日韩v亚洲v大胸| 91久久国产婷婷一区二区| 亚洲美女少妇无套啪啪呻吟| 国产精品久久久免费看| 亚洲第一精品福利| 亚洲a成人v| 国产精品va无码一区二区| 亚洲天堂中文字幕| 嫩草研究院在线| 国产精品视频免费一区| 美女国产一区二区|