日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

大数据入门(Hadoop生态系统)

發(fā)布時(shí)間:2024/3/12 windows 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 大数据入门(Hadoop生态系统) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Hadoop生態(tài)系統(tǒng)為大數(shù)據(jù)領(lǐng)域提供了開源的分布式存儲(chǔ)和分布式計(jì)算的平臺(tái),這一章我們進(jìn)行Hadoop生態(tài)系統(tǒng)的入門學(xué)習(xí),介紹其中分布式文件系統(tǒng)HDFS、分布式資源調(diào)度YARN、分布式計(jì)算框架MapReduce(包含Spark的入門以及和MapReduce的比較),最后通過Spring Boot集成Hadoop來訪問文件系統(tǒng)。

大數(shù)據(jù)的應(yīng)用

本人喜歡體育運(yùn)動(dòng),以體育中來舉列子。

足球點(diǎn)球大戰(zhàn)

2006年世界杯中德國隊(duì)和阿根廷隊(duì)的點(diǎn)球大戰(zhàn)中,德國隊(duì)守門員教練科普克,給了門將萊曼一張紙條,萊曼看過紙條將計(jì)就計(jì)。阿根廷隊(duì)的每個(gè)點(diǎn)球,幾乎都被萊曼判斷對(duì)了方向,并成功撲出坎比亞索和阿亞拉的點(diǎn)球,幫助德國隊(duì)打進(jìn)四強(qiáng)。而這張紙條就是根據(jù)數(shù)據(jù)分析記錄了阿根廷隊(duì)員點(diǎn)球的習(xí)慣方向。

對(duì)大數(shù)據(jù)以及人工智能概念都是模糊不清的,該按照什么線路去學(xué)習(xí),學(xué)完往哪方面發(fā)展,想深入了解,想學(xué)習(xí)的同學(xué)歡迎加入大數(shù)據(jù)學(xué)習(xí)qq群:458345782,有大量干貨(零基礎(chǔ)以及進(jìn)階的經(jīng)典實(shí)戰(zhàn))分享給大家,并且有清華大學(xué)畢業(yè)的資深大數(shù)據(jù)講師給大家免費(fèi)授課,給大家分享目前國內(nèi)最完整的大數(shù)據(jù)高端實(shí)戰(zhàn)實(shí)用學(xué)習(xí)流程體系 。從java和linux入手,其后逐步的深入到HADOOP-hive-oozie-web-flume-python-hbase-kafka-scala-SPARK等相關(guān)知識(shí)一一分享!

金州勇士的崛起

如今越來越多的籃球隊(duì)開始重視和應(yīng)用籃球大數(shù)據(jù),比如NBA中的金州勇士隊(duì)。勇士隊(duì)曾長期以來一直是NBA里最爛的球隊(duì)之一,2009年它的成績排名倒數(shù)第二。沒有任何執(zhí)教N(yùn)BA經(jīng)驗(yàn)的史蒂夫·科爾,因突出的投籃優(yōu)勢被委任為教練。科爾在執(zhí)掌勇士隊(duì)之后,堅(jiān)持用數(shù)據(jù)說話而不是憑經(jīng)驗(yàn)。他根據(jù)數(shù)據(jù)工程師對(duì)歷年來NBA比賽的統(tǒng)計(jì),發(fā)現(xiàn)最有效的進(jìn)攻是眼花繚亂的傳球和準(zhǔn)確的投籃,而不是彰顯個(gè)人能力的突破和扣籃。在這個(gè)思想的指導(dǎo)下,勇士隊(duì)隊(duì)員苦練神投技。這其中最亮眼的新打法是盡可能地從24英尺(大約7.3米)外的三分線投籃,這樣可以得3分。于是開發(fā)了小球時(shí)代,在2015-2018摘下三枚總冠軍,成功成為NBA的霸主。

大數(shù)據(jù)的基本概率

有人說大數(shù)據(jù)的特點(diǎn)就是數(shù)據(jù)量大,這個(gè)不是非常的正確,數(shù)據(jù)量大不是關(guān)鍵,通過數(shù)據(jù)分析在數(shù)據(jù)中提取出價(jià)值,最終帶來商業(yè)上的利益,這才是大數(shù)據(jù)分析的最終目標(biāo)。大數(shù)據(jù)有4個(gè)特點(diǎn),一般我們稱之為4V,分別為:

  • Volume(大量):隨著信息技術(shù)的高速發(fā)展,數(shù)據(jù)開始爆發(fā)性增長。社交網(wǎng)絡(luò)(微博、推特、臉書)、移動(dòng)網(wǎng)絡(luò)、各種智能工具,服務(wù)工具等,都成為數(shù)據(jù)的來源。數(shù)據(jù)的存儲(chǔ)也從過去的GB到TB,乃至現(xiàn)在的PB、EB級(jí)別。
  • Variety(多樣):廣泛的數(shù)據(jù)來源,決定了大數(shù)據(jù)形式的多樣性。任何形式的數(shù)據(jù)都可以產(chǎn)生作用。
  • Velocity(高速):大數(shù)據(jù)的產(chǎn)生非常迅速,主要通過互聯(lián)網(wǎng)傳輸。大數(shù)據(jù)對(duì)處理速度有非常嚴(yán)格的要求,服務(wù)器中大量的資源都用于處理和計(jì)算數(shù)據(jù),很多平臺(tái)都需要做到實(shí)時(shí)分析。數(shù)據(jù)無時(shí)無刻不在產(chǎn)生,誰的速度更快,誰就有優(yōu)勢。
  • Value(價(jià)值):這也是大數(shù)據(jù)的核心特征。通過從大量不相關(guān)的各種類型的數(shù)據(jù)中,挖掘出對(duì)未來趨勢與模式預(yù)測分析有價(jià)值的數(shù)據(jù),并通過機(jī)器學(xué)習(xí)方法、人工智能方法或數(shù)據(jù)挖掘方法深度分析,發(fā)現(xiàn)新規(guī)律和新知識(shí),并運(yùn)用于農(nóng)業(yè)、金融、醫(yī)療等各個(gè)領(lǐng)域,從而最終達(dá)到改善社會(huì)治理、提高生產(chǎn)效率、推進(jìn)科學(xué)研究的效果。

大數(shù)據(jù)涉及到的技術(shù)

  • 數(shù)據(jù)采集:把海量數(shù)據(jù)收集到數(shù)據(jù)平臺(tái)上來,才能做后續(xù)的數(shù)據(jù)分析。
  • 數(shù)據(jù)存儲(chǔ):數(shù)據(jù)的存儲(chǔ)位置。由于數(shù)據(jù)量巨大,一般為分布式存儲(chǔ)系統(tǒng),較通用用的為。
  • 數(shù)據(jù)分析:對(duì)數(shù)據(jù)進(jìn)行有效性分析(數(shù)據(jù)分析框架MapReduce,spark等)。
  • 可視化:把分析結(jié)果可視化展示。

分布式文件系統(tǒng)HDFS

HDFS概述及設(shè)計(jì)目標(biāo)

HDFS源于Google的GFS論文,設(shè)計(jì)目標(biāo)為

  • 非常巨大的分布式文件系統(tǒng)。
  • 運(yùn)行在普通廉價(jià)的硬件上。
  • 易擴(kuò)展、為用戶提供性能不錯(cuò)的文件存儲(chǔ)服務(wù)。

HDFS架構(gòu)

HDFS是一種master/slave的架構(gòu)。一個(gè)HDFS集群包含一個(gè)唯一的NameNode(NN),這個(gè)master server管理著整個(gè)文件系統(tǒng)的命名空間并且調(diào)節(jié)客戶端對(duì)文件的訪問。同時(shí),還擁有一系列的DataNode(DN),每個(gè)都管理著他們運(yùn)行的對(duì)應(yīng)節(jié)點(diǎn)的數(shù)據(jù)存儲(chǔ)。HDFS提供了一個(gè)文件系統(tǒng)的命名空間同時(shí)允許用戶將數(shù)據(jù)存在這些文件上。通常,一個(gè)文件被拆分成一個(gè)或多個(gè)數(shù)據(jù)塊,并且這些數(shù)據(jù)塊被保存在一系列的DataNode上。NameNode執(zhí)行文件系統(tǒng)的命名空間的相關(guān)操作比如打開、關(guān)閉、重命名目錄或者文件。同時(shí)決定了數(shù)據(jù)塊到DataNode的映射。DataNode為客戶端的讀取寫入需求提供服務(wù),同時(shí)處理NameNode發(fā)來的數(shù)據(jù)塊的創(chuàng)建、刪除、復(fù)制等需求。

?

image.png

HDFS副本機(jī)制

在前面說過HDFS使用相對(duì)廉價(jià)的計(jì)算機(jī),那么宕機(jī)就是一種必然事件,我們需要讓數(shù)據(jù)避免丟失,就只有采取冗余數(shù)據(jù)存儲(chǔ),而具體的實(shí)現(xiàn)就是副本機(jī)制。具體為把一個(gè)文件分為很多的塊,一個(gè)塊默認(rèn)為128M,而這些塊是以多副本的形式存儲(chǔ)。比如存儲(chǔ)三個(gè)副本:

  • 第一副本:如果上傳節(jié)點(diǎn)是DataNode(DN),則上傳該節(jié)點(diǎn);如果上傳節(jié)點(diǎn)是NameNode(NN),則隨機(jī)選擇DataNode(DN) 。
  • 第二副本:放置在不同機(jī)架的DataNode(DN)上 。
  • 第三副本:放置在與第二副本相同機(jī)架的不同DataNode(DN)上。
    這種方式可以極大程度上避免了宕機(jī)所造成的數(shù)據(jù)丟失。而數(shù)據(jù)庫的存儲(chǔ)的元數(shù)據(jù)是存儲(chǔ)在NameNode(NN)中,在數(shù)據(jù)讀取是可以知道在那些節(jié)點(diǎn)上讀取文件。下面是官方架構(gòu)圖。

    ?

    image.png

HDFS環(huán)境搭建

Apache Hadoop 有版本管理混亂,部署過程繁瑣、升級(jí)過程復(fù)雜,兼容性差等缺點(diǎn),而CDH是Hadoop眾多分支中的一種,由Cloudera維護(hù),基于穩(wěn)定版本的Apache Hadoop構(gòu)建。使用CDH可以避免在使用過程中的依賴包沖突問題,對(duì)版本的升級(jí)也很方便,所以我們使用Hadoop-2.6.0-cdh5.7.0版本進(jìn)行安裝。本人是使用虛擬機(jī)進(jìn)行偽分布式模式的搭建,即在一臺(tái)機(jī)器上安裝,集群模式其實(shí)和偽分布式模式差不太多。

  • 第一步安裝JDK
//把壓縮包jdk-8u181-linux-i586.tar.gz上傳到虛擬機(jī) rz 選擇文件上傳 //在根目錄下建立解壓文件夾mkdir apps //解壓jdk到apps目錄 tar -zxvf jdk-8u181-linux-i586.tar.gz -C ~/apps/ //添加環(huán)境變量 vi ~/.bash_profile //在編輯模式添加以下內(nèi)容 export JAVA_HOME=/root/apps/jdk1.8.0_181 export PATH=$JAVA_HOME/bin:$PATH //編輯完成后,保存退出 //使配置生效 source ~/.bash_profile //驗(yàn)證 java -version //若出現(xiàn)版本信息表示安裝成功 openjdk version "1.8.0_181" OpenJDK Runtime Environment (build 1.8.0_181-b13) OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)
  • 第二步安裝SSH
//安裝SSH sudo yum install ssh //生成密鑰文件 ssh-keygen -t rsa //配置免密鑰登錄:復(fù)制公鑰到authorized_keys,因?yàn)镹ameNode(NN)需要連接訪問DataNode(DN),配置后可直接訪問不用登錄,在集群環(huán)境下需要復(fù)制到其它節(jié)點(diǎn)。 cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
  • 安裝hadoop
下載:直接去cdh網(wǎng)站下載 [http://archive.cloudera.com/cdh5/cdh/5/] //解壓 tar -zxvf hadoop-2.6.0-cdh5.7.0.tar.gz -C ~/app //配置環(huán)境變量 export HADOOP_HOME=/root/apps/hadoop export PATH=$HADOOP_HOME/bin:$PATH //hadoop配置文件的修改(hadoop_home/etc/hadoop/) hadoop-env.sh: export JAVA_HOME=/root/apps/jdk1.8.0_181core-site.xml:<property><name>fs.defaultFS</name><value>hdfs://192.168.30.130:8092</value>//配置NameNode(NN)地址</property><property><name>hadoop.tmp.dir</name><value>/home/hadoop/app/tmp</value>//因?yàn)镠DFS默認(rèn)是存儲(chǔ)在零時(shí)文件中,關(guān)機(jī)后會(huì)丟失,這個(gè)配置持久化文件</property>hdfs-site.xml:<property><name>dfs.replication</name>//設(shè)置副本系數(shù),這里因?yàn)橹挥幸粋€(gè)節(jié)點(diǎn),所以設(shè)置為1<value>1</value></property>slaves:localhost 在里面配置節(jié)點(diǎn),現(xiàn)配置為虛擬機(jī)本地。如果為集群模式,則需要在里面配置其它節(jié)點(diǎn)的地址。啟動(dòng)hdfs: //格式化文件系統(tǒng)(僅第一次執(zhí)行即可,不要重復(fù)執(zhí)行) hdfs/hadoop namenode -format //啟動(dòng) hdfs: sbin/start-dfs.sh //驗(yàn)證是否啟動(dòng)成功: jps //該命令會(huì)有以下三個(gè)進(jìn)程DataNodeSecondaryNameNodeNameNode 瀏覽器訪問方式: http://虛擬機(jī)地址:50070 有hdfs主界面 //停止hdfs sbin/stop-dfs.sh

HDFS shell

HDFS shell的命令有很多,輸入hadoop fs回車,會(huì)有有多命令的提示。

Usage: hadoop fs [generic options][-appendToFile <localsrc> ... <dst>][-cat [-ignoreCrc] <src> ...][-checksum <src> ...][-chgrp [-R] GROUP PATH...][-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...][-chown [-R] [OWNER][:[GROUP]] PATH...][-copyFromLocal [-f] [-p] [-l] <localsrc> ... <dst>][-copyToLocal [-p] [-ignoreCrc] [-crc] <src> ... <localdst>][-count [-q] [-h] [-v] <path> ...][-cp [-f] [-p | -p[topax]] <src> ... <dst>][-createSnapshot <snapshotDir> [<snapshotName>]][-deleteSnapshot <snapshotDir> <snapshotName>][-df [-h] [<path> ...]][-du [-s] [-h] <path> ...][-expunge][-find <path> ... <expression> ...][-get [-p] [-ignoreCrc] [-crc] <src> ... <localdst>][-getfacl [-R] <path>][-getfattr [-R] {-n name | -d} [-e en] <path>][-getmerge [-nl] <src> <localdst>]

這里介紹HDFS shell常用命令的使用(其實(shí)和Linux命令相似)

//查看文件目錄ls hadoop fs -ls / 查看根目錄 //建立目錄mkdir hadoop fs -mkdir 文件目錄 //上傳文件 put hadoop fs -put 本地文件路徑 hdfs文件路徑 //get 下載文件到本地 hadoop fs -get hdfs文件路徑 //刪除文件/文件夾rm hadoop fs -rm 文件 hadoop fs -rm -R 文件夾 //級(jí)聯(lián)刪除

Java API操作HDFS

IDEA+Maven創(chuàng)建Java工程
添加HDFS相關(guān)依賴

<properties><java.version>1.8</java.version><hadoop.version>2.6.0-cdh5.7.0</hadoop.version></properties><dependencies><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>${hadoop.version}</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.10</version></dependency></dependencies><repositories><repository><id>cloudera</id><url>http://repository.cloudera.com/artifactory/cloudera-repos/</url>//hadoop倉庫</repository></repositories>

開發(fā)Java Api操作HDFS文件使用Junit測試的方式,代碼如下

public class JunitTest {FileSystem fileSystem = null;Configuration configuration = null;public static final String URL = "hdfs://192.168.30.130:8092";@Beforepublic void setUp() throws IOException, InterruptedException {//初始化配置configuration = new Configuration();//初始化FileSystem,其中包含了文件操作的函數(shù),其中root為虛擬機(jī)用戶名fileSystem = FileSystem.get(URI.create(URL),configuration,"root");}@Testpublic void mkdir() throws IOException {//創(chuàng)建目錄fileSystem.mkdirs(new Path("/test"));}@Testpublic void create() throws IOException {//創(chuàng)建文件,得到輸出流對(duì)象FSDataOutputStream fsDataOutputStream = fileSystem.create(new Path("/test/test.txt"));//寫入文件內(nèi)容fsDataOutputStream.write("hello dzy".getBytes());//關(guān)閉流fsDataOutputStream.close();}@Afterpublic void setDown() throws IOException {configuration.clear();fileSystem.close();} }

在以上只是實(shí)驗(yàn)了幾個(gè)API還有很多其它的API,感興趣的可以繼續(xù)學(xué)習(xí)。

HDFS文件讀寫流程

三個(gè)角色的交互 客戶端/NameNode/DataNode

HDFS寫流程

  • 客戶端向NameNode發(fā)出寫文件請(qǐng)求。
  • 檢查是否已存在文件、檢查權(quán)限。若通過檢查,直接先將操作寫入EditLog,并返回輸出流對(duì)象。
    (注:先寫Log,再寫內(nèi)存,因?yàn)镋ditLog記錄的是最新的HDFS客戶端執(zhí)行所有的寫操作。如果后續(xù)真實(shí)寫操作失敗了,由于在真實(shí)寫操作之前,操作就被寫入EditLog中了,故EditLog中仍會(huì)有記錄,我們不用擔(dān)心后續(xù)client讀不到相應(yīng)的數(shù)據(jù)塊,因?yàn)樵诘?步中DataNode收到塊后會(huì)有一返回確認(rèn)信息,若沒寫成功,發(fā)送端沒收到確認(rèn)信息,會(huì)一直重試,直到成功)
  • client端按128MB的塊切分文件。
  • client將NameNode返回的分配的可寫的DataNode列表和Data數(shù)據(jù)一同發(fā)送給最近的第一個(gè)DataNode節(jié)點(diǎn),此后client端和NameNode分配的多個(gè)DataNode構(gòu)成pipeline管道,client端向輸出流對(duì)象中寫數(shù)據(jù)。client每向第一個(gè)DataNode寫入一個(gè)packet,這個(gè)packet便會(huì)直接在pipeline里傳給第二個(gè)、第三個(gè)…DataNode。
    (注:并不是寫好一個(gè)塊或一整個(gè)文件后才向后分發(fā))
  • 每個(gè)DataNode寫完一個(gè)塊后,會(huì)返回確認(rèn)信息。
  • 寫完數(shù)據(jù),關(guān)閉輸輸出流。
  • 發(fā)送完成信號(hào)給NameNode。
    (注:發(fā)送完成信號(hào)的時(shí)機(jī)取決于集群是強(qiáng)一致性還是最終一致性,強(qiáng)一致性則需要所有DataNode寫完后才向NameNode匯報(bào)。最終一致性則其中任意一個(gè)DataNode寫完后就能單獨(dú)向NameNode匯報(bào),HDFS一般情況下都是強(qiáng)調(diào)強(qiáng)一致性)

HDFS讀流程

  • client訪問NameNode,查詢元數(shù)據(jù)信息,獲得這個(gè)文件的數(shù)據(jù)塊位置列表,返回輸入流對(duì)象。
  • 就近挑選一臺(tái)datanode服務(wù)器,請(qǐng)求建立輸入流 。
  • DataNode向輸入流中中寫數(shù)據(jù),以packet為單位來校驗(yàn)。
  • 關(guān)閉輸入流

HDFS優(yōu)缺點(diǎn)

優(yōu)點(diǎn)

  • 支持超大文件。
  • 檢測和快速應(yīng)對(duì)硬件故障:在集群的環(huán)境中,硬件故障是常見的問題。因?yàn)橛猩锨_(tái)服務(wù)器連接在一起,這樣會(huì)導(dǎo)致高故障率。因此故障檢測和自動(dòng)恢復(fù)是hdfs文件系統(tǒng)的一個(gè)設(shè)計(jì)目標(biāo)。
  • 流式數(shù)據(jù)訪問:Hdfs的數(shù)據(jù)處理規(guī)模比較大,應(yīng)用一次需要訪問大量的數(shù)據(jù),同時(shí)這些應(yīng)用一般都是批量處理,而不是用戶交互式處理。應(yīng)用程序能以流的形式訪問數(shù)據(jù)集。主要的是數(shù)據(jù)的吞吐量,而不是訪問速度。
  • 簡化的一致性模型:在hdfs中,一個(gè)文件一旦經(jīng)過創(chuàng)建、寫入、關(guān)閉后,一般就不需要修改了。這樣簡單的一致性模型,有利于提高吞吐量。

缺點(diǎn)

  • 低延遲數(shù)據(jù)訪問:如和用戶進(jìn)行交互的應(yīng)用,需要數(shù)據(jù)在毫秒或秒的范圍內(nèi)得到響應(yīng)。由于hadoop針對(duì)高數(shù)據(jù)吞吐量做了優(yōu)化,犧牲了獲取數(shù)據(jù)的延遲,所以對(duì)于低延遲來說,不適合用hadoop來做。
  • 大量的小文件:Hdfs的NameNode中存儲(chǔ)了文件分塊的元數(shù)據(jù)信息,如果有大量的小文件,導(dǎo)致元數(shù)據(jù)信息增加,增加NameNode負(fù)荷。
  • 不支持超強(qiáng)的事務(wù):沒有像關(guān)系型數(shù)據(jù)庫那樣,對(duì)事務(wù)有強(qiáng)有力的支持。

資源調(diào)度框架YARN

YARN概述

YARN是Hadoop 2.0中的資源管理系統(tǒng),可以讓不同計(jì)算框架(MapReduce\Spark等)可以共享同一個(gè)HDFS集群上的數(shù)據(jù),享受整體的資源調(diào)度。

YARN架構(gòu)

YARN主要由ResourceManager、NodeManager、ApplicationMaster和Container等幾個(gè)組件構(gòu)成。

  • ResourceManager是Master上一個(gè)獨(dú)立運(yùn)行的進(jìn)程,負(fù)責(zé)集群統(tǒng)一的資源管理、調(diào)度、分配等等。
  • NodeManager是Slave上一個(gè)獨(dú)立運(yùn)行的進(jìn)程,負(fù)責(zé)上報(bào)節(jié)點(diǎn)的狀態(tài),處理單個(gè)節(jié)點(diǎn)的資源管理 、處理來自ResouceManager的命令 、處理來自ApplicationMaster的命令。
  • ApplicationMaster和Container是運(yùn)行在Slave上的組件,為應(yīng)用程序申請(qǐng)資源,并分配給內(nèi)部任務(wù) ,任務(wù)的監(jiān)控和容錯(cuò)等。
  • Container是yarn中分配資源的一個(gè)單位,包涵內(nèi)存、CPU等等資源,yarn以Container為單位分配資源。

YARN執(zhí)行流程

YARN總體上仍然是master/slave結(jié)構(gòu),在整個(gè)資源管理框架中,resourcemanager為master,nodemanager是slave。Resourcemanager負(fù)責(zé)對(duì)各個(gè)nademanger上資源進(jìn)行統(tǒng)一管理和調(diào)度。當(dāng)用戶提交一個(gè)應(yīng)用程序時(shí),需要提供一個(gè)用以跟蹤和管理這個(gè)程序的ApplicationMaster,它負(fù)責(zé)向ResourceManager申請(qǐng)資源,并要求NodeManger啟動(dòng)可以占用一定資源的任務(wù)。由于不同的ApplicationMaster被分布到不同的節(jié)點(diǎn)上,因此它們之間不會(huì)相互影響。

流程:

  • 客戶端向RM中提交程序
  • RM向NM中分配一個(gè)container,并在該container中啟動(dòng)AM
  • AM向RM注冊,這樣用戶可以直接通過RM査看應(yīng)用程序的運(yùn)行狀態(tài)(然后它將為各個(gè)任務(wù)申請(qǐng)資源,并監(jiān)控它的運(yùn)行狀態(tài),直到運(yùn)行結(jié)束)
  • AM采用輪詢的方式通過RPC協(xié)議向RM申請(qǐng)和領(lǐng)取資源,資源的協(xié)調(diào)通過異步完成
  • AM申請(qǐng)到資源后,便與對(duì)應(yīng)的NM通信,要求它啟動(dòng)任務(wù)
  • NM為任務(wù)設(shè)置好運(yùn)行環(huán)境(包括環(huán)境變量、JAR包、二進(jìn)制程序等)后,將任務(wù)啟動(dòng)命令寫到一個(gè)腳本中,并通過運(yùn)行該腳本啟動(dòng)任務(wù)
  • 各個(gè)任務(wù)通過某個(gè)RPC協(xié)議向AM匯報(bào)自己的狀態(tài)和進(jìn)度,以讓AM隨時(shí)掌握各個(gè)任務(wù)的運(yùn)行狀態(tài),從而可以在任務(wù)失敗時(shí)重新啟動(dòng)任務(wù)
  • 應(yīng)用程序運(yùn)行完成后,AM向RM注銷并關(guān)閉自己

    ?

    image.png

YARN環(huán)境搭建

使用的版本為hadoop-2.6.0-cdh5.7.0

//修改配置文件,配置如下(配置文件在/etc/hadoop下) mapred-site.xml,在默認(rèn)情況下是沒有mapred-site.xml文件的,只有mapred-site.xml.template文件,所以在修改配置之前需要復(fù)制一份 cp mapred-site.xml.template mapred-site.xml vi mapred-site.xml //添加配置 <property> <name>mapreduce.framework.name</name> <value>yarn</value>//配置計(jì)算框架運(yùn)行在yarn之上,為固定配置 </property>yarn-site.xml: vi yarn-site.xml //添加配置 <property><name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value>//nodemanager的services,目前為固定配置,當(dāng)學(xué)習(xí)Spark時(shí),其中有動(dòng)態(tài)資源調(diào)度,這里才需要修改 </property> //啟動(dòng)YARN相關(guān)的進(jìn)程 sbin/start-yarn.sh//驗(yàn)證 jps ResourceManager NodeManager 可訪問http://虛擬機(jī)IP:8088可以看到Y(jié)ARN的主界面。//停止YARN相關(guān)的進(jìn)程sbin/stop-yarn.sh

提交作業(yè)到Y(jié)ARN上執(zhí)行

在 share目錄為我們提供了MapReduce作業(yè)的案例,我們可以使用其中的作業(yè)在YARN上執(zhí)行。

提交mr作業(yè)到Y(jié)ARN上運(yùn)行,我的作業(yè)jar包路徑為: /root/apps/hadoop-2.6.0-cdh5.7.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar //使用hadoop jar命令可提交作業(yè)到Y(jié)ARN,具體命令為 hadoop jar jar包路徑 有效的程序名字 有效程序的參數(shù)// 選用其中PI程序進(jìn)行運(yùn)行,在執(zhí)行之前要記到啟動(dòng)hdfs和yarn hadoop jar hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar pi 2 3

//訪問yarn主界面可看到作業(yè)的執(zhí)行情況

?

image.png

分布式處理框架MapReduce/Spark

MapReduce概述

源于Google的MapReduce論文,Hadoop MapReduce是Google MapReduce的一個(gè)克隆版。MapReduce用于大規(guī)模數(shù)據(jù)集(通常大于1TB)的并行運(yùn)算,實(shí)現(xiàn)了Map和Reduce兩個(gè)功能。MapReduce的思想是“分而治之”。“分”是把復(fù)雜的任務(wù)分解為若干個(gè)“簡單的任務(wù)”執(zhí)行,由map負(fù)責(zé)。“簡單的任務(wù)”指數(shù)據(jù)或計(jì)算規(guī)模相對(duì)于原任務(wù)要大大縮小;就近計(jì)算,即會(huì)被分配到存放了所需數(shù)據(jù)的節(jié)點(diǎn)進(jìn)行計(jì)算;這些小任務(wù)可以并行計(jì)算,彼此間幾乎沒有依賴關(guān)系。Reducer負(fù)責(zé)對(duì)map階段的結(jié)果進(jìn)行匯總。
特點(diǎn):

  • 海量數(shù)據(jù)離線處理
  • 橫向擴(kuò)展,而非縱向擴(kuò)展,平滑無縫的可擴(kuò)展性。
  • 易開發(fā):用戶不用考慮進(jìn)程間的通信和套接字編程,已經(jīng)為我們封裝好框架。這一點(diǎn)只是相對(duì)于傳統(tǒng)來講,現(xiàn)在主流的Spark框架更為簡單(Spark為本人知識(shí)盲區(qū),后續(xù)學(xué)習(xí))。
  • 易運(yùn)行:可運(yùn)行在廉價(jià)的硬件之上。

MapReduce編程模型

MapReduce編程模型給出了分布式編程方法的5個(gè)步驟:

  • 迭代,遍歷輸入數(shù)據(jù),將其解析成key/value對(duì);
  • 將輸入key/value對(duì)映射map成另外一些key/value對(duì);
  • 根據(jù)key對(duì)中間結(jié)果進(jìn)行分組(grouping);
  • 以組為單位對(duì)數(shù)據(jù)進(jìn)行歸約;
  • 迭代,將最終產(chǎn)生的key/value對(duì)保存到輸出文件中。

MapReduce架構(gòu)

和HDFS一樣,MapReduce也是采用Master/Slave的架構(gòu)
MapReduce包含四個(gè)組成部分,分別為Client、JobTracker、TaskTracker和Task

  • Client 客戶端
      每一個(gè) Job 都會(huì)在用戶端通過 Client 類將應(yīng)用程序以及配置參數(shù) Configuration 打包成 JAR 文件存儲(chǔ)在 HDFS,并把路徑提交到 JobTracker 的 master 服務(wù),然后由 master 創(chuàng)建每一個(gè) Task(即 MapTask 和 ReduceTask) 將它們分發(fā)到各個(gè) TaskTracker 服務(wù)中去執(zhí)行。
  • JobTracker
      JobTracke負(fù)責(zé)資源監(jiān)控和作業(yè)調(diào)度。JobTracker 監(jiān)控所有TaskTracker 與job的健康狀況,一旦發(fā)現(xiàn)失敗,就將相應(yīng)的任務(wù)轉(zhuǎn)移到其他節(jié)點(diǎn);同時(shí),JobTracker 會(huì)跟蹤任務(wù)的執(zhí)行進(jìn)度、資源使用量等信息,并將這些信息告訴任務(wù)調(diào)度器,而調(diào)度器會(huì)在資源出現(xiàn)空閑時(shí),選擇合適的任務(wù)使用這些資源。在Hadoop中,任務(wù)調(diào)度器是一個(gè)可插拔的模塊,用戶可以根據(jù)自己的需要設(shè)計(jì)相應(yīng)的調(diào)度器。
  • TaskTracker
      TaskTracker 會(huì)周期性地通過Heartbeat 將本節(jié)點(diǎn)上資源的使用情況和任務(wù)的運(yùn)行進(jìn)度匯報(bào)給JobTracker,同時(shí)接收J(rèn)obTracker 發(fā)送過來的命令并執(zhí)行相應(yīng)的操作(如啟動(dòng)新任務(wù)、殺死任務(wù)等)。TaskTracker 使用"slot"等量劃分本節(jié)點(diǎn)上的資源量。"slot"代表計(jì)算資源(CPU、內(nèi)存等)。一個(gè)Task 獲取到一個(gè)slot 后才有機(jī)會(huì)運(yùn)行,而Hadoop 調(diào)度器的作用就是將各個(gè)TaskTracker 上的空閑slot分配給Task 使用。slot分為Map slot 和Reduce slot 兩種,分別供Map Task 和Reduce Task 使用。TaskTracker 通過slot 數(shù)目(可配置參數(shù))限定Task 的并發(fā)度。
    -Task
      Task 分為Map Task 和Reduce Task 兩種,均由TaskTracker 啟動(dòng)。HDFS 以固定大小的block 為基本單位存儲(chǔ)數(shù)據(jù),而對(duì)于MapReduce 而言,其處理單位是split。split 是一個(gè)邏輯概念,它只包含一些元數(shù)據(jù)信息,比如數(shù)據(jù)起始位置、數(shù)據(jù)長度、數(shù)據(jù)所在節(jié)點(diǎn)等。它的劃分方法完全由用戶自己決定。但需要注意的是,split 的多少?zèng)Q定了Map Task 的數(shù)目,因?yàn)槊總€(gè)split 只會(huì)交給一個(gè)Map Task 處理。

    ?

    image.png

MapReduce編程

通過wordcount詞頻統(tǒng)計(jì)分析案例入門。
這個(gè)程序能夠計(jì)算一個(gè)文本中相同單詞出現(xiàn)的次數(shù)。
我們在之前演示用Java API操作HDFS的項(xiàng)目上編寫代碼。具體代碼及解釋如下

import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.Mapper; import org.apache.hadoop.mapreduce.Reducer; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;import java.io.IOException;/*** WordCount統(tǒng)計(jì)單詞數(shù)量** @author zhiying.dong 2019/04/09 20:50*/ public class WordCountApp {/*** 第一步是對(duì)文件進(jìn)行Map操作,繼承Mapper類復(fù)寫它的map方法即可* 參數(shù)是4個(gè),前兩個(gè)LongWritable表示文件偏移量,Text表示文件的數(shù)量* 后兩個(gè)Text表示每一個(gè)單詞,LongWritable為給每一個(gè)單詞做一個(gè)賦值1的操作,而相同單詞出現(xiàn)次數(shù)的累加在Reduce中*/public static class MyMapper extends Mapper<LongWritable, Text, Text, LongWritable> {LongWritable one = new LongWritable(1);@Overrideprotected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {//把文件內(nèi)容轉(zhuǎn)換為字符串String line = value.toString();//通過空格分割文件文本(本人實(shí)驗(yàn)的文本單詞之間是以空格分開)String[] words = line.split(" ");for (String word : words) {//為每個(gè)單詞進(jìn)行賦值操作,以map的形式輸出context.write(new Text(word), one);}}}/*** 第二步是對(duì)文件進(jìn)行Reduce操作,繼承Reducer類復(fù)寫它的reduce方法即可* 參數(shù)是4個(gè),前兩個(gè)Text表示輸入map的key,在這里為單詞字符串,LongWritable表示輸入map的value,這里表示在上一步為每個(gè)單詞的賦值* 后兩個(gè)Text為輸出map的key,這里表示每一個(gè)單詞,LongWritable為輸出map的value,這里表示每一個(gè)單詞出現(xiàn)次數(shù)的累加*/public static class MyReduce extends Reducer<Text, LongWritable, Text, LongWritable> {//注意這里reduce輸入map的value為Iterable<LongWritable> 類型, MapRedece為我們自動(dòng)根據(jù)相同key進(jìn)行了分類@Overrideprotected void reduce(Text key, Iterable<LongWritable> values, Context context) throws IOException, InterruptedException {long sum = 0;//相同key出現(xiàn)次數(shù)的疊加for (LongWritable value : values) {sum += value.get();}context.write(key, new LongWritable(sum));}}public static void main(String[] args) throws Exception {//初始化配置Configuration configuration = new Configuration();//定義jobJob job = Job.getInstance(configuration, "wordcount");//設(shè)置job的執(zhí)行類job.setJarByClass(WordCountApp.class);//設(shè)置需要統(tǒng)計(jì)的文件路徑,在執(zhí)行時(shí)傳入FileInputFormat.setInputPaths(job, new Path(args[0]));//設(shè)置map操作時(shí)的相關(guān)參數(shù)job.setMapperClass(MyMapper.class);job.setMapOutputKeyClass(Text.class);job.setMapOutputValueClass(LongWritable.class);//設(shè)置reduce操作時(shí)的相關(guān)參數(shù)job.setReducerClass(MyReduce.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(LongWritable.class);//設(shè)置輸出文件的路徑,在執(zhí)行時(shí)傳入FileOutputFormat.setOutputPath(job, new Path(args[1]));System.exit(job.waitForCompletion(true) ? 0 : 1);} }

開發(fā)完成后

編譯:mvn clean package -DskipTests

上傳到服務(wù)器然后運(yùn)行(根據(jù)自己上傳的路徑進(jìn)行命令參數(shù)的調(diào)整)

hadoop jar /root/hadoop/lib/hadoop-train-1.0.jar WordCountApp hdfs://192.168.30.130:9020/hello.txt hdfs://192.168.30.130:9020/output/wc

運(yùn)行完畢后可在輸出文件中查看統(tǒng)計(jì)的結(jié)果(親測可以成功)

注意:
相同的代碼和腳本再次執(zhí)行,會(huì)報(bào)錯(cuò)

security.UserGroupInformation: PriviledgedActionException as:hadoop (auth:SIMPLE) cause: org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://92.168.30.130:9020/output/wc already exists Exception in thread "main" org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs:/92.168.30.130:9020/output/wc already exists

在MR中,輸出文件是不能事先存在的。有兩種解決方式

1)先手工通過shell的方式將輸出文件夾先刪除hadoop fs -rm -r /output/wc 2) 在代碼中完成自動(dòng)刪除功能: 推薦大家使用這種方式Path outputPath = new Path(args[1]);FileSystem fileSystem = FileSystem.get(configuration);if(fileSystem.exists(outputPath)){fileSystem.delete(outputPath, true);System.out.println("output file exists, but is has deleted");}

Spark簡單入門

Spark概述

MapReduce框架局限性

  • 僅支持Map和Reduce兩種操作,提供給用戶的只有這兩種操作
  • 處理效率低效:Map中間結(jié)果寫磁盤,Reduce寫HDFS,多個(gè)MR之間通過HDFS交換數(shù)據(jù)
  • 任務(wù)調(diào)度和啟動(dòng)開銷大:mr的啟動(dòng)開銷一,客戶端需要把應(yīng)用程序提交給resourcesManager,resourcesManager去選擇節(jié)點(diǎn)去運(yùn)行,快的話幾秒鐘,慢的話1分鐘左右,開銷二,maptask和reducetask的啟動(dòng),當(dāng)他倆被resourcesManager調(diào)度的時(shí)候,會(huì)先啟動(dòng)一個(gè)container進(jìn)程,然后讓他倆運(yùn)行起來,每一個(gè)task都要經(jīng)歷jvm的啟動(dòng),銷毀等,這兩點(diǎn)就是mr啟動(dòng)開銷
  • 無法充分利用內(nèi)存
  • Map端和Reduce端均需要排序:map和Reduce是都需要進(jìn)行排序的,但是有的程序完全不需要排序(比如求最大值求最小值,聚合等),所以就造成了性能的低效
  • 不適合迭代計(jì)算(如機(jī)器學(xué)習(xí)、圖計(jì)算等),交互式處理(數(shù)據(jù)挖掘)和流式處理(點(diǎn)擊日志分析):因?yàn)槿蝿?wù)調(diào)度和啟動(dòng)開銷大,所以不適合交互式處理,比如你啟動(dòng)要一分鐘,任務(wù)調(diào)度要幾分鐘,我得等半天,這不適合
  • MapReduce編程不夠靈活:map和reduce輸入輸出類型格式限制死了,可嘗試scala函數(shù)式編程語言
  • MapReduce采用了多進(jìn)程模型,而Spark采用了多線程模型:運(yùn)行更快,更加節(jié)約資源。

Spark特點(diǎn)

  • 高效(比MapReduce快10~100倍)
  • 內(nèi)存計(jì)算引擎,提供Cache機(jī)制來支持需要反復(fù)迭代計(jì)算或者多次數(shù)據(jù)共享,減少數(shù)據(jù)讀取的IO開銷;DAG引擎,這種引擎的特點(diǎn)是,不同任務(wù)之間互相依賴,減少多次計(jì)算之間中間結(jié)果寫到HDFS的開銷;使用多線程池模型來減少task啟動(dòng)開稍(特指MR中每個(gè)task都要經(jīng)歷JVM啟動(dòng)運(yùn)行銷毀操作,Spark的做法是,啟動(dòng)一些常駐的進(jìn)程,在進(jìn)程內(nèi)部會(huì)有多個(gè)線程去計(jì)算task,來一個(gè)task,計(jì)算task,并回收線程,以此循環(huán),這樣就沒有JVM的開銷),shuffle過程中避免不必要的sort操作以及減少磁盤IO操作
  • 易用:提供了豐富的API,支持Java,Scala,Python和R四種語言
    代碼量比MapReduce少2~5倍
  • 與Hadoop集成:讀寫HDFS/Hbase與YARN集成

環(huán)境搭建

//在安裝之前先要安裝maven和scala環(huán)境。由于在之前本人虛擬機(jī)上已經(jīng)安裝了maven所以跳過maven的安裝。 // 解壓scala安裝包 tar -zxvf scala-2.11.8.tgz -C ../apps/ //配置環(huán)境變量 pwd //查看路徑/root/apps/scala-2.11.8 vi ~/.bash.profile //添加配置 export SCALA_HOME=/root/apps/scala-2.11.8 export PATH=$SCALA_HOME/bin:$PATH //使配置生效 source ~/.bash.profile //檢驗(yàn)是否安裝成功 scala -version //出現(xiàn)以下信息,說明安裝成功 Scala code runner version 2.11.8 -- Copyright 2002-2016, LAMP/EPFL//解壓spark tar -zxvf spark-2.1.0-bin-2.6.0-cdh5.7.0.tgz -C ../apps //進(jìn)入安裝目錄的bin目錄,通過spark-shell可運(yùn)行spark //若不熟悉命令,可用以下方式 ./spark-shell --help --master MASTER_URL spark://host:port, mesos://host:port, yarn, or local. //表示在本地以兩個(gè)線程啟動(dòng) ./spark-shell --master local[2] local:默認(rèn)一個(gè)線程 local[n]:n個(gè)線程 local[*]:全部線程

Spark編程

這里重新實(shí)現(xiàn)在上文實(shí)現(xiàn)的wordcount程序,代碼如下

sc.textFile("file://root/data/hello.txt").flatMap(line => line.split(" ")).map(word => (word,1)).reduceByKey(_ + _).collect

沒有看錯(cuò),只是一行代碼。因?yàn)镾park封裝了很多方便的函數(shù),相比于MapReduce開發(fā)更為方便。這也是它成為主流的原因。

Hadoop整合Spring-boot的使用

Spring Hadoop概述

Spring for hadoop提供了統(tǒng)一的配置模式以簡化Apache Hadoop的開發(fā),并也易于調(diào)用HDFS、Mapreduce、Pig和Hive的API。它還提供了與Spring生態(tài)圈的其他項(xiàng)目集成的能力,例如Spring Intergration 和Spring Batch,讓你可以優(yōu)雅地開發(fā)大數(shù)據(jù)的提取/導(dǎo)出和Hadoop工作流項(xiàng)目。

Spring Hadoop開發(fā)環(huán)境搭建及訪問HDFS

第一步加入依賴

<properties><java.version>1.8</java.version><hadoop.version>2.6.0-cdh5.7.0</hadoop.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>${hadoop.version}</version></dependency><dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-hadoop-boot</artifactId><version>2.5.0.RELEASE</version></dependency></dependencies><!--配置下載的倉庫--><repositories><repository><id>cloudera</id><url>http://repository.cloudera.com/artifactory/cloudera-repos/</url></repository></repositories>

在配置文件中配置HDFS地址

spring:hadoop:fs-uri: hdfs://192.168.30.130:8092

在代碼中訪問HDFS

import org.apache.hadoop.fs.FileStatus; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.data.hadoop.fs.FsShell; import org.springframework.stereotype.Component;/*** Spring Boot操作HDFS* @author zhiying.dong 2019/04/13 16:32*/ @Component public class SpringBootHadoopTest implements CommandLineRunner {//自動(dòng)注入FsShell,其中封裝了HDFS的訪問函數(shù)@Autowiredprivate FsShell fsShell;@Overridepublic void run(String... strings) throws Exception {System.out.println("=========run start============");//獲取根目錄下的文件列表for (FileStatus fileStatus : fsShell.lsr("/")) {System.out.println(">" + fileStatus.getPath());}System.out.println("===========run end===========");} }

執(zhí)行代碼后發(fā)現(xiàn)沒有權(quán)限訪問HDFS,本人解決的方式為在項(xiàng)目啟動(dòng)時(shí)模擬用戶,網(wǎng)上有多種解決方式,可自行選擇

VM options: -DHADOOP_USER_NAME=虛擬機(jī)用戶名

總結(jié)

大數(shù)據(jù)已經(jīng)涉及到生活的方方面面,所以學(xué)習(xí)和了解大數(shù)據(jù)知識(shí)是很有必要的。Hadoop生態(tài)系統(tǒng)為大數(shù)據(jù)提供了開源的分布式存儲(chǔ)和分布式計(jì)算的平臺(tái),而這一章只是對(duì)其中基礎(chǔ)的知識(shí)進(jìn)行了入門,后續(xù)還需要深入的學(xué)習(xí)。



作者:董二彎
鏈接:https://www.jianshu.com/p/10700514e3e0
來源:簡書
簡書著作權(quán)歸作者所有,任何形式的轉(zhuǎn)載都請(qǐng)聯(lián)系作者獲得授權(quán)并注明出處。

總結(jié)

以上是生活随笔為你收集整理的大数据入门(Hadoop生态系统)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

欧美亚洲国产一卡 | 福利电影久久 | 亚洲精品美女免费 | 国产污视频在线观看 | 蜜桃av观看 | 伊人影院在线观看 | 免费99视频| 天天干人人插 | 最近中文字幕在线播放 | 亚洲欧美激情插 | 国产精品毛片一区二区 | 97在线精品国自产拍中文 | 欧美人人爱 | 手机色在线 | 一区二区三区电影 | 成人综合日日夜夜 | 欧美日韩伦理在线 | 久久综合久久鬼 | 色综合天天综合网国产成人网 | 久久久久国产一区二区三区四区 | 91观看视频 | 特级西西444www高清大视频 | 奇米先锋 | 免费看色的网站 | 97国产精品久久 | 国产精品自在欧美一区 | 九九九在线观看视频 | 九九视频网 | 亚洲天天综合网 | 91亚洲在线观看 | 日韩一级成人av | 亚洲三级在线播放 | 91漂亮少妇露脸在线播放 | 国产亚州精品视频 | www.99热精品| 国产黄色免费观看 | 碰天天操天天 | 日日干夜夜爱 | 免费成人在线电影 | 免费国产一区二区视频 | av丝袜天堂 | 久久这里只有精品视频99 | 国内一级片在线观看 | 一区二区三区日韩视频在线观看 | 最新久久久 | 日韩欧美电影在线 | 国内精品久久久久久 | 一区二区三区日韩在线观看 | 日韩精品免费在线 | 久久免费电影 | 国产精品无av码在线观看 | 久久久久国产精品一区 | 青青河边草免费直播 | 国产精品久久久久久久久久了 | 欧美精彩视频在线观看 | 波多野结衣小视频 | 亚洲国产精彩中文乱码av | 国产精品99久久久久久小说 | 人人干狠狠操 | 国产香蕉久久精品综合网 | 精品在线看 | 亚洲综合网站在线观看 | 国产成人精品亚洲精品 | 婷婷色网 | 婷婷六月天综合 | 久久久三级视频 | 日韩精品亚洲专区在线观看 | 国产精品永久在线观看 | 国产午夜精品久久久久久久久久 | 国产91精品看黄网站在线观看动漫 | 久久黄色美女 | 免费男女网站 | 亚洲男男gaygay无套同网址 | 国产一区免费在线 | 亚洲国产av精品毛片鲁大师 | 精品国产一二三四区 | 久久九九影视网 | 久久国产精品视频 | 欧美日韩三级 | 亚洲国产欧美一区二区三区丁香婷 | 一级黄色视屏 | 伊人天天| 91精品国自产在线观看 | 欧美日韩在线观看一区二区 | 天天爽夜夜操 | 国产日本在线 | 久久综合久久综合久久综合 | 久久综合在线 | 国产精品免费久久久久久久久久中文 | 日韩在线免费高清视频 | 欧美激情操| av天天干 | 九九视频这里只有精品 | 中文永久字幕 | 日韩动漫免费观看高清完整版在线观看 | 日韩在线观看一区 | 国产成人高清 | 欧美一区二视频在线免费观看 | 国产色婷婷精品综合在线手机播放 | 四虎影视8848aamm | 狠狠色噜噜狠狠狠狠 | 久久99国产精品免费 | 国产123区在线观看 国产精品麻豆91 | 欧美日韩在线观看一区二区 | 在线观看亚洲免费视频 | 国产亚洲精品久久网站 | 久久国产剧场电影 | 精品国产123 | 久久久久久久久免费 | 91精品少妇偷拍99 | 超碰在线观看97 | 中文在线天堂资源 | 日韩av电影免费观看 | 亚洲视频网站在线观看 | 女女av在线| 韩国一区视频 | 成人av电影免费 | 国产高清不卡 | 国内外成人免费在线视频 | 日韩欧美网址 | 国产精品一区二区三区电影 | 91av视频播放| 一区二区三区四区五区在线视频 | 亚洲综合视频在线播放 | 欧美极品一区二区三区 | 欧美一区二区三区免费观看 | 三上悠亚一区二区在线观看 | 亚洲一区美女视频在线观看免费 | 国产91精品在线播放 | 精品国内自产拍在线观看视频 | 干干夜夜 | 国产精品麻豆三级一区视频 | 欧美日韩国产一区二 | 婷婷六月丁香激情 | 五月开心六月婷婷 | 亚洲国产精品第一区二区 | 天堂久久电影网 | 黄色网址在线播放 | 亚洲视屏在线播放 | 99久久www免费| 奇米先锋 | 日本中文字幕在线播放 | 亚洲综合黄色 | 麻豆视频入口 | 中文字幕人成一区 | 永久免费毛片在线观看 | 一区二区中文字幕在线 | 国产精品一区在线观看你懂的 | 中文字幕资源网 国产 | 菠萝菠萝在线精品视频 | 久久久网站| 天天色官网 | 精品国产网址 | 久久亚洲影视 | 91中文在线 | 久久久久亚洲精品成人网小说 | 香蕉在线视频观看 | 日韩欧美精品一区二区 | 91爱看片 | 综合视频在线 | 日韩精品视频在线观看免费 | 亚洲一级二级 | 午夜久久影视 | 欧美做受xxx | 国产成人精品av在线观 | 9999亚洲| 日韩二三区| 久久久午夜电影 | 国产99一区| 一区二区 精品 | 亚洲一区二区精品在线 | 国模精品一区二区三区 | 日韩黄色中文字幕 | av成人免费观看 | 五月综合色| 中文字幕日本在线 | 久久中文字幕导航 | 久久99久久99精品免视看婷婷 | 中文一区在线观看 | 亚洲精品国产成人av在线 | 国产美女精品在线 | 久久婷婷一区 | 亚洲精品高清一区二区三区四区 | 日韩免 | 精品免费观看 | 午夜影院在线观看18 | 久久手机免费观看 | 色综合久久久久久久 | 看v片| 就要干b | 亚洲日本一区二区在线 | 最新av免费在线观看 | 日韩.com | 婷婷色综| 精品久久亚洲 | 人人干人人干人人干 | 久久精品国产精品亚洲 | 黄色软件大全网站 | 亚洲毛片在线观看. | 成人av中文字幕在线观看 | 久久九九久久九九 | 成人免费在线观看入口 | 亚洲成人动漫在线观看 | 亚洲国内精品 | 美州a亚洲一视本频v色道 | 天天干,天天操,天天射 | 97精产国品一二三产区在线 | 深爱婷婷网 | 日韩美女黄色片 | 国产原创中文在线 | 视频在线播放国产 | a天堂在线看 | 成人在线视频免费看 | 毛片网在线观看 | 九九九九热精品免费视频点播观看 | 正在播放一区 | 99re亚洲国产精品 | 伊人电影在线观看 | 中文字幕频道 | 久久三级毛片 | 国产精品综合久久久 | 免费的成人av | 97在线观看视频免费 | 日韩免费高清在线观看 | 国产美女精品人人做人人爽 | 亚洲成人av一区 | 婷婷丁香在线观看 | 亚洲精品视频一 | 欧美日韩国产精品久久 | 婷婷色网| 欧美日韩精品影院 | 国产精品亚洲成人 | 亚洲精品福利在线 | 波多野结衣视频一区二区 | 国产精品av电影 | 久久人人爽视频 | 粉嫩一二三区 | 国产精品 日韩 | 日韩国产欧美在线视频 | 五月天com| 日韩一区二区三区在线观看 | 免费观看的av | 欧美性猛片, | 黄色av电影一级片 | 久久爱资源网 | 综合在线观看色 | 不卡视频一区二区三区 | 中文字幕在线视频网站 | 免费黄色av | 亚洲热久久 | 欧美日韩在线视频一区二区 | 九九热久久免费视频 | 久久精品视频在线观看免费 | 成人黄色av网站 | 久久首页 | 国产精品日韩久久久久 | 国产精品丝袜久久久久久久不卡 | www.久久99| 国产精品免费视频网站 | 亚洲精品综合在线观看 | 精品亚洲视频在线 | av在线电影免费观看 | 国产精品九色 | 色成人亚洲| 免费视频资源 | 福利视频 | 中文字幕欧美日韩va免费视频 | 日本aaaa级毛片在线看 | 色婷婷成人网 | 婷婷伊人综合 | 色婷婷av国产精品 | 国产中文字幕视频 | 国产黄色大片 | 国产精品综合在线 | 午夜色大片在线观看 | 日韩免费高清在线观看 | 日日干天天操 | 九九激情视频 | 激情久久久 | 久影院| 欧美成人视 | 91亚洲欧美激情 | 99精品视频在线播放免费 | 国产中文a | 五月天六月丁香 | 久久亚洲精品国产亚洲老地址 | 四虎永久免费网站 | 成人av动漫在线观看 | 黄色一级在线观看 | 国产精品白丝jk白祙 | 久久午夜精品视频 | 久久久久久久久久久免费av | 一区二区三区久久 | 国产精品自产拍在线观看桃花 | 亚洲综合五月 | 国产资源精品 | 欧美日韩国产一二三区 | 精品久久中文 | 久久人人爽人人爽 | 久草在线视频免费资源观看 | 午夜久久久精品 | 人人干97 | 久久综合射 | 激情影音先锋 | 人人干天天射 | 亚州性色 | 亚洲资源在线网 | 国产精品免费看 | 91tv国产成人福利 | 欧美孕交vivoestv另类 | 亚洲91精品在线观看 | av动图 | 免费国产一区二区视频 | 国产中文字幕网 | 在线视频精品播放 | 伊人网av | 狠狠撸电影 | 国产精品美女在线 | 久久影院亚洲 | 狠狠色丁香久久综合网 | 国产精品久久久久久久免费 | 色窝资源| 国产亚州精品视频 | 国产在线高清精品 | 精品福利av| 久操视频在线 | 国产精品久久久久av | 一区二区三区精品在线 | 骄小bbw搡bbbb揉bbbb | 91手机视频在线 | 奇米网网址 | 黄色成人小视频 | 日本中文字幕网址 | 国产在线观看免费 | 玖玖视频免费在线 | 美州a亚洲一视本频v色道 | 一区二区三区四区在线 | av高清一区二区三区 | 亚洲精品影视 | 久久久国产精品视频 | 亚洲激情在线 | 欧美日韩高清一区二区 国产亚洲免费看 | 国产首页| 天天综合在线观看 | 国产美女视频网站 | 久久国产精品99久久人人澡 | wwwww.国产 | 在线国产黄色 | 日韩免费观看一区二区三区 | 麻豆视频免费观看 | 日本免费久久高清视频 | 久久久久久久久久久久国产精品 | 97国产大学生情侣酒店的特点 | 国产va在线 | 国产精品中文字幕在线播放 | 天天草天天摸 | 在线观看www. | 免费的黄色av | 国产福利a | 国产精品久久久久久69 | 久久福利剧场 | 在线亚洲欧美日韩 | 久久九九久久 | 久久综合九色综合久久久精品综合 | 在线观看视频日韩 | 亚洲免费精品视频 | 美腿丝袜一区二区三区 | 特级西西www44高清大胆图片 | 成人久久综合 | 成片视频免费观看 | 亚洲午夜久久久综合37日本 | 亚州av网站大全 | a'aaa级片在线观看 | 五月婷久久| 日韩手机在线 | 久久9视频| 亚洲黄色小说网 | 色成人亚洲 | 色播99 | 天天操夜 | 中文字幕三区 | 手机版av在线 | 亚洲成人精品久久久 | 国产99久久| 国产精品 日韩 | 白丝av在线 | 国产一区在线视频观看 | 黄色片视频免费 | 天天操婷婷 | 久久在线一区 | 91夜夜夜| 久久视频在线观看免费 | 免费中文字幕在线观看 | 黄色片亚洲 | 免费a v网站 | 丁香六月婷婷开心 | 黄色特一级 | 中文字幕2021 | 国产黄色精品在线观看 | 91免费试看 | 一区二区三区 中文字幕 | 男女激情免费网站 | 欧美一区二区三区四区夜夜大片 | 美女视频黄频大全免费 | 亚洲在线视频免费 | 97超碰人人模人人人爽人人爱 | 国产九九热 | 中文字幕一区二区三区在线观看 | 午夜123| 2020天天干夜夜爽 | 在线观看视频中文字幕 | 中文字幕一区二区三区四区 | 精品极品在线 | 成人91免费视频 | 精品一区二区av | 在线看毛片网站 | 97国产精品 | 色在线国产 | 亚洲黑丝少妇 | 日韩v欧美v日本v亚洲v国产v | 日韩av电影中文字幕 | 波多野结衣综合网 | 欧美日韩精品在线播放 | 婷婷亚洲综合五月天小说 | 成人在线一区二区三区 | 亚洲人在线7777777精品 | 天堂网av 在线| 国产一级在线视频 | 四虎影视成人永久免费观看亚洲欧美 | 韩国在线视频一区 | 免费99| 国产成人黄色av | 91免费网站在线观看 | 久久久久北条麻妃免费看 | 久久99精品久久久久久秒播蜜臀 | 91免费版在线观看 | 91女人18片女毛片60分钟 | 夜夜躁日日躁狠狠躁 | 在线看小早川怜子av | 久久国产精品一区二区 | 欧美日韩国产精品一区 | 国产美女视频黄a视频免费 久久综合九色欧美综合狠狠 | 日韩av线观看 | 精品久久久精品 | 国产精品18久久久久久久 | 亚洲精品 在线视频 | 亚洲一区二区高潮无套美女 | 人人爽人人爽人人 | 五月婷婷香蕉 | 久久国产精品久久精品 | 激情久久一区二区三区 | 国产精品福利在线播放 | 96亚洲精品久久 | 亚洲黄色av一区 | 五月天婷婷综合 | 国产夫妻自拍av | 亚洲国产欧美一区二区三区丁香婷 | 国产伦精品一区二区三区四区视频 | 91爱爱视频 | 五月天天色 | 天天拍天天爽 | 97人人爽| 91豆麻精品91久久久久久 | 亚洲最新视频在线播放 | 日韩av手机在线看 | 81精品国产乱码久久久久久 | www.国产视频| 久久黄色小说视频 | 国产成人在线精品 | 精品久久久久久国产91 | 麻豆传媒视频观看 | 国产午夜一区二区 | 黄色影院在线观看 | 国产成人精品免高潮在线观看 | 在线观看一级 | 亚洲一级电影 | 国产手机av| 久久99国产一区二区三区 | 欧美日韩国产伦理 | 西西4444www大胆艺术 | 九九在线视频免费观看 | 十八岁以下禁止观看的1000个网站 | 午夜精品婷婷 | 一区二区视频在线观看免费 | 亚洲激情影院 | 9免费视频| 狠狠色噜噜狠狠狠狠2021天天 | 国产婷婷色| 久久久国产一区 | 在线视频99| 久久国产精品久久久久 | 亚洲伊人色 | 视频国产在线 | 蜜臀av一区二区 | 成年人在线观看 | 亚洲乱码国产乱码精品天美传媒 | 国产精品一区二区电影 | 超黄视频网站 | 国产免费又粗又猛又爽 | 午夜免费视频网站 | 丝袜制服综合网 | 中文在线亚洲 | 亚洲人在线7777777精品 | 午夜狠狠干| 亚洲 精品在线视频 | 成人在线电影观看 | av在线电影免费观看 | 国产麻豆成人传媒免费观看 | 久久人人爽人人爽 | 国产日韩精品欧美 | 69国产盗摄一区二区三区五区 | 精品久久久久久久久久岛国gif | 亚洲欧美在线观看视频 | 日产乱码一二三区别在线 | 亚洲国产高清在线观看视频 | 91精品视频免费观看 | 成 人 黄 色 视频免费播放 | 91亚色免费视频 | 视频国产区 | 五月综合网 | 超碰国产人人 | 久久久久久久毛片 | 中文字幕精品视频 | 精品自拍av | 麻豆一区二区三区视频 | 天堂av在线网址 | 国产一区二三区好的 | 五月婷婷狠狠 | 黄色毛片视频 | 97视频网站| 91久久久久久久一区二区 | 欧美日韩免费一区 | 天天插天天爽 | 极品嫩模被强到高潮呻吟91 | 久草在线免费看视频 | 色老板在线 | 亚洲第一av在线 | 天天综合日日夜夜 | 嫩小bbbb摸bbb摸bbb | 亚洲无吗天堂 | 亚洲精品乱码久久久久久高潮 | 日韩精品电影在线播放 | 国产精品免费人成网站 | 国产91精品一区二区麻豆网站 | 91看片网址 | 国产最新在线观看 | 日韩天天综合 | 久久免费视频在线观看30 | 丁香久久激情 | 999精品在线 | 探花系列在线 | av福利网址导航大全 | 亚洲视频在线观看免费 | 亚洲精品午夜久久久久久久久久久 | 在线观看视频亚洲 | 狠狠色狠狠色 | 97国产在线 | 亚洲日韩精品欧美一区二区 | 狠狠色丁香婷婷综合欧美 | 99久久99久国产黄毛片 | aaaaaa毛片| 国产精品免费看 | 国产一区二区网址 | 成人免费观看大片 | 亚洲精品在线播放视频 | 在线观看黄色的网站 | 99久久99久久精品免费 | 成人影视免费 | 亚洲一区久久久 | 国产精品美乳一区二区免费 | 欧美精品久久久久久久久久久 | 91av在线视频播放 | 国产精品成人品 | 亚洲精品综合在线 | 在线观看韩日电影免费 | 亚洲国产偷 | 最新精品视频在线 | 久久激情影院 | 视频一区二区精品 | 一区二区伦理 | 亚洲精品高清在线 | 美女免费视频观看网站 | 欧美一级电影免费观看 | 狠狠狠色狠狠色综合 | 香蕉影视在线观看 | 天天色综合三 | 日日草夜夜操 | 亚洲精品国产欧美在线观看 | 激情视频一区二区 | av一区在线 | 999国内精品永久免费视频 | 国产精品99久久久久的智能播放 | 一区二区三区四区五区六区 | 国产精品丝袜久久久久久久不卡 | 亚洲精品久久久久久久蜜桃 | 日本在线观看中文字幕无线观看 | 欧美一区免费观看 | 天天在线操 | 国产高清在线免费 | 精品视频中文字幕 | 日韩精品免费在线播放 | 麻豆免费视频 | 免费看黄20分钟 | 日韩最新在线视频 | 福利网址在线观看 | 欧美精品资源 | 夜夜夜| 午夜av在线播放 | 国产黄色在线观看 | av免费片 | 蜜臀91丨九色丨蝌蚪老版 | 色婷婷狠狠操 | 天天干人人干 | 一区二区三区精品在线 | 日韩中字在线观看 | 亚洲精品午夜一区人人爽 | 中文字幕日韩av | 免费99视频 | 精品xxx| 国产美女视频网站 | 麻豆极品 | 国语对白少妇爽91 | 免费看的黄网站 | 亚洲精品久久在线 | 国产一区在线观看免费 | 中文字幕国语官网在线视频 | 免费观看一区二区 | 九九日九九操 | 精品av网站 | 亚洲电影免费 | 五月激情丁香婷婷 | av网站在线观看播放 | 黄色成人91 | 91亚洲精品乱码久久久久久蜜桃 | 亚洲精品在线视频观看 | 亚洲精品理论片 | 色多视频在线观看 | av三级av| 久久综合色天天久久综合图片 | 精品欧美一区二区三区久久久 | 夜夜躁日日躁狠狠躁 | 国产高清精品在线观看 | 国产精品久久久久高潮 | 97精品一区| 久久精品波多野结衣 | 粉嫩av一区二区三区入口 | 97精品国产97久久久久久 | 欧美一级片在线免费观看 | 中文在线中文资源 | 天天色天天操天天爽 | 麻豆视频免费在线 | 亚洲精品在 | 91精品视频免费看 | 国产无遮挡又黄又爽在线观看 | 香蕉视频免费看 | 日韩久久久久久久久久久久 | 天天插天天狠天天透 | 国产精品24小时在线观看 | 六月丁香六月婷婷 | 91传媒在线观看 | 日日干日日 | 国产中文字幕视频在线观看 | 99情趣网视频 | 在线观看视频你懂得 | 91污污视频在线观看 | 精品国产美女在线 | 久久九精品 | 色噜噜噜 | 黄色大片入口 | 亚洲精品久久久久久久蜜桃 | 激情综合网色播五月 | 日韩精品一区不卡 | 91人人澡人人爽人人精品 | 午夜精品一区二区三区在线播放 | 亚洲精品日韩一区二区电影 | 久久久精品国产免费观看一区二区 | 在线中文字幕播放 | 日韩精品在线看 | 欧美精品中文在线免费观看 | 久久国产精品免费一区二区三区 | 婷婷去俺也去六月色 | 五月婷婷丁香网 | 99久久精品免费看国产 | 精品国产成人在线 | 国内99视频 | 国产一级电影在线 | 国产精品1区2区在线观看 | 日日日天天天 | 日韩av在线不卡 | 91网站免费观看 | 国产精品99在线观看 | 91欧美在线| 久久综合色综合88 | 久久色网站| 国产在线精品福利 | 九九九热精品免费视频观看 | 国产精品xxxx18a99 | 国产视频资源在线观看 | 在线成人免费电影 | 狠狠干五月天 | 日本免费久久高清视频 | 亚洲精品毛片一级91精品 | 黄色三级在线看 | 久久精品a | 国产精品亚 | 欧美日视频 | 国产小视频91 | 久久这里只有精品1 | a级国产乱理论片在线观看 伊人宗合网 | 国产亚洲在线 | 日韩电影中文,亚洲精品乱码 | 亚洲精品国产精品国自产在线 | 伊人久久婷婷 | 亚洲精欧美一区二区精品 | 精品夜夜嗨av一区二区三区 | 久久精品一区二区 | 亚洲高清91 | 亚洲蜜桃在线 | av不卡中文 | 91中文字幕在线 | 久久久精品电影 | 久久99精品国产99久久6尤 | 91麻豆精品久久久久久 | 亚洲一区二区视频在线播放 | 永久免费精品视频网站 | 国产精品理论视频 | 亚洲天堂va| 丁香婷婷亚洲 | 色94色欧美 | 欧美一级免费在线 | 91亚色视频在线观看 | 国产精品福利小视频 | 中文字幕免费播放 | 免费在线黄色av | 99r在线播放 | 中文字幕 国产精品 | 国产成人精品日本亚洲999 | 久久精品二区 | 最近中文国产在线视频 | 国产伦理一区二区三区 | 久久xxxx| 成人精品久久久 | 中文字幕视频观看 | 免费看一级片 | 久av在线| 国产超碰97 | 婷婷五月在线视频 | 午夜久久久久久久久久久 | 国内精品美女在线观看 | 91在线www| 又黄又色又爽 | 深夜福利视频一区二区 | 在线观看免费日韩 | 成年人在线电影 | 一区久久久 | 女人高潮特级毛片 | 伊人久在线 | 国产黄色大片 | 国产99色| 久久久久色 | 超碰在线最新 | 青青久草在线视频 | 国产第一页福利影院 | 麻豆精品传媒视频 | 国产精品剧情在线亚洲 | 综合网天天 | 日日成人网 | 国产97碰免费视频 | 久久日本视频 | 久久有精品 | 在线黄色国产电影 | 国产精品久久久久久久久久久免费 | 国产亚洲人 | 亚洲不卡123 | 日本性生活一级片 | 亚洲开心色 | 国产精品成人国产乱 | 毛片久久久 | 久草综合在线 | 91精品老司机久久一区啪 | 午夜视频在线观看一区二区 | 免费午夜视频在线观看 | 成人av电影在线观看 | 久久精品视频网站 | 亚洲一二区视频 | 日本一区二区免费在线观看 | 日韩草比 | 在线色网站 | 美女视频久久黄 | 国内精品久久久久久 | 天天爱综合 | 福利网在线 | 中文字幕中文字幕在线中文字幕三区 | 国产黄在线播放 | 婷婷激情综合 | 免费久久精品视频 | 久久久久久久久国产 | 婷婷网址 | 96视频免费在线观看 | 久久成人午夜 | 久久免费av电影 | 久久久国产一区二区三区四区小说 | 成av人电影 | 久久久久久久久久久久av | 日韩在线色视频 | 久久歪歪 | 国产精品99免视看9 国产精品毛片一区视频 | 欧美日韩性 | 久久久精选| 亚洲婷婷在线 | 日韩中文三级 | 在线97| 人人插人人看 | 免费欧美精品 | 国产精品av久久久久久无 | 91av九色 | 国产拍在线 | 91插插插免费视频 | 五月天久久久久 | 日韩精品在线一区 | 日韩激情第一页 | 97超碰在线免费观看 | 国产精品永久在线 | 在线免费观看国产黄色 | 国产精品久久久久久久久久东京 | 六月丁香激情综合色啪小说 | 国产免费又爽又刺激在线观看 | 曰本免费av| 九九久久久久久久久激情 | 在线中文字幕电影 | 欧美成人基地 | 日韩欧美精品在线视频 | 亚洲综合涩| 91精品国产自产老师啪 | 久久综合中文字幕 | 久久国产精品99久久久久 | 欧美激情精品久久久久 | 国产成人久久精品77777 | 97人人澡人人添人人爽超碰 | 亚洲狠狠丁香婷婷综合久久久 | 亚洲精品麻豆 | 中文字幕在线观看视频一区 | 最新av在线播放 | 精久久久久| 免费看片网页 | 看av免费网站 | 国产精美视频 | 中字幕视频在线永久在线观看免费 | 欧美一级爽 | 日韩二区在线观看 | 久亚洲精品 | 色婷婷激情四射 | 97品白浆高清久久久久久 | 最新成人av| 国产成人av网站 | 91麻豆精品国产自产 | 亚洲精品乱码久久久一二三 | 人人添人人澡 | 日韩在线视频二区 | 日韩av中文在线观看 | 国产手机在线精品 | 深爱激情开心 | 超级av在线| 成人影片在线播放 | 欧美日韩在线播放 | 亚洲精品久久激情国产片 | 亚洲色图av | 成人在线一区二区三区 | 一区二区三区手机在线观看 | 操操操综合| 亚洲伦理一区 | 最新中文字幕视频 | 日日夜夜草| av一区二区在线观看中文字幕 | 久久er99热精品一区二区 | www黄com| 日本精品久久久久 | 日韩在线视频精品 | 精品国产美女 | 久av在线| 成人网444ppp | 成人影片在线播放 | 视频在线国产 | 久久久久女人精品毛片 | 香蕉一区 | 欧美成人理伦片 | www免费在线观看 | 在线91播放 | 欧美日韩国产二区 | 91日韩在线 | 亚洲 欧美 变态 国产 另类 | 中文字幕在线观看第一区 | 在线观看国产高清视频 | 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 黄色tv视频| av片一区二区 | 91av在线视频免费观看 | 国产又粗又硬又爽的视频 | 精品色999| 国产精品久久婷婷六月丁香 | 久久精品这里精品 | 天堂av观看 | 嫩模bbw搡bbbb搡bbbb | 右手影院亚洲欧美 | 精品中文字幕在线观看 | 中文字幕色播 | 久久不射影院 | 日韩精品视频久久 | 中文字幕91视频 | 99在线视频精品 | 国产淫片 | 久久女教师| 精品国产一区二区三区久久久蜜月 | 国产一二三四在线视频 | 国产精品久久久久四虎 | 日本一区二区三区免费看 | 91九色精品 | 日本爽妇网 | 欧美成人xxx| 182午夜在线观看 | 五月婷婷激情 | 日韩有码第一页 | a级片久久 | 最近中文字幕完整视频高清1 | 91视频链接 | 国产经典三级 | 久久成人高清 | 久草久热 | 狠狠色丁香婷婷综合久小说久 | 色wwwww| 青春草免费视频 | 午夜视频在线网站 | 中文字幕一区av | 国产精品免费成人 | 天天操天天射天天操 | 亚洲电影久久 | 久草在线免费资源 | 精品免费观看 | 97精产国品一二三产区在线 | 色插综合 | 亚洲资源在线观看 | 一区二区影院 | 啪一啪在线 | 国产一级在线观看 | 国内精自线一二区永久 | 欧美日韩国产在线一区 | 在线视频区 | 久久亚洲婷婷 | 九九色在线 | www免费视频com━ | 成人观看 | 日韩精品不卡在线观看 | 国产精品99久久久精品免费观看 | 99精品在线免费观看 | 黄色网www | 亚洲精品视频免费看 | 国产高清在线观看 | 白丝av在线 | 亚洲国产精品va在线看黑人 | 欧美精品乱码99久久影院 | 亚洲欧美日韩一级 | 久久高清国产视频 | 国产亚洲视频中文字幕视频 | 日韩在线激情 | 国产亚洲午夜高清国产拍精品 | 国产精品久久久久毛片大屁完整版 | 人人澡超碰碰 | 国产一区二区在线精品 | 四虎成人免费影院 | 免费视频一级片 | 永久免费观看视频 | 97人人模人人爽人人少妇 | 国产成人久 | 国内揄拍国内精品 | 欧美精品v国产精品 | 欧美日韩国产成人 | 国产精品久久久网站 | 日韩欧美大片免费观看 | www.com黄色 | 中国一级片在线 | 6080yy午夜一二三区久久 | 欧美资源在线观看 | 久久精品国产第一区二区三区 | 精品久久久久久亚洲综合网 | 久久久久久久久久久黄色 | 久久这里只有精品1 | 一区二区三区高清在线 | 天天做天天爱天天综合网 | 国产精品午夜8888 | 粉嫩av一区二区三区四区在线观看 | 久久国产精品久久精品 | 国产伦理久久 | 成 人 黄 色 视频 免费观看 | 999成人免费视频 | 免费看久久 | 手机成人av在线 | 国产精品久久在线 | 人人澡人人模 |