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

Hadoop運行在Kubernetes平臺實踐

大數據 Hadoop
Hadoop與Kubernetes就好像江湖里的兩大絕世高手,一個是成名已久的長者,至今仍然名聲遠揚,一個則是初出茅廬的青澀少年,骨骼驚奇,不走尋常路,一出手便驚詫了整個武林。

Hadoop與Kubernetes就好像江湖里的兩大絕世高手,一個是成名已久的長者,至今仍然名聲遠揚,一個則是初出茅廬的青澀少年,骨骼驚奇,不走尋常路,一出手便驚詫了整個武林。Hadoop與Kubernetes之間有很深的淵源,因為都出自IT豪門——Google,只不過,后者是親兒子,正因為有大佬背書,所以Kubernetes一出山,江湖各路門派便都蜂擁而至,擁護稱王。

不知道是因為Hadoop是干兒子的緣故還是因為“廉頗老矣”,總之,Hadoop朋友圈的后輩們如Spark、Storm等早都有了在Kubernetes上部署運行的各種資料和案例,但Hadoop卻一直游離于Kubernetes體系之外,本文我們給出Hadoop在Kubernetes上的實踐案例,以彌補這種缺憾。

Hadoop容器化的資料不少,但Hadoop部署在Kubernetes上的資料幾乎沒有,這主要是以下幾個原因導致的:

  • 第一, Hadoop集群重度依賴DNS機制,一些組件還使用了反向域名解析,以確定集群中的節點身份,這對Hadoop在Kubernetes上的建模和運行帶來極大挑戰,需要深入了解Hadoop集群工作原理并且精通Kubernetes,才能很好解決這一難題。
  • 第二, Hadoop新的Map-Reduce計算框架Yarn的模型出現的比較晚,它的集群機制要比HDFS復雜,資料也相對較少,增加了Hadoop整體建模與遷移Kubernetes平臺的難度。
  • 第三, Hadoop與Kubernetes分別屬于兩個不同的領域,一個是傳統的大數據領域,一個是新興的容器與微服務架構領域,這兩個領域之間交集本來很小,加之Hadoop最近幾年已經失去焦點(這點從百度搜索關鍵詞就能發現),所以,沒有多少人關注和研究Hadoop在Kubernetes的部署問題,也是情理之中的事情。

Hadoop 2.0其實是由兩套完整的集群所組成,一個是基本的HDFS文件集群,一個是YARN資源調度集群,如下圖所示:

Hadoop 運行在 Kubernetes平臺實踐

因此在Kubernetes建模之前,我們需要分別對這兩種集群的工作機制和運行原理做出深入的分析,下圖是HDFS集群的架構圖:

Hadoop 運行在 Kubernetes平臺實踐

我們看到,HDFS集群是由NameNode(Master節點)和Datanode(數據節點)等兩類節點所組成,其中,客戶端程序(Client)以及DataNode節點會訪問NameNode,因此,NameNode節點需要建模為Kubernetes Service以提供服務,以下是對應的Service定義文件:

 

  1. apiVersion: v1 
  2. kind: Service 
  3. metadata: 
  4. name: k8s-hadoop-master 
  5. spec: 
  6. type: NodePort 
  7. selector: 
  8. app: k8s-hadoop-master 
  9. ports: 
  10. name: rpc 
  11.   port: 9000 
  12.   targetPort: 9000 
  13. name: http 
  14.   port: 50070 
  15.   targetPort: 50070 
  16.   nodePort: 32007 

其中,NameNode節點暴露2個服務端口:

  • 9000端口用于內部IPC通信,主要用于獲取文件的元數據
  • 50070端口用于HTTP服務,為Hadoop 的Web管理使用

為了減少Hadoop鏡像的數量,我們構建了一個鏡像,并且通過容器的環境變量HADOOP_NODE_TYPE來區分不同的節點類型,從而啟動不同的Hadoop組件,下面是鏡像里的啟動腳本startnode.sh的內容:

 

  1. #!/usr/bin/env bash 
  2. sed -i "s/@HDFS_MASTER_SERVICE@/$HDFS_MASTER_SERVICE/g" $HADOOP_HOME/etc/hadoop/core-site.xml 
  3. sed -i "s/@HDOOP_YARN_MASTER@/$HDOOP_YARN_MASTER/g" $HADOOP_HOME/etc/hadoop/yarn-site.xml 
  4. yarn-master 
  5. HADOOP_NODE="${HADOOP_NODE_TYPE}" 
  6. if [ $HADOOP_NODE = "datanode" ]; then 
  7.     echo "Start DataNode ..." 
  8.     hdfs datanode  -regular 
  9.  
  10. else 
  11. if [  $HADOOP_NODE = "namenode" ]; then 
  12.     echo "Start NameNode ..." 
  13.     hdfs namenode 
  14. else 
  15.     if [ $HADOOP_NODE = "resourceman" ]; then 
  16.         echo "Start Yarn Resource Manager ..." 
  17.         yarn resourcemanager 
  18.     else 
  19.  
  20.          if [ $HADOOP_NODE = "yarnnode" ]; then 
  21.              echo "Start Yarn Resource Node  ..." 
  22.              yarn nodemanager    
  23.          else               
  24.             echo "not recoginized nodetype " 
  25.          fi 
  26.     fi 
  27. fi   
  28.  
  29. fi 

我們注意到,啟動命令里把Hadoop配置文件(core-site.xml與yarn-site.xml)中的HDFS Master節點地址用環境變量中的參數HDFS_MASTER_SERVICE來替換,YARN Master節點地址則用HDOOP_YARN_MASTER來替換。下圖是Hadoop HDFS 2節點集群的完整建模示意圖:

Hadoop 運行在 Kubernetes平臺實踐

圖中的圓圈表示Pod,可以看到,Datanode并沒有建模Kubernetes Service,而是建模為獨立的Pod,這是因為Datanode并不直接被客戶端所訪問,因此無需建模Service。當Datanode運行在Pod容器里的時候,我們需要修改配置文件中的以下參數,取消DataNode節點所在主機的主機名(DNS)與對應IP地址的檢查機制:

  1. dfs.namenode.datanode.registration.ip-hostname-check=false 

如果上述參數沒有修改,就會出現DataNode集群“分裂”的假象,因為Pod的主機名無法對應Pod的IP地址,因此界面會顯示2個節點,這兩個節點都狀態都為異常狀態。

下面是HDFS Master節點Service對應的Pod定義:

 

  1. apiVersion: v1 
  2. kind: Pod 
  3. metadata: 
  4. name: k8s-hadoop-master 
  5. labels: 
  6. app: k8s-hadoop-master 
  7. spec: 
  8. containers: 
  9. name: k8s-hadoop-master 
  10.   image: kubeguide/hadoop 
  11.   imagePullPolicy: IfNotPresent 
  12.   ports: 
  13.     - containerPort: 9000 
  14.     - containerPort: 50070     
  15.   env: 
  16.     - name: HADOOP_NODE_TYPE 
  17.       value: namenode 
  18.     - name: HDFS_MASTER_SERVICE 
  19.       valueFrom: 
  20.         configMapKeyRef: 
  21.           name: ku8-hadoop-conf 
  22.           key: HDFS_MASTER_SERVICE 
  23.     - name: HDOOP_YARN_MASTER 
  24.       valueFrom: 
  25.         configMapKeyRef: 
  26.           name: ku8-hadoop-conf 
  27.           key: HDOOP_YARN_MASTER 
  28. restartPolicy: Always 

下面是HDFS的Datanode的節點定義(hadoop-datanode-1):

 

  1. apiVersion: v1 
  2. kind: Pod 
  3. metadata: 
  4. name: hadoop-datanode-1 
  5. labels: 
  6.   app: hadoop-datanode-1 
  7. spec: 
  8. containers: 
  9. name: hadoop-datanode-1 
  10.   image: kubeguide/hadoop 
  11.   imagePullPolicy: IfNotPresent 
  12.   ports: 
  13.     - containerPort: 9000 
  14.     - containerPort: 50070     
  15.   env: 
  16.     - name: HADOOP_NODE_TYPE 
  17.       value: datanode 
  18.     - name: HDFS_MASTER_SERVICE 
  19.       valueFrom: 
  20.         configMapKeyRef: 
  21.           name: ku8-hadoop-conf 
  22.           key: HDFS_MASTER_SERVICE 
  23.     - name: HDOOP_YARN_MASTER 
  24.       valueFrom: 
  25.         configMapKeyRef: 
  26.           name: ku8-hadoop-conf 
  27.           key: HDOOP_YARN_MASTER         
  28. restartPolicy: Always 

實際上,Datanode可以用DaemonSet方式在每個Kubernerntes節點上部署一個,在這里為了清晰起見,就沒有用這個方式 定義。接下來,我們來看看Yarn框架如何建模,下圖是Yarn框架的集群架構圖:

Hadoop 運行在 Kubernetes平臺實踐

我們看到,Yarn集群中存在兩種角色的節點:ResourceManager以及NodeManger,前者屬于Yarn集群的頭腦(Master),后者是工作承載節點(Work Node),這個架構雖然與HDFS很相似,但因為一個重要細節的差別,無法沿用HDFS的建模方式,這個細節就是Yarn集群中的ResourceManager要對NodeManger節點進行嚴格驗證,即NodeManger節點的節點所在主機的主機名(DNS)與對應IP地址嚴格匹配,簡單來說,就是要符合如下規則:

NodeManger建立TCP連接時所用的IP地址,必須是該節點主機名對應的IP地址,即主機DNS名稱解析后返回節點的IP地址。

所以我們采用了Kubernetes里較為特殊的一種Service——Headless Service來解決這個問題,即為每個NodeManger節點建模一個Headless Service與對應的Pod,下面是一個ResourceManager與兩個NodeManger節點所組成的Yarn集群的建模示意圖:

Hadoop 運行在 Kubernetes平臺實踐

Headless Service的特殊之處在于這種Service沒有分配Cluster IP,在Kuberntes DNS里Ping這種Service的名稱時,會返回后面對應的Pod的IP地址,如果后面有多個Pod實例,則會隨機輪詢返回其中一個的Pod地址,我們用Headless Service建模NodeManger的時候,還有一個細節需要注意,即Pod的名字(容器的主機名)必須與對應的Headless Service的名字一樣,這樣一來,當運行在容器里的NodeManger進程向ResourceManager發起TCP連接的過程中會用到容器的主機名,而這個主機名恰好是NodeManger Service的服務名,而這個服務名解析出來的IP地址又剛好是容器的IP地址,這樣一來,就巧妙的解決了Yarn集群的DNS限制問題。

下面以yarn-node-1為例,給出對應的Service與Pod的YAM文件,首先是yarn-node-1對應的Headless Service的YAM定義:

 

  1. apiVersion: v1 
  2. kind: Service 
  3. metadata: 
  4. name: yarn-node-1 
  5. spec: 
  6. clusterIP: None 
  7. selector: 
  8. app: yarn-node-1 
  9. ports: 
  10.  - port: 8040 

注意到定義中“clusterIP:None”這句話,表明這是一個Headless Service,沒有自己的Cluster IP地址,下面給出YAM文件定義:

  1. apiVersion: v1 
  2. kind: Pod 
  3. metadata: 
  4. name: yarn-node-1 
  5. labels: 
  6. app: yarn-node-1 
  7. spec: 
  8. containers: 
  9. name: yarn-node-1 
  10.   image: kubeguide/hadoop 
  11.   imagePullPolicy: IfNotPresent 
  12.   ports: 
  13.     - containerPort: 8040 
  14.     - containerPort: 8041    
  15.     - containerPort: 8042         
  16.   env: 
  17.     - name: HADOOP_NODE_TYPE 
  18.       value: yarnnode 
  19.     - name: HDFS_MASTER_SERVICE 
  20.       valueFrom: 
  21.         configMapKeyRef: 
  22.           name: ku8-hadoop-conf 
  23.           key: HDFS_MASTER_SERVICE 
  24.     - name: HDOOP_YARN_MASTER 
  25.       valueFrom: 
  26.         configMapKeyRef: 
  27.           name: ku8-hadoop-conf 
  28.           key: HDOOP_YARN_MASTER           
  29. restartPolicy: Always 

ResourceManager的YAML定義沒有什么特殊的地方,其中Service定義如下:

  1. apiVersion: v1 
  2. kind: Service 
  3. metadata: 
  4. name: ku8-yarn-master 
  5. spec: 
  6. type: NodePort 
  7. selector: 
  8. app: yarn-master 
  9. ports: 
  10.  - name"8030"        
  11.    port: 8030 
  12.  - name"8031"      
  13.    port: 8031 
  14.  - name"8032" 
  15.    port: 8032      
  16.  - name: http 
  17.    port: 8088 
  18.    targetPort: 8088 
  19.    nodePort: 32088 

對應的Pod定義如下:

 

  1. apiVersion: v1 
  2. kind: Pod 
  3. metadata: 
  4. name: yarn-master 
  5. labels: 
  6. app: yarn-master 
  7. spec: 
  8. containers: 
  9. name: yarn-master 
  10.   image: kubeguide/hadoop 
  11.   imagePullPolicy: IfNotPresent 
  12.   ports: 
  13.     - containerPort: 9000 
  14.     - containerPort: 50070     
  15.   env: 
  16.     - name: HADOOP_NODE_TYPE 
  17.       value: resourceman 
  18.     - name: HDFS_MASTER_SERVICE 
  19.       valueFrom: 
  20.         configMapKeyRef: 
  21.           name: ku8-hadoop-conf 
  22.           key: HDFS_MASTER_SERVICE 
  23.     - name: HDOOP_YARN_MASTER 
  24.       valueFrom: 
  25.         configMapKeyRef: 
  26.           name: ku8-hadoop-conf 
  27.           key: HDOOP_YARN_MASTER           
  28. restartPolicy: Always 

目前這個方案,還遺留了一個問題有待解決:HDFS NameNode節點重啟后的文件系統格式化問題,這個問題可以通過啟動腳本來解決,即判斷HDFS文件系統是否已經格式化過,如果沒有,就啟動時候執行格式化命令,否則跳過格式化命令。

安裝完畢后,我們可以通過瀏覽器訪問Hadoop的HDFS管理界面,點擊主頁上的Overview頁簽會顯示我們熟悉的HDFS界面:

Hadoop 運行在 Kubernetes平臺實踐

切換到Datanodes頁簽,可以看到每個Datanodes的的信息以及當前狀態:

Hadoop 運行在 Kubernetes平臺實踐

接下來,我們可以登錄到NameNode所在的Pod里并執行HDSF命令進行功能性驗證,下面的命令執行結果是建立一個HDFS目錄,并且上傳一個文件到此目錄中:

 

  1. root@hadoop-master:/usr/local/hadoop/bin# hadoop fs -ls  / 
  2. root@hadoop-master:/usr/local/hadoop/bin# hadoop fs -mkdir /leader-us 
  3. root@hadoop-master:/usr/local/hadoop/bin# hadoop fs -ls / 
  4. Found 1 items 
  5. drwxr-xr-x   - root supergroup          0 2017-02-17 07:32 /leader-us 
  6. root@hadoop-master:/usr/local/hadoop/bin# hadoop fs -put hdfs.cmd /leader-us 

然后,我們可以在HDFS管理界面中瀏覽HDFS文件系統,驗證剛才的操作結果:

Hadoop 運行在 Kubernetes平臺實踐

接下來,我們再登錄到hadoop-master對應的Pod上,啟動一個Map-Reduce測試作業——wordcount,作業啟動后,我們可以在Yarn的管理界面中看到作業的執行信息,如下圖所示:

Hadoop 運行在 Kubernetes平臺實踐

當作業執行完成后,可以通過界面看到詳細的統計信息,比如wordcount的執行結果如下圖所示:

Hadoop 運行在 Kubernetes平臺實踐

最后,我們進行了裸機版Hadoop集群與Kubernetes之上的Hadoop集群的性能對比測試,測試環境為十臺服務器組成的集群,具體參數如下:

硬件:

  • CPU:2*E5-2640v3-8Core
  • 內存:16*16G DDR4
  • 網卡:2*10GE多模光口
  • 硬盤:12*3T SATA

軟件:

  • BigCloud Enterprise Linux 7(GNU/Linux 3.10.0-514.el7.x86_64 x86_64)
  • Hadoop2.7.2
  • Kubernetes 1.7.4+ Calico V3.0.1

我們執行了以下這些標準測試項:

  • TestDFSIO:分布式系統讀寫測試
  • NNBench:NameNode測試
  • MRBench:MapReduce測試
  • WordCount:單詞頻率統計任務測試
  • TeraSort:TeraSort任務測試

綜合測試下來,Hadoop跑在Kuberntes集群上時,性能有所下降,以TestDFSIO的測試為例,下面是Hadoop集群文件讀取的性能測試對比:

Hadoop 運行在 Kubernetes平臺實踐

我們看到,Kubernetes集群上的文件讀性能與物理機相比,下降了差不多30%左右,并且任務執行時間也增加不少,再來對比文件寫入的性能,測試結果如下下圖所示:

Hadoop 運行在 Kubernetes平臺實踐

我們看到,寫文件性能的差距并不大,這里的主要原因是在測試過程中,HDFS寫磁盤的速度遠遠低于讀磁盤的速度,因此無法拉開差距。

之所以部署在Kuberntes上的Hadoop集群的性能會有所下降,主要一個原因是容器虛擬網絡所帶來的性能損耗,如果用Host Only模型,則兩者之間的差距會進一步縮小,下圖是TestDFSIO測試中Hadoop集群文件讀取的性能測試對比:

Hadoop 運行在 Kubernetes平臺實踐

因此我們建議在生產環境中采用Host Only的網絡模型,以提升Hadoop的集群性能。

攻下Hadoop在Kubernetes上的部署,并且在生產中加以驗證,我們可以很自豪的說,現在沒有什么能夠難倒應用向Kubernetes的遷移的步伐,采用統一的PaaS構建企業的應用集群和大數據集群,實現資源的共享和服務的統一管理將會大大的提升企業的業務部署速度和管理的效率。

責任編輯:未麗燕 來源: kubernetes中文社區
相關推薦

2017-09-20 16:29:19

2013-04-19 09:51:21

HadoopOpenStackSavanna

2019-08-16 11:48:53

容器云平臺軟件

2021-07-15 09:40:57

MinikubeKubernetes集群

2020-11-26 18:30:33

機器學習Kubernetes開發

2015-12-29 15:07:00

2010-08-17 08:57:36

NoSQL微軟

2016-01-05 16:12:10

2018-04-04 14:33:06

AWS頭號玩家Directive G

2014-01-07 13:07:44

YARN計算框架

2017-11-28 15:16:47

KubernetesCephGPU云

2022-06-29 11:01:17

K8s數據庫Cassandra

2019-05-31 12:03:06

SQLHadoop大數據

2010-03-11 14:32:34

Ubuntu Twea

2014-06-11 09:48:00

GroovyAndroid

2024-09-03 16:28:20

2022-09-01 08:50:22

kubernetes容器

2021-03-11 14:33:28

Kubernetes開源容器

2021-06-04 10:52:51

kubernetes場景容器

2017-11-08 05:53:07

物聯網架構云計算云端
點贊
收藏

51CTO技術棧公眾號

欧美日韩亚洲国产精品| 欧美性久久久久| 黄色片免费网址| 手机在线观看免费av| 青青草91久久久久久久久| 亚洲高清视频在线| 中国日韩欧美久久久久久久久 | 久久夜色电影| 亚洲人成7777| 国产在线日韩在线| 69视频在线观看免费| 电影在线观看一区| 中文精品久久| 欧美日韩aaa| 亚洲高清视频一区| 看黄色一级大片| 免费观看不卡av| 日韩欧美黄色动漫| 久久精品日韩精品| 精品美女久久久久| 高清欧美性猛交xxxx黑人猛| 亚洲黄色免费网站| 91国产在线免费观看| 国产精品久久国产精麻豆96堂| 天天免费亚洲黑人免费| 久久综合久久综合久久综合| 97精品国产97久久久久久春色| 少妇精品无码一区二区| 欧洲在线视频| 国产999精品久久久久久绿帽| 色综合久综合久久综合久鬼88| 91在线第一页| 日韩电影大全网站| 亚洲国产欧美在线| 中文网丁香综合网| 国产精品国产一区二区三区四区 | www.综合色| 国产亚洲人成a在线v网站| 91浏览器在线视频| 97在线视频免费观看| 亚洲欧美久久久久| 日韩一二三四| 亚洲韩日在线| 欧美日韩在线三级| 久久一区免费| av资源免费观看| 天堂美国久久| 欧美不卡在线视频| 国产一区二区三区播放| 中文字幕一区二区三区免费看| 欧美美女在线观看| 精品久久久久久久一区二区蜜臀| 2025韩国理伦片在线观看| 噜噜噜噜噜在线视频| 亚洲一区激情| 亚洲国产精品国自产拍av秋霞| 大陆极品少妇内射aaaaaa| 精品亚洲综合| 免费成人在线视频观看| 中文字幕精品久久| 午夜一区二区三区免费| 一区二区三区在线免费看 | av在线资源网| 男女精品视频| 亚洲三级黄色在线观看| 中文字幕在线观看91| 97人人在线| 狠狠狠色丁香婷婷综合激情| 亚洲成人网av| 免费不卡av网站| 国产精品论坛| 五月开心婷婷久久| 欧美一区2区三区4区公司二百| 波多野结衣理论片| 日韩精品乱码av一区二区| 91高清免费视频| 免费在线观看黄网站| 天海翼精品一区二区三区| 午夜精品久久久久久久久久 | 亚洲婷婷在线视频| 亚洲一区精品视频| 综合网在线观看| 999亚洲国产精| 日韩中文字幕在线看| 精品国产成人亚洲午夜福利| 草民电影神马电影一区二区| 自拍偷拍亚洲欧美日韩| 99视频日韩| 超碰中文字幕在线| 久久资源中文字幕| 色系列之999| chinese全程对白| 中文字幕一区二区精品区| 久久精品国产精品亚洲| 青青草精品在线视频| 亚洲精品一区二区三区在线| 日韩欧美国产电影| 在线免费看黄色片| 国产在线美女| 欧美综合视频在线观看| 在线不卡视频一区二区| 秋霞a级毛片在线看| 一区二区三区中文字幕在线观看| 成人小视频在线观看免费| 美女的胸无遮挡在线观看| 中文字幕亚洲视频| 欧美少妇在线观看| 日韩大胆人体| 日韩理论片网站| 成人av一级片| aa亚洲一区一区三区| 欧美综合天天夜夜久久| 日韩a一级欧美一级| 国产精品欧美大片| 在线观看视频亚洲| 日产精品久久久久| 欧美一区国产在线| 国产精品91久久| 亚洲精品午夜久久久久久久| 美女脱光内衣内裤视频久久网站| 99国产超薄丝袜足j在线观看| 色哟哟国产精品色哟哟| 中文字幕中文乱码欧美一区二区| 久操网在线观看| 欧洲在线视频| 欧美日韩在线播放三区四区| 在线xxxxx| 久久国产精品成人免费观看的软件| 国内成人精品一区| 久久r这里只有精品| 久久中文在线| 国产伦精品一区| 欧美自拍第一页| 136国产福利精品导航| 2022亚洲天堂| 超碰在线成人| 精品欧美乱码久久久久久| 性猛交ⅹxxx富婆video | 91色九色蝌蚪| 男人添女荫道口喷水视频| 成人不卡视频| 日本韩国欧美一区| 超碰影院在线观看| 欧美黑人疯狂性受xxxxx野外| 91精品国产91久久综合桃花| 色欲狠狠躁天天躁无码中文字幕| 伊人久久亚洲热| 亚洲精品免费av| 免费av网站在线| va亚洲va日韩不卡在线观看| 久久久久久国产精品mv| 色老头在线观看| 69久久99精品久久久久婷婷 | 黄色一级片网址| 激情中国色综合| 中文字幕九色91在线| 青娱乐在线免费视频| 成人午夜激情片| 欧美 国产 精品| 欧美视频二区欧美影视| 亚洲精品一线二线三线无人区| 涩视频在线观看| 欧美婷婷在线| 国产 高清 精品 在线 a| 成人在线视频亚洲| 精品久久久精品| 国产一线在线观看| 好吊一区二区三区| 97在线电影| 欧美人与牲禽动交com| 欧美刺激午夜性久久久久久久| 91麻豆精品久久毛片一级| 久久精品72免费观看| 一本一本a久久| www一区二区三区| 久久久国产一区二区| 97精品久久人人爽人人爽| 国产人伦精品一区二区| 在线码字幕一区| 91精品网站在线观看| 色噜噜亚洲精品中文字幕| 91精品中文字幕| 亚洲欧美日韩国产综合| 亚洲熟女乱综合一区二区| 欧美三区视频| 国产精品久久久对白| 国产丝袜在线播放| 日韩成人av一区| 天堂网av2018| 国产一区二区三区在线观看免费视频| 欧美少妇一区二区三区| jizz国产精品| 欧美最近摘花xxxx摘花| 国产毛片毛片毛片毛片毛片| 亚洲免费成人av| 7788色淫网站小说| 日韩国产成人精品| 影音先锋成人资源网站| 激情亚洲另类图片区小说区| 91精品国产乱码久久久久久久久 | 激情丁香综合五月| 日韩一区二区高清视频| 精品中文一区| 成人性生交大片免费看小说| 亚洲国产精品久久久久久久| 亚洲成人动漫av| 亚洲视频重口味| av激情综合网| 日韩中文字幕a| 亚洲精品激情| 制服诱惑一区| 乱亲女h秽乱长久久久| 奇米4444一区二区三区| 日本美女在线中文版| 午夜电影一区二区| 免费黄色在线网址 | 日韩视频专区| 尤物在线网址| 亚洲一二在线观看| 成人高潮片免费视频| 日本久久一区二区三区| 国产精品成人免费观看| 国产网站一区二区三区| 日韩高清一二三区| 日本少妇一区二区| 欧美综合激情| 成人精品毛片| 成人性教育视频在线观看| 国产直播在线| 日韩一区二区精品视频| 青梅竹马是消防员在线| 日韩免费视频线观看| 在线播放国产一区| 欧美性xxxx| 波多野结衣国产| 亚洲午夜在线电影| 91视频综合网| 久久成人久久鬼色| 超碰10000| 日韩电影在线视频| 欧美一二三四五区| 免费福利视频一区| 51精品国产黑色丝袜高跟鞋| 国产精品久久久久久福利| 色先锋资源久久综合5566| 免费在线性爱视频| 亚洲国产成人精品女人久久久 | 欧美另类一区| 国产精品亚洲d| 欧美一二三视频| 成全电影大全在线观看| 欧美大码xxxx| 日韩一区二区三区在线观看视频| 欧美日韩国产小视频在线观看| 无码免费一区二区三区| 久久久久久亚洲综合影院红桃| 国内精品免费视频| 国产福利一区在线观看| 污视频在线观看免费网站| 韩国成人在线视频| 一级黄色香蕉视频| 久久99这里只有精品| 少妇一级淫免费播放| 免费在线看一区| 我要看一级黄色大片| 日本不卡视频在线| 亚洲综合av在线播放| 捆绑紧缚一区二区三区视频| jizz大全欧美jizzcom| 天堂精品中文字幕在线| 成人黄色片视频| 精品国产一区探花在线观看| 日本欧洲国产一区二区| 欧美日韩国产高清电影| 日韩欧美视频第二区| 久久理论电影| 真人做人试看60分钟免费| 黄色亚洲在线| 免费国产黄色网址| 蜜桃视频一区| 鲁一鲁一鲁一鲁一av| 久久99国产精品尤物| 久久久久久久久久毛片| 精品亚洲成a人在线观看| 性农村xxxxx小树林| 久久伊人蜜桃av一区二区| 精品无码人妻一区二区免费蜜桃| 欧美极品美女视频| 肉色超薄丝袜脚交69xx图片| 亚洲伦在线观看| 可以在线观看av的网站| 日本高清不卡一区| 91成年人视频| 亚洲аv电影天堂网| 青青草在线视频免费观看| 在线观看国产成人av片| 成人免费网址| 欧美性受xxxx白人性爽| 一个人www视频在线免费观看| 日本精品视频在线播放| 黄色成年人视频在线观看| 欧美精品午夜视频| 日韩伦理福利| 91日本在线观看| 西野翔中文久久精品字幕| 夜夜爽99久久国产综合精品女不卡| 欧美午夜电影在线观看| 久草综合在线观看| 极品少妇一区二区| 蜜臀av一区二区三区有限公司| 久草精品在线观看| 国产中文字幕一区二区| 亚洲国产成人在线| 在线观看亚洲天堂| 日韩一区二区在线看| 国产麻豆91视频| 亚洲欧美自拍一区| 羞羞的视频在线看| 国产精品自产拍在线观| 超碰一区二区三区| 26uuu成人| 日本中文一区二区三区| www.com日本| 亚洲色图在线视频| 国产精品成人av久久| 欧美色综合久久| 外国精品视频在线观看| 日韩午夜在线播放| 国产视频在线看| 一区二区日韩精品| 精精国产xxxx视频在线中文版| 国产精品永久在线| 亚洲v天堂v手机在线| 任我爽在线视频精品一| 亚洲视频观看| 99中文字幕在线| 国产精品美女久久久久aⅴ| 日本美女黄色一级片| 色综合久久中文综合久久牛| 秋霞网一区二区| 久操成人在线视频| 免费观看亚洲天堂| 中文字幕色一区二区| 麻豆传媒一区二区三区| 亚洲AV无码成人精品区明星换面| 亚洲一卡二卡三卡四卡无卡久久 | 国产日本精品| 国产性猛交96| 国产精品视频在线看| 中文字幕精品在线观看| 在线播放国产一区中文字幕剧情欧美| 久久青草伊人| 久久免费看av| 亚洲永久在线| 午夜理伦三级做爰电影| 欧美午夜无遮挡| 天天操天天干天天操| 日av在线播放中文不卡| 日本欧美高清| 国产女女做受ⅹxx高潮| 久久综合久久综合亚洲| 少妇高潮av久久久久久| 国产亚洲欧洲高清一区| 日韩av首页| 91久久久久久久久| 羞羞答答成人影院www| 免费看欧美一级片| 国产成人在线影院| 麻豆成人在线视频| 精品剧情v国产在线观看在线| 久cao在线| 5566中文字幕一区二区| 欧美在线三区| 捷克做爰xxxⅹ性视频| 亚洲成人中文在线| 婷婷av一区二区三区| 欧美一级淫片播放口| 精品大片一区二区| 黄大色黄女片18第一次| 久久久www成人免费无遮挡大片| 一级片在线免费观看视频| 久久久精品2019中文字幕神马| 九九99久久精品在免费线bt| 国产精品无码电影在线观看| 成人av免费观看| 久久青青草原亚洲av无码麻豆| 亚洲精品在线不卡| h网站久久久| 国产精品一区二区三区在线观| 在线一区欧美| 99久久99久久精品免费看小说.| 91精品国产入口在线| 国产精品一区二区日韩| 日韩av高清| 国产麻豆精品在线观看| 国产乡下妇女做爰毛片| 中文字幕久久精品| 国产精品自在线拍| 精品久久久噜噜噜噜久久图片 | 男人舔女人下部高潮全视频|