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

Hadoop 生態之 MapReduce 及 Hive 簡介

開發 前端 Hadoop
Hadoop 是一個計算框架,目前大型數據計算框架常用的大致有五種:僅批處理框架:Apache hadoop;僅流處理框架:Apache Storm、Apache Samza;混合框架:Apache Spark、Apache Flink.

[[280873]]

 1.計算框架

Hadoop 是一個計算框架,目前大型數據計算框架常用的大致有五種:

  • 僅批處理框架:Apache hadoop.
  • 僅流處理框架:Apache Storm、Apache Samza.
  • 混合框架:Apache Spark、Apache Flink.

這其中名氣最大、使用最廣的當屬 Hadoop 和 Spark。

雖然兩者都被稱為大數據框架,但實際層級不同。Hadoop 是一個分布式數據基礎設施,包括計算框架 MapReduce、分布式文件系統 HDFS、YARN 等。而Spark 是專門用來對分布式存儲的大數據的處理工具,并不會進行數據存儲,更像是 MapReduce 的替代。

在使用場景上,Hadoop 主要用于離線數據計算,Spark更適用于需要精準實時的場景。本文主要介紹 Hadoop,對 Spark 不做討論。

本篇文章可承接知識庫 Hadoop之HDFS (https://gitlab.aihaisi.com/docs/docs/issues/516) ,介紹下 Hadoop 另一重要組件 MapReduce,以及 Hive。

2. MapReduce

2.1 MapReduce 是什么

一個基于 Java 的并行分布式計算框架。

前文有提到 HDFS 提供了基于主從結構的分布式文件系統,基于此存儲服務支持,MapReduce 可以實現任務的分發、跟蹤、執行等工作,并收集結果。

2.2 MapReduce 組成

MapReduce 主要思想講的通俗一點就是將一個大的計算拆分成 Map(映射)和 Reduce(化簡)。說到這里,其實 JAVA8 在引入 Lambda 后,也有 map 和 reduce 方法。下面是一段 Java 中的用法:

  1. List<Integer> nums = Arrays.asList(1, 2, 3); 
  2. List<Integer> doubleNums = nums.stream().map(number -> number * 2).collect(Collectors.toList()); 
  3. 結果:[2,4,6] 
  4. Optional<Integersum = nums.stream().reduce(Integer::sum); 
  5. 結果:[6] 

代碼很簡單,map 負責歸類,reduce 負責計算。而 Hadoop 中的 MapReduce 也有異曲同工之處。

下面結合官方案例 WordCount 進行分析:

  1. public class WordCount { 
  2.  // Mapper泛型類,4個參數分別代表輸入鍵、值,輸出鍵、值類型 
  3.  public static class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable>{ 
  4.  private final static IntWritable one = new IntWritable(1); 
  5.  private Text word = new Text(); 
  6.  public void map(Object key, Text value, Context context) throws IOException, InterruptedException { 
  7.  // 字符解析 
  8.  StringTokenizer itr = new StringTokenizer(value.toString()); 
  9.  while (itr.hasMoreTokens()) { 
  10.  // nextToken():返回從當前位置到下一個分隔符的字符串 
  11.  word.set(itr.nextToken()); 
  12.  context.write(word, one); 
  13.  } 
  14.  } 
  15.  } 
  16.   
  17.  // Reducer同樣也是四個參數 
  18.  public static class IntSumReducer extends Reducer<Text,IntWritable,Text,IntWritable> { 
  19.  private IntWritable result = new IntWritable(); 
  20.  public void reduce(Text key, Iterable<IntWritable> values,Context context) throws  
  21.  IOException,InterruptedException { 
  22.  int sum = 0; 
  23.  // 循環values,并記錄“單詞”個數 
  24.  for (IntWritable val : values) { 
  25.  sum += val.get(); 
  26.  } 
  27.  result.set(sum); 
  28.  context.write(key, result); 
  29.  } 
  30.  } 

在這段代碼中,不難看出程序核心是 map 函數和 reduce 函數。是否 MapReduce 就是由這兩者組成的?接著往下看。

2.3 Map 和 Reduce

2.3.1 Map

在 WordCount 案例中,明顯看到 map 函數的輸入主要是一個

Context 在這里暫時性忽略,其是 Mapper 類的內部抽象類,一般計算中不會用到,可以先當做“上下文”理解。

map 函數計算過程是: 將這行文本中的單詞提取出來,針對每個單詞輸出一個

2.3.2 Reduce

接著就來看看 reduce ,這里輸入參數 Values 就是上面提到的由很多個 1 組成的集合,而 Key 就是具體“單詞” word。

它的計算過程是: 將集合里的1求和,再將單詞(word)與這個和(sum)組成一個

假設有兩個數據塊的文本數據需要進行詞頻統計,MapReduce 計算過程如下圖所示:

Hadoop 生態之 MapReduce 及 Hive 簡介

到這都很容易理解,畢竟只是個 HelloWorld 的例子~,但整個MapReduce過程中最關鍵的部分其實是在 map 到 reduce 之間。

還拿上面例子來說:統計相同單詞在所有輸入數據中出現的次數,一個 Map 只能處理一部分數據,而熱點單詞就很可能會出現在所有 Map 中了,意味著同一單詞必須要合并到一起統計才能得到正確結果。這種數據關聯幾乎在所有的大數據計算場景都需要處理,如果是例子這種的當然只對 Key 合并就OK了,但類似數據庫 join 操作這種較復雜的,就需對兩種類型(或更多)的數據依據 Key 關聯。

這個數據關聯操作在 MapReduce中的叫做:shuffle。

2.4 shuffle

shuffle 從字面意思來看,洗牌。下面是一個完整的MR過程,看一看如何洗牌。

Hadoop 生態之 MapReduce 及 Hive 簡介

先看左半邊

1. 從 HDFS 中讀取數據,輸入數據塊到一個個的 map,其中 map 完成計算時,計算結果會存儲到本地文件系統。而當 map 快要進行完時,就會啟動 shuffle 過程。

2. 如圖,shuffle 也可分為兩種,在Map端的是 Map shuffle。大致過程為:Map 任務進程會調用一個 Partitioner 接口,對 Map 產生的每個

這里就實現了對 Map 結果的分區、排序、分割,以及將同一分區的輸出合并寫入磁盤,得到一個分區有序的文件。這樣不管 Map 在哪個服務器節點,相同的 Key 一定會被發送給相同 Reduce 進程。Reduce 進程對收到的

再看右半邊

1. Reduce shuffle,又可分為復制 Map 輸出、排序合并兩階段。

  • Copy:Reduce 任務從各個 Map 任務拖取數據后,通知父 TaskTracker 狀態已更新,TaskTracker 通知 JobTracker。Reduce 會定期向JobTracker 獲取 Map 的輸出位置,一旦拿到位置,Reduce 任務會從此輸出對應的 TaskTracker 上復制輸出到本地,不會等到所有的Map任務結束。
  • Merge sort:
  • Copy 的數據先放入內存緩沖區,若緩沖區放得下就把數據寫入內存,即內存到內存 merge。
  • Reduce 向每個 Map 去拖取數據,內存中每個 Map 對應一塊數據,當內存緩存區中存儲的數據達到一定程度,開啟內存中 merge,把內存中數據merge 輸出到磁盤文件中,即內存到磁盤 merge。
  • 當屬于該 reduce 的 map 輸出全部拷貝完成,會在 reduce 上生成多個文件,執行合并操作,即磁盤到磁盤 merge。此刻 Map 的輸出數據已經是有序的,Merge 進行一次合并排序,所謂 Reduce 端的 sort 過程就是這個合并的過程。

2. 經過上一步Reduce shuffle后,reduce進行最后的計算,將輸出寫入HDFS中。

以上便是 shuffle 大致四個步驟,關鍵是 map 輸出的 shuffle 到哪個 Reduce 進程,它由 Partitioner 來實現,MapReduce 框架默認的 Partitioner 用 Key 哈希值對 Reduce 任務數量取模,相同 Key 會落在相同的 Reduce 任務 ID 上。

  1. public int getPartition(K2 key, V2 value, int numReduceTasks) { 
  2.  return (key.hashCode() & Integer.MAX_VALUE) % numReduceTasks;  
  3.  } 

如果對 Shuffle 總結一句話: 分布式計算將不同服務器中的數據合并到一起進行后續計算的過程。

shuffle 是大數據計算過程中神奇的地方,不管是 MapReduce 還是 Spark,只要是大數據批處理計算,一定會有 shuffle 過程,只有讓數據關聯起來,它的內在關系和價值才會呈現。

3. Hive

上一部分介紹了 MapReduce,接下來簡單談談 Hive .

我覺得任何一項技術的出現都是為了解決某類問題, MapReduce 毫無疑問簡化了大數據開發的編程難度。但實際上進行數據計算更常用的手段可能是 SQL,那么有沒有辦法直接運行 SQL ?

3.1 Hive是什么

基于Hadoop的一個數據倉庫系統,定義了一種類SQL查詢語言:Hive SQL。

這里有一個名詞 數據倉庫,數據倉庫是指:面向主題(Subject Oriented)、集成(Integrated)、相對穩定(Non-Volatile)、反應歷史變化(Time Variant)的數據集合,用于支持管理決策。

這么說可能有點抽象,分解一下:

  • 主題:數據倉庫針對某個主題來進行組織,指使用數據倉庫決策時所關心的重點方面。比如訂閱分析就可以當做一個主題。
  • 集成:數據倉庫要將多個數據源數據存到一起,但數據以前的存儲方式不同,要經過抽取、清洗、轉換。(也就是 ETL)
  • 穩定:保存的數據是一系列歷史快照,不允許修改,只能分析。
  • 時變:會定期接收到新的數據,反應出新的數據變化。

現在再看下定義:數據倉庫是將多個數據源的數據按照一定的主題集成,進行抽取、清洗、轉換。且處理整合后的數據不允許隨意修改,只能分析,還需定期更新。

3.2 為什么是 Hive

了解了 Hive 的基礎定義,想一下:一個依賴于 HDFS 的數據倉庫在 Hadoop 環境中可以扮演什么角色?

前面說到,可不可以讓 SQL 直接運行在 Hadoop 平臺,這里的答案便是 Hive。它可以將 Hive SQL 轉換為 MapReduce 程序運行。

Hive 初期版本默認 Hive on Mapreduce

啟動 hive 前通常要先啟動 hdfs 和 yarn, 同時一般需要配置 MySQL,Hive 依賴于 HDFS 的數據存儲,但為了能操作 HDFS 上的數據集,要知道數據切分格式、存儲類型、地址等。這些信息通過一張表存儲,稱為元數據,可以存儲到 MySQL 中。

  • 現在來看下 Hive 的部分命令
  • 新建數據庫:create database xxx;
  • 刪除數據庫:drop database xxx;
  • 建表:
  • create table table_name(col_name data_type);
  • Hive 的表有兩個概念:**內部表和外部表**。默認內部表,簡單來說,內部表數據存儲在每個表相應的HDFS目錄下。外部表的數據存在別處,要刪除這個外部表,該外部表所指向的數據是不會被刪除的,只會刪除外部表對應的元數據。
  • 查詢:
  • select * from t_table **where** a<100 **and** b>1000;
  • 連接查詢:
  • select a.*,b.* from t_a a join t_b b on a.name=b.name;

看到這里,可能會覺得我在寫 SQL, 沒錯,對于熟悉 SQL 的人來說,Hive 是非常易于上手的。

3.3 HIVE SQL To MapReduce

前面說到 HQL 可以‘轉換’為 MapReduce, 下面就來看看:一個 HQL 是如何轉化為 MapReduce 的Hive的基礎架構:

Hadoop 生態之 MapReduce 及 Hive 簡介

通過 Client 向 Hive 提交 SQL 命令。如果是 DDL,Hive 就會通過執行引擎 Driver 將數據表的信息記錄在 Metastore 元數據組件中,這個組件通常用一個關系數據庫實現,記錄表名、字段名、字段類型、關聯 HDFS 文件路徑等 Meta 信息(元信息)。

如果是DQL,Driver 就會將該語句提交給自己的編譯器 進行語法分析、解析、優化等一系列操作,最后生成一個 MapReduce 執行計劃。再根據執行計劃生成一個 MapReduce 的作業,提交給 Hadoop 的 MapReduce 計算框架處理。

比如輸入一條 select xxx from a ; 其執行順序為:首先在 metastore 查詢--> sql 解析--> 查詢優化---> 物理計劃--> 執行 MapReduce。

小結

本文大致闡述了什么是 MapReduce 及其組成和基本原理,同時也介紹了Hive。

其實在實踐中,并不需要常編寫 MapReduce 程序,主要的數據處理還是 SQL 分析,因此 Hive 在大數據應用中的擁有很大的作用。

責任編輯:華軒 來源: 杏仁技術站
相關推薦

2010-06-07 13:35:16

Hadoop簡介

2014-11-10 15:02:21

大數據云計算Hadoop

2018-09-18 15:21:47

Hive數據倉庫程序

2017-04-19 11:17:48

SparkHadoopMapReduce

2015-03-04 11:19:59

2016-11-25 09:48:54

Hadoop生態圈MapReduce

2013-10-16 16:38:39

鏈表矩陣

2013-01-21 13:22:56

IBMdW

2015-03-24 15:08:21

mapreducehadoop

2013-04-24 10:47:48

Hadoop集群

2019-03-12 11:12:50

大數據HadoopSpark

2019-07-19 15:42:57

Hadoop大數據YuniKorn

2010-06-03 16:32:09

Hadoop MapR

2012-04-23 10:30:38

Hadoop

2022-07-20 15:10:38

Docker大數據平臺

2010-06-07 13:02:46

Hadoop簡介

2017-02-17 09:14:14

Hadoop

2019-04-18 10:30:50

大數據Hadoop數據分析

2012-05-09 09:13:29

IDCHadoopMapReduce

2013-11-27 09:21:18

YARNMapReduceHadoop
點贊
收藏

51CTO技術棧公眾號

性爽视频在线| 精品人妻一区二区三区换脸明星| 香蕉久久夜色精品国产使用方法 | 毛片视频网站在线观看| 香蕉久久99| 欧美一区二区网站| 国产高清www| 岛国在线视频| 国产伦精一区二区三区| 欧美一级在线亚洲天堂| 久久精品亚洲a| 欧美aaaaa级| 7777女厕盗摄久久久| 成年人网站免费视频| 香港伦理在线| 99国产精品久久| 91九色国产视频| 日韩精品一区二区av| 99久久www免费| 日韩精品中文字幕久久臀| 超碰成人在线播放| 亚洲同志男男gay1069网站| 亚洲视频资源在线| 日韩欧美一区二区三区四区| 亚洲国产剧情在线观看| 久久国内精品视频| 日本亚洲欧美成人| 国产在线视频二区| 亚洲a一区二区三区| 国产亚洲精品日韩| 国产xxxxxxxxx| 亚洲三级av| 欧美日韩一区二区在线视频| 黑人糟蹋人妻hd中文字幕| 欧美一卡二卡| 亚洲人成精品久久久久| 亚洲区一区二区三区| 视频在线不卡| 不卡在线视频中文字幕| 4444kk亚洲人成电影在线| 伊人精品在线视频| 日韩电影在线免费看| 77777少妇光屁股久久一区| 免费毛片在线播放免费| 图片小说视频色综合| 中文字幕日韩精品在线| 妺妺窝人体色WWW精品| 亚洲区小说区图片区qvod按摩| 精品久久人人做人人爰| 在线成人精品视频| 91麻豆精品| 91精品国产欧美一区二区18| www.涩涩涩| 久久99国产精品二区高清软件| 色欧美88888久久久久久影院| 日韩av黄色网址| 在线播放高清视频www| 都市激情亚洲色图| 欧美精品色婷婷五月综合| 在线观看福利电影| 日韩欧美精品在线观看| www日韩在线观看| 日韩美女在线看免费观看| 一本一道综合狠狠老| 黄色片久久久久| 国产私拍福利精品视频二区| 欧洲中文字幕精品| gai在线观看免费高清| 四虎影视国产精品| 欧美大胆人体bbbb| 国产精品第七页| 国产精品一在线观看| 中文字幕亚洲情99在线| 无码黑人精品一区二区| 亚洲天堂偷拍| 青草青草久热精品视频在线网站| 日韩在线 中文字幕| 男女男精品网站| 成人在线一区二区| 亚洲国产精品suv| 91视频www| 亚洲精品成人三区| 伊人222成人综合网| 亚洲 欧美综合在线网络| 欧美极品欧美精品欧美图片| 欧美xnxx| 日韩精品一区二区三区蜜臀| 五级黄高潮片90分钟视频| 精品黄色一级片| 久久精品中文字幕免费mv| 久久一区二区三| 玖玖玖国产精品| 亚洲伊人第一页| 天天射天天色天天干| 国产精品日产欧美久久久久| wwwwww欧美| 亚洲第一二三四区| 欧美一区二区福利在线| 亚洲av无码国产精品久久| 欧美顶级大胆免费视频| 97免费视频在线播放| 依依成人在线视频| heyzo一本久久综合| 一区二区精品在线| 涩涩涩视频在线观看| 欧美日韩国产一级二级| 成人手机在线免费视频| 88国产精品视频一区二区三区| 78色国产精品| 国产草草影院ccyycom| 久久久不卡影院| 日本香蕉视频在线观看| 成人精品一区二区三区电影| 亚洲精品一区二区三区影院| 中国美女黄色一级片| 亚洲一区久久| 99热最新在线| 国产美女av在线| 欧美视频中文在线看| 老女人性生活视频| 清纯唯美综合亚洲| 热久久这里只有精品| 午夜精品久久久久久久99老熟妇| 国产欧美日本一区视频| 黄色一级在线视频| 精品视频在线观看网站| 国产一区二区三区在线免费观看| 日本免费一二三区| 国产精品中文字幕一区二区三区| 亚洲福利av在线| 天堂√8在线中文| 精品福利二区三区| 欧美日韩人妻精品一区二区三区 | 亚洲自拍偷拍麻豆| 日韩精品视频一二三| 国产午夜一区| 欧洲美女免费图片一区| 手机看片一区二区| 亚洲图片欧美一区| 亚洲一区和二区| 欧美特黄一区| 成人欧美一区二区| 四虎影院观看视频在线观看 | 国产成人av在线| 欧美zozo| 在线一区二区三区四区五区| 国产交换配乱淫视频免费| 在线视频免费在线观看一区二区| 国产精品国产三级国产专区53| 最新国产露脸在线观看| 日韩一区二区三区四区五区六区| 蜜臀av午夜精品久久| 国内精品第一页| 国产精品久久成人免费观看| 欧美大胆在线视频| 日本一级淫片色费放| 成人性视频免费网站| 可以看毛片的网址| 老牛国内精品亚洲成av人片| 91精品国产高清久久久久久久久| 污污视频在线免费看| 欧美性猛交xxxx乱大交蜜桃| 97超碰在线免费观看| 日韩电影一区二区三区四区| 日本一区二区在线视频| ww久久综合久中文字幕| 日韩在线中文字幕| www.久久综合| 精品久久中文字幕久久av| 91网站免费视频| 精品在线你懂的| 男人添女人荫蒂免费视频| 欧美黑人巨大videos精品| 日本久久久久亚洲中字幕| 午夜小视频在线| 日韩精品在线一区| 亚欧视频在线观看| 亚洲国产精品成人综合色在线婷婷| 我要看一级黄色大片| 伊人久久大香线蕉精品组织观看| 成人精品一二区| 日韩伦理精品| 精品国内亚洲在观看18黄| 午夜精品久久久久久久96蜜桃| 婷婷国产v国产偷v亚洲高清| 日韩av片在线| 懂色av一区二区夜夜嗨| 午夜精品久久久内射近拍高清| 日韩成人精品一区| 国产精品 日韩| 四虎影视4hu4虎成人| 欧美成人精品在线播放| 欧美另类自拍| 日韩区在线观看| youjizz在线视频| 亚洲人精品一区| 无码人妻aⅴ一区二区三区| 蜜臀精品久久久久久蜜臀| 警花观音坐莲激情销魂小说| 亚洲精品aaaaa| 95av在线视频| 经典三级一区二区| 久久免费国产视频| 免费观看在线黄色网| 亚洲精品理论电影| 国产白浆在线观看| 欧美日韩在线三级| 国产精品久久久久久99| 亚洲精品免费在线观看| 亚洲欧洲久久久| 成a人片亚洲日本久久| 夜夜夜夜夜夜操| 视频一区二区三区入口| 精品人妻少妇一区二区| 99精品美女| 日韩av一区二区三区在线| 国产精品chinese在线观看| 成人免费网站在线| 快播电影网址老女人久久| 91精品国产高清久久久久久| 午夜小视频在线观看| 最近2019年手机中文字幕| 青青操在线视频| 亚洲成色777777在线观看影院| 国产一区二区三区四区视频| 色综合天天性综合| 日韩精品一区二区不卡| 一区二区高清视频在线观看| 天天操夜夜操av| 国产精品久久久久久久久免费桃花| 亚洲人人夜夜澡人人爽| 成人晚上爱看视频| 亚洲精品在线网址| 国产美女在线精品| www.污污视频| 激情欧美一区二区三区在线观看| 8x8x最新地址| 久久综合影视| www日韩视频| 久久成人免费| 99re在线视频免费观看| 在线综合亚洲| 久久久久免费看黄a片app| 伊人久久大香线蕉综合热线 | 亚洲调教视频在线观看| 日本三日本三级少妇三级66| 五月天久久久| 老汉色影院首页| 91精品高清| 毛片在线视频观看| 欧美日韩国内| 精品国产一区二区三区无码| 在线日本成人| www国产精品内射老熟女| 国产日韩1区| 欧美污视频网站| 久久中文字幕一区二区三区| 亚洲中文字幕久久精品无码喷水| 免费成人性网站| 在线观看av免费观看| 国产精品亚洲午夜一区二区三区| 国产成人av片| 99久久婷婷国产综合精品电影| 特级西西人体wwwww| 2017欧美狠狠色| 免费视频91蜜桃| 1024精品合集| 久草视频手机在线观看| 亚洲电影一区二区| caoporn国产| 欧美日韩国产美女| 国产高清不卡视频| 亚洲精品美女在线| www.在线播放| 欧美激情极品视频| 精品丝袜在线| 国产精品亚洲片夜色在线| 久久久久久久久久久久电影| 国产亚洲欧美一区二区| 欧洲专线二区三区| 亚洲欧美日韩不卡| 亚洲人妖在线| 日本超碰在线观看| 不卡一区二区中文字幕| 欧美成人国产精品一区二区| 亚洲天堂精品在线观看| 欧美福利视频一区二区| 欧美午夜寂寞影院| 免费看av毛片| 中文字幕亚洲色图| av3级在线| 国产一区视频在线播放| 国产精品中文字幕制服诱惑| 午夜精品一区二区三区四区 | 国产xxxxxx| 精品视频在线播放色网色视频| 日本美女在线中文版| 午夜精品视频在线| 亚洲一区av| 青青成人在线| 在线看片一区| 国产三级精品三级在线| 久久亚洲综合色一区二区三区| 欧美激情精品久久久久久免费| 精品毛片网大全| 精品国产av 无码一区二区三区 | 成人黄色免费网址| 一区二区三区美女| 中文字幕777| 亚洲国产精品一区二区久| 麻豆视频在线| 国产精品海角社区在线观看| 91久久精品无嫩草影院| 一区二区三区我不卡| 男人的天堂亚洲| 黄色性视频网站| 日韩毛片视频在线看| 精品黑人一区二区三区| 亚洲第一天堂av| 性欧美videos高清hd4k| 成人疯狂猛交xxx| 精品国产精品久久一区免费式 | 免费高清视频精品| 亚洲精品中文字幕在线播放| 一区二区三区中文字幕精品精品| 在线观看中文字幕av| 亚洲欧美一区二区三区四区| 波多野结衣中文字幕久久| 91夜夜未满十八勿入爽爽影院| 欧美日韩性在线观看| 黄色片久久久久| 91一区一区三区| 在线观看免费国产视频| 欧美精品一区二区久久久| 日本小视频在线免费观看| 91亚洲精品一区| 亚洲蜜桃视频| 婷婷激情5月天| 亚洲美女偷拍久久| japanese国产| 九九热精品视频国产| 精品一区二区三区四区五区| 公共露出暴露狂另类av| 国产资源精品在线观看| 成年人一级黄色片| 欧美一区二区日韩| 日本片在线观看| 国产欧美日韩综合一区在线观看| 激情五月***国产精品| 亚洲少妇一区二区| 精品久久久久久电影| 天天操天天干天天操| 欧美一级大片视频| 亚洲精品中文字幕99999| 国产女女做受ⅹxx高潮| 国产婷婷一区二区| 一级欧美一级日韩| 毛片精品免费在线观看| 1204国产成人精品视频| 国产美女在线一区| 2020国产成人综合网| 欧美日韩 一区二区三区| 少妇高潮久久77777| 疯狂欧洲av久久成人av电影| 黄黄视频在线观看| 成人激情黄色小说| 国产成人在线视频观看| 一区二区三区久久精品| 欧美美女被草| 天堂а√在线中文在线| 久久视频一区二区| www.久久久久久久| www.亚洲男人天堂| 成人看片黄a免费看视频| 欧美日韩在线不卡视频| 中文欧美字幕免费| www.成人免费视频| 欧美野外猛男的大粗鳮| 日韩av免费大片| av漫画在线观看| 91久久精品午夜一区二区| 国产网友自拍视频导航网站在线观看| 国产高清精品一区二区| 久久av在线| 毛片aaaaa| 一区二区欧美久久| 2020最新国产精品| 国产精品无码av无码| 亚洲一区免费在线观看| 草碰在线视频| 国产精品xxxx| 美女视频黄频大全不卡视频在线播放| 麻豆视频在线观看| 一本大道亚洲视频| 老牛国内精品亚洲成av人片| 欧美一级视频在线| 色婷婷久久久综合中文字幕 | 欧美男男激情freegay| 亚洲影影院av| 欧美aa在线视频|