精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

国产日韩欧美在线视频观看| 澳门成人av网| 日韩最新中文字幕| 在线观看黄色国产| 欧洲福利电影| 欧美一区二视频| 成年在线观看视频| 日韩av资源| 亚洲人成免费| 中文字幕日韩在线播放| japan高清日本乱xxxxx| 亚洲大胆人体大胆做受1| 蜜桃久久av| 一区二区在线视频| 亚洲一二三四五| 成人美女黄网站| 亚洲精品视频在线观看免费| 精品伦理一区二区三区| 中文字幕人妻精品一区| 欧美视频四区| 亚洲色图综合网| 9.1在线观看免费| 日本精品久久| 亚洲综合一区二区三区| 亚洲国产日韩美| 少妇无码一区二区三区| 精品一区二区免费| 日韩av电影免费观看高清| 50一60岁老妇女毛片| 二区三区在线视频| 久久精品国产一区二区| 精品小视频在线| 日韩精品福利片午夜免费观看| 三级黄视频在线观看| 国产乱码精品一区二区三区五月婷 | 影音先锋一区| 中文国产成人精品| 狠狠人妻久久久久久综合蜜桃| 日韩电影免费| 丁香一区二区三区| 日韩美女在线看| 天天操天天干视频| 影视一区二区| 中文字幕欧美日韩在线| 色哟哟精品观看| 99久久香蕉| 欧美人妖巨大在线| 色片在线免费观看| 亚洲美女炮图| 精品国产乱码久久久久久天美| 4444在线观看| huan性巨大欧美| 1000精品久久久久久久久| 日韩免费在线播放| 欧美精品亚洲精品日韩精品| 亚洲一级网站| 国语自产精品视频在线看抢先版图片| 九九视频免费在线观看| 午夜电影亚洲| 欧美黑人性视频| 久久免费视频播放| 欧美日韩亚洲一区三区| 欧美极品少妇xxxxx| 久久久一区二区三区四区| 国产一区亚洲| 午夜精品在线视频| 精品国产免费观看| 视频一区二区三区在线| 在线免费观看羞羞视频一区二区| 偷拍女澡堂一区二区三区| 要久久电视剧全集免费| 国产午夜精品全部视频播放 | 99精品在线免费视频| 懂色av粉嫩av蜜臀av| 波多野结衣爱爱| 日韩精品成人一区二区在线| 日韩精品www| a级在线观看视频| www.丝袜精品| 日韩一区二区麻豆国产| 亚洲麻豆一区二区三区| 啪啪国产精品| 中文字幕av一区二区| 麻豆精品国产免费| 亚洲欧洲日本一区二区三区| 45www国产精品网站| 波多野结衣 久久| 久久超碰97人人做人人爱| 成人免费观看a| 亚洲av无码国产精品久久不卡 | 欧美三级日韩在线| 亚洲一一在线| 蜜桃av在线免费观看| 亚洲男人的天堂网| 日韩免费一级视频| 国产成人久久精品麻豆二区| 9191成人精品久久| 国产免费一区二区三区最新6| 国产91精品对白在线播放| 欧美亚洲一区二区三区四区| 国产综合中文字幕| 欧美成人影院| 欧美一区二区三区免费视频 | 欧美大片欧美激情性色a∨久久| 国产无遮挡裸体免费视频| 日本在线不卡视频| 91豆花精品一区| 在线观看一二三区| 国产成人aaaa| 国产亚洲二区| 国产精品一区二区黑人巨大| 成人激情小说乱人伦| 国产网站一区二区三区| 日韩久久免费视频| 性爱在线免费视频| 美女一区2区| 神马久久桃色视频| 国产av 一区二区三区| 麻豆精品91| 51国产成人精品午夜福中文下载| 蜜桃视频在线观看网站| 亚洲欧美日韩小说| 亚洲一区二区三区乱码| www.youjizz.com在线| 欧美精品久久久久久久多人混战| 精品这里只有精品| 国产精品欧美一区二区三区不卡 | 精品av中文字幕在线毛片| 亚洲精品成人悠悠色影视| 一区二区三区视频在线观看免费| baoyu135国产精品免费| 久久久精品免费视频| 中文字幕精品三级久久久| 国产精品亚洲成人| 综合色婷婷一区二区亚洲欧美国产| 亚洲精品成av人片天堂无码| 国产精品丝袜久久久久久app| 国产91xxx| 日韩伦理精品| 精品国产人成亚洲区| japan高清日本乱xxxxx| 欧美激情偷拍自拍| 热99精品里视频精品| 五月婷婷综合久久| 国产精品美女久久久久aⅴ| 久久久久久久久久福利| 欧美变态挠脚心| 欧美激情网友自拍| 久久久久久无码精品大片| 91女厕偷拍女厕偷拍高清| 久久久久久久久久伊人| 欧美一级鲁丝片| 日韩电影中文字幕| 波兰性xxxxx极品hd| 永久免费av在线| 午夜精品国产| 国产精品网站大全| 三区四区电影在线观看| 欧美私人免费视频| 91狠狠综合久久久久久| 日本人妖一区二区| 亚洲日本无吗高清不卡| 亚洲图片小说区| 欧美成人精品在线视频| 精品国产伦一区二区三| 一区二区三区中文字幕电影 | 一区二区三欧美| 亚洲天堂一区在线观看| 久久嫩草精品久久久久| 亚洲中文字幕无码专区| 真实原创一区二区影院| 欧美中文字幕精品| 1区2区3区在线观看| 欧美日韩在线三级| 亚洲xxxx3d动漫| 成人亚洲一区二区一| 久久久久久久午夜| 国产精伦一区二区三区| 97婷婷涩涩精品一区| 看电影就来5566av视频在线播放| 欧美中文字幕一二三区视频| 潮喷失禁大喷水aⅴ无码| 捆绑调教美女网站视频一区| 91视频成人免费| 国产一级成人av| 国产高清视频一区三区| 国产在线1区| 精品1区2区在线观看| 日韩综合在线观看| 自拍av一区二区三区| 国产人妻黑人一区二区三区| 国产麻豆综合| 欧美一区二区在线| 国产精品亚洲综合在线观看| 色综合久久88| 国产精品麻豆一区二区三区 | 视频一区二区三区在线看免费看| 久久99精品久久久久久国产越南 | av手机在线播放| 91在线免费看| 午夜精品123| sm捆绑调教视频| 成人涩涩免费视频| 一区二区在线播放视频| 欧美日韩国产色综合一二三四| 国产综合色一区二区三区| 国产综合色激情| 欧美极品美女视频网站在线观看免费 | 欧美在线观看视频一区二区三区 | 免费在线稳定资源站| 欧美乱妇15p| 久久99国产综合精品免费| 亚洲欧美另类久久久精品2019| 亚洲一区二区三区无码久久| 久久99精品国产.久久久久久| www.中文字幕在线| 中文字幕一区二区av| 精品国产乱码久久久久久88av| 超碰aⅴ人人做人人爽欧美| 欧美激情网站在线观看| 老司机av在线免费看| 亚洲天堂男人天堂| 无码精品视频一区二区三区| 欧美二区三区91| 国产美女www| 狠狠躁夜夜躁人人爽天天天天97 | 国产成+人+综合+亚洲欧美| 97免费视频在线| 亚洲七七久久综合桃花剧情介绍| 尤物九九久久国产精品的特点| 性生活视频软件| 777久久久精品| 日本妇乱大交xxxxx| 狠狠躁18三区二区一区| 亚洲精品在线观看av| 日本一区二区三区四区在线视频| 中国极品少妇xxxx| 国产成人免费视频网站| 福利片一区二区三区| 日韩黄色在线观看| 黄色片视频在线播放| 日韩香蕉视频| 狠狠狠色丁香婷婷综合久久五月| 国产卡一卡二在线| 成人免费在线播放| 亚洲国产精品一区二区第一页| 偷窥自拍亚洲色图精选| 精品国产乱码久久久久久久软件| 国产香蕉精品| 久久精品午夜一区二区福利| 在线精品国产亚洲| 88国产精品欧美一区二区三区| 日本在线视频网址| 欧美韩日一区二区| 黄色成人在线网| 欧美激情手机在线视频| 黄色网页在线看| 久久久精品日本| www在线免费观看视频| 久久国产天堂福利天堂| 污视频在线看网站| 久久久伊人日本| 国模精品视频| 日韩av123| 国产一区二区三区四区五区3d | 天堂久久一区| 亚洲www永久成人夜色| 日韩精品久久久久久久软件91 | 久久99国内| 日韩福利视频| 四季av一区二区三区免费观看| 一本—道久久a久久精品蜜桃| 91av精品| 久久99中文字幕| 久热re这里精品视频在线6| 九九热免费精品视频| 久久99精品国产.久久久久| 无码人妻久久一区二区三区蜜桃 | 亚洲影视九九影院在线观看| 少妇精品在线| 免费久久久一本精品久久区| 欧美日韩国产在线观看网站 | 久久亚洲国产精品一区二区| 在线免费观看av的网站| 国产成人免费av在线| 国产精品无码网站| 成人欧美一区二区三区白人| 污污视频网站在线免费观看| 亚洲精品伦理在线| 一区二区三区影视| 午夜久久久久久| 天堂免费在线视频| 制服丝袜亚洲精品中文字幕| 欧美xxxx日本和非洲| 精品中国亚洲| 久久久久网址| 色97色成人| 无码人妻少妇伦在线电影| 久久午夜精品| 亚洲一区和二区| 国产精品色一区二区三区| 国产一级一级片| 日本道精品一区二区三区| 亚洲系列第一页| 亚洲精品一区二区三区在线观看| 国产精品麻豆一区二区三区 | 免费观看日韩av| 国产一区自拍视频| 日韩av在线中文字幕| 国产高清av在线播放| 国内精品在线播放| 人妻丰满熟妇av无码久久洗澡 | 欧美一区二区三区不卡视频| 欧美一级高清大全免费观看| 欧洲成人一区二区三区| 91国产成人在线| 欧洲精品久久一区二区| www.久久撸.com| 日韩免费电影| 国内精品久久国产| 影音先锋日韩精品| 一女二男3p波多野结衣| 久久婷婷国产综合精品青草| 精品少妇久久久久久888优播| 欧美日韩色一区| 九色视频在线播放| 538国产精品视频一区二区| 网站一区二区| 日韩资源av在线| 久久都是精品| 国产老熟女伦老熟妇露脸| 亚洲图片欧美激情| 亚洲性猛交富婆| 亚洲三级黄色在线观看| 三级在线观看视频| 成人黄色影片在线| 久久国产精品成人免费观看的软件| 成人午夜视频免费在线观看| 99视频精品全部免费在线| 国产亚洲精品久久777777| 日韩一级黄色大片| 91精品久久| 久久精品中文字幕免费mv| 欧美大片免费| 国产精品一区视频网站| 欧美视频在线观看| 伊人影院在线观看视频| 亚洲欧美日韩国产综合| 91久久国语露脸精品国产高跟| 视频一区国产视频| 日本福利一区二区三区| 欧美久久久久| 成人做爰69片免费| 亚洲一二三四久久| 蜜臀久久精品久久久久| www.日韩不卡电影av| 电影91久久久| 美女在线免费视频| 国产成人综合自拍| 国产精品第108页| 亚洲精品黄网在线观看| 黑人巨大精品| 亚洲国产日韩欧美| 国产自产2019最新不卡| 欧美日韩精品一区二区三区视频播放| 欧美日韩久久一区| а√天堂资源地址在线下载| 国产高清自拍一区| 国产精品尤物| 国产精品无码无卡无需播放器| 国产日产欧美一区| 国产女主播喷水视频在线观看| 亚洲性猛交xxxxwww| heyzo在线欧美播放| 久久一区二区三区av| 性欧美长视频| а天堂中文在线资源| 91精品中文字幕一区二区三区| 伊人影院在线视频| 亚洲综合色av| 影音先锋亚洲电影| 美女100%露胸无遮挡| 91精品国产综合久久精品麻豆| 国模雨婷捆绑高清在线| 欧美日韩精品久久久免费观看| 日韩精品亚洲一区| 中文字幕亚洲欧美日韩| 日韩电视剧免费观看网站| 成人国产一区二区三区精品麻豆| 久久久一二三四| 99re66热这里只有精品3直播 | 在线观看免费成人| www国产在线观看| 激情视频一区二区| 裸体一区二区三区| 国产精品7777| 日韩在线小视频| 九九99久久精品在免费线bt| 国产91在线视频观看| 自拍偷拍国产精品|