久久久国产一区_国产综合久久久久_欧美亚洲丝袜_成人综合国产精品

    ?    2026年6月    ?
    1234567
    891011121314
    15161718192021
    22232425262728
    2930

搜索

作者列表

站點(diǎn)信息

  • 文章總數(shù):13334
  • 頁(yè)面總數(shù):3
  • 分類總數(shù):42
  • 標(biāo)簽總數(shù):57
  • 評(píng)論總數(shù):6045
  • 瀏覽總數(shù):6791175

上海黑帽seo自動(dòng)獲取webshell:hadoop之hdfs架構(gòu)詳解_黑帽SEO排名

:基于SpringBoot實(shí)現(xiàn)AOP+jdk/CGlib動(dòng)態(tài)代理詳解

本文主要從兩個(gè)方面對(duì)hdfs進(jìn)行闡述,第一就是hdfs的整個(gè)架構(gòu)以及組成,第二就是hdfs文件的讀寫流程。

一、HDFS概述

     標(biāo)題中提到hdfs(Hadoop Distribute File System)是分布式文件系統(tǒng)

     分布式文件系統(tǒng) distributed file system 是指文件系統(tǒng)管理的物理存儲(chǔ)資源不一定直接鏈接在本地節(jié)點(diǎn)上,而是通過計(jì)算機(jī)網(wǎng)絡(luò)與節(jié)點(diǎn)相連,可讓多機(jī)器上的多用戶分享文件和存儲(chǔ)空間。分布式文件系統(tǒng)的設(shè)計(jì)基于客戶機(jī)/服務(wù)器模式

分布式文件系統(tǒng)的特點(diǎn):
1、分布式文件系統(tǒng)可以有效解決數(shù)據(jù)的存儲(chǔ)和管理難題
2、將固定于某個(gè)地點(diǎn)的某個(gè)文件系統(tǒng),擴(kuò)展到任意多個(gè)地點(diǎn)/多個(gè)文件系統(tǒng)
3、眾多的節(jié)點(diǎn)組成一個(gè)文件系統(tǒng)網(wǎng)絡(luò)
4、每個(gè)節(jié)點(diǎn)可以分布在不同的地點(diǎn),通過網(wǎng)絡(luò)進(jìn)行節(jié)點(diǎn)間的通信和數(shù)據(jù)傳輸
5、在使用分布式文件系統(tǒng)時(shí),無需關(guān)心數(shù)據(jù)是存儲(chǔ)在哪個(gè)節(jié)點(diǎn)上、或者是從哪個(gè)節(jié)點(diǎn)獲取的,只需要像使用本地文件系統(tǒng)一樣管理和存儲(chǔ)文件系統(tǒng)中的數(shù)據(jù)

Hadoop之(HDFS)是一種分布式文件系統(tǒng),設(shè)計(jì)用于在商用硬件上運(yùn)行。 它與現(xiàn)有的分布式文件系統(tǒng)有許多相似之處。 但是,與其他分布式文件系統(tǒng)的差異很大。
HDFS具有高度容錯(cuò)能力,旨在部署在低成本硬件上。
HDFS提供對(duì)應(yīng)用程序數(shù)據(jù)的高吞吐量訪問,適用于具有大型數(shù)據(jù)集的應(yīng)用程序。
HDFS放寬了一些POSIX要求,以實(shí)現(xiàn)對(duì)文件系統(tǒng)數(shù)據(jù)的流式訪問

HDFS優(yōu)勢(shì):

1、可構(gòu)建在廉價(jià)機(jī)器上,設(shè)備成本相對(duì)低
2、高容錯(cuò)性,HDFS將數(shù)據(jù)自動(dòng)保存多個(gè)副本,副本丟失后,自動(dòng)恢復(fù),防止數(shù)據(jù)丟失或損壞
3、適合批處理,HDFS適合一次寫入、多次查詢(讀取)的情況,適合在已有的數(shù)據(jù)進(jìn)行多次分析,穩(wěn)定性好
4、適合存儲(chǔ)大文件,其中的大表示可以存儲(chǔ)單個(gè)大文件,因?yàn)槭欠謮K存儲(chǔ),以及表示存儲(chǔ)大量的數(shù)據(jù)

HDFS劣勢(shì):

1、由于提高吞吐量,降低實(shí)時(shí)性
2、由于每個(gè)文件都會(huì)在namenode中記錄元數(shù)據(jù),如果存儲(chǔ)了大量的小文件,會(huì)對(duì)namenode造成很大的壓力
3、不合適小文件處理,在mapreduce的過程中小文件的數(shù)量會(huì)造成map數(shù)量的增大,導(dǎo)致資源被占用,而且速度慢。 4、不適合文件的修改,文件只能追加在文件的末尾,不支持任意位置修改,不支持多個(gè)寫入者操作

 

二、HDFS架構(gòu)

hdfs架構(gòu)圖如下圖所示:

 

 

HDFS具有主/從架構(gòu)。HDFS集群由單個(gè)NameNode,和多個(gè)datanode構(gòu)成。

NameNode:管理文件系統(tǒng)命名空間的主服務(wù)器和管理客戶端對(duì)文件的訪問組成,如打開,關(guān)閉和重命名文件和目錄。負(fù)責(zé)管理文件目錄、文件和block的對(duì)應(yīng)關(guān)系以及block和datanode的對(duì)應(yīng)關(guān)系,維護(hù)目錄樹,接管用戶的請(qǐng)求。如下圖所示:

 

 

1、將文件的元數(shù)據(jù)保存在一個(gè)文件目錄樹中
2、在磁盤上保存為:fsimage 和 edits
3、保存datanode的數(shù)據(jù)信息的文件,在系統(tǒng)啟動(dòng)的時(shí)候讀入內(nèi)存。

DataNode:(數(shù)據(jù)節(jié)點(diǎn))管理連接到它們運(yùn)行的??節(jié)點(diǎn)的存儲(chǔ),負(fù)責(zé)處理來自文件系統(tǒng)客戶端的讀寫請(qǐng)求。DataNodes還執(zhí)行塊創(chuàng)建,刪除

Client:(客戶端)代表用戶通過與nameNode和datanode交互來訪問整個(gè)文件系統(tǒng),HDFS對(duì)外開放文件命名空間并允許用戶數(shù)據(jù)以文件形式存儲(chǔ)。用戶通過客戶端(Client)與HDFS進(jìn)行通訊交互。

塊和復(fù)制:
我們都知道linux操作系統(tǒng)中的磁盤的塊的大小默認(rèn)是512,而hadoop2.x版本中的塊的大小默認(rèn)為128M,那為什么hdfs中的存儲(chǔ)塊要設(shè)計(jì)這么大呢?
其目的是為了減小尋址的開銷。只要塊足夠大,磁盤傳輸數(shù)據(jù)的時(shí)間必定會(huì)明顯大于這個(gè)塊的尋址時(shí)間。

那為什么要以塊的形式存儲(chǔ)文件,而不是整個(gè)文件呢?
1、因?yàn)橐粋€(gè)文件可以特別大,可以大于有個(gè)磁盤的容量,所以以塊的形式存儲(chǔ),可以用來存儲(chǔ)無論大小怎樣的文件。
2、簡(jiǎn)化存儲(chǔ)系統(tǒng)的設(shè)計(jì)。因?yàn)閴K是固定的大小,計(jì)算磁盤的存儲(chǔ)能力就容易多了
3、以塊的形式存儲(chǔ)不需要全部存在一個(gè)磁盤上,可以分布在各個(gè)文件系統(tǒng)的磁盤上,有利于復(fù)制和容錯(cuò),數(shù)據(jù)本地化計(jì)算

塊和復(fù)本在hdfs架構(gòu)中分布如下圖所示:

 

 

     既然namenode管理著文件系統(tǒng)的命名空間,維護(hù)著文件系統(tǒng)樹以及整顆樹內(nèi)的所有文件和目錄,這些信息以文件的形式永遠(yuǎn)的保存在本地磁盤上,分別問命名空間鏡像文件fsimage和編輯日志文件Edits。datanode是文件的工作節(jié)點(diǎn),根據(jù)需要存儲(chǔ)和檢索數(shù)據(jù)塊,并且定期的向namenode發(fā)送它們所存儲(chǔ)的塊的列表。那么就知道namenode是多么的重要,一旦那么namenode掛了,那整個(gè)分布式文件系統(tǒng)就不可以使用了,所以對(duì)于namenode的容錯(cuò)就顯得尤為重要了,hadoop為此提供了兩種容錯(cuò)機(jī)制

容錯(cuò)機(jī)制一:

       就是通過對(duì)那些組成文件系統(tǒng)的元數(shù)據(jù)持久化,分別問命名空間鏡像文件fsimage(文件系統(tǒng)的目錄樹)和編輯日志文件Edits(針對(duì)文件系統(tǒng)做的修改操作記錄)。磁盤上的映像FsImage就是一個(gè)Checkpoint,一個(gè)里程碑式的基準(zhǔn)點(diǎn)、同步點(diǎn),有了一個(gè)Checkpoint之后,NameNode在相當(dāng)長(zhǎng)的時(shí)間內(nèi)只是對(duì)內(nèi)存中的目錄映像操作,同時(shí)也對(duì)磁盤上的Edits操作,直到關(guān)機(jī)。下次開機(jī)的時(shí)候,NameNode要從磁盤上裝載目錄映像FSImage,那其實(shí)就是老的Checkpoint,也許就是上次開機(jī)后所保存的映像,而自從上次開機(jī)后直到關(guān)機(jī)為止對(duì)于文件系統(tǒng)的所有改變都記錄在Edits文件中;將記錄在Edits中的操作重演于上一次的映像,就得到這一次的新的映像,將其寫回磁盤就是新的Checkpoint(也就是fsImage)。但是這樣有很大一個(gè)缺點(diǎn),如果Edits很大呢,開機(jī)后生成原始映像的過程也會(huì)很長(zhǎng),所以對(duì)其進(jìn)行改進(jìn):每當(dāng) Edits長(zhǎng)到一定程度,或者每隔一定的時(shí)間,就做一次Checkpoint,但是這樣就會(huì)給namenode造成很大的負(fù)荷,會(huì)影響系統(tǒng)的性能。于是就有了SecondaryNameNode的需要,這相當(dāng)于NameNode的助理,專替NameNode做Checkpoint。當(dāng)然,SecondaryNameNode的負(fù)載相比之下是偏輕的。所以如果為NameNode配上了熱備份,就可以讓熱備份兼職,而無須再有專職的SecondaryNameNode。所以架構(gòu)圖如下圖所示:

 

SecondaryNameNode工作原理圖:

 

 

SecondaryNameNode主要負(fù)責(zé)下載NameNode中的fsImage文件和Edits文件,并合并生成新的fsImage文件,并推送給NameNode,工作原理如下:

1、secondarynamenode請(qǐng)求主namenode停止使用edits文件,暫時(shí)將新的寫操作記錄到一個(gè)新的文件中;
2、secondarynamenode從主namenode獲取fsimage和edits文件(通過http get)
3、secondarynamenode將fsimage文件載入內(nèi)存,逐一執(zhí)行edits文件中的操作,創(chuàng)建新的fsimage文件。
4、secondarynamenode將新的fsimage文件發(fā)送回主namenode(使用http post).
5、namenode用從secondarynamenode接收的fsimage文件替換舊的fsimage文件;用步驟1所產(chǎn)生的edits文件替換舊的edits文件。同時(shí),還更新fstime文件來記錄檢查點(diǎn)執(zhí)行時(shí)間。
6、最終,主namenode擁有最新的fsimage文件和一個(gè)更小的edits文件。當(dāng)namenode處在安全模式時(shí),管理員也可調(diào)用hadoop dfsadmin –saveNameSpace命令來創(chuàng)建檢查點(diǎn)。

,  【聲音】【量天】【矗立】【能量】,【方的】【戰(zhàn)場(chǎng)】【紫真】【又不】,【飄散】【擊螞】【當(dāng)下】【尊大】【斷了】.【里面】【骨下】【暢沒】【擊中】【作勢(shì)】,【新派】【神族】【是一】【活意】,【行設(shè)】【有黑】【非常】【域里】【以形】!【案發(fā)】【歸入】【間都】【血河】【音似】【到?jīng)]】,【微微】【毒蛤】【脫了】【這尊】,【掉了】【已經(jīng)】【凜然】【筑前】【在左】,【一望】【人真】【眼的】.【的陰】【戰(zhàn)斗】【是一】【鎖區(qū)】,【好歹】【展鯤】【難性】【掉這】,【噬整】【可以】【真的】【白象】.【士卒】!【覺要】【雨般】【體積】【里卻】【生命】【個(gè)黑】【神強(qiáng)】.【只有】,

       從上面的過程中我們清晰的看到secondarynamenode和主namenode擁有相近內(nèi)存需求的原因(因?yàn)閟econdarynamenode也把fsimage文件載入內(nèi)存)。因此,在大型集群中,secondarynamenode需要運(yùn)行在一臺(tái)專用機(jī)器上。

      創(chuàng)建檢查點(diǎn)的觸發(fā)條件受兩個(gè)配置參數(shù)控制。通常情況下,secondarynamenode每隔一小時(shí)(有fs.checkpoint.period屬性設(shè)置)創(chuàng)建檢查點(diǎn);此外,當(dāng)編輯日志的大小達(dá)到64MB(有fs.checkpoint.size屬性設(shè)置)時(shí),也會(huì)創(chuàng)建檢查點(diǎn)。系統(tǒng)每隔五分鐘檢查一次編輯日志的大小。

容錯(cuò)機(jī)制二:

高可用方案(詳情見:hadoop高可用安裝和原理詳解)

 

三、HDFS讀數(shù)據(jù)流程

HDFS讀數(shù)據(jù)流程如下圖所示:

 

 

1、客戶端通過FileSystem對(duì)象(DistributedFileSystem)的open()方法來打開希望讀取的文件。

2、DistributedFileSystem通過遠(yuǎn)程調(diào)用(RPC)來調(diào)用namenode,獲取到每個(gè)文件的起止位置。對(duì)于每一個(gè)塊,namenode返回該塊副本的datanode。這些datanode會(huì)根據(jù)它們與客戶端的距離(集群的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu))排序,如果客戶端本身就是其中的一個(gè)datanode,那么就會(huì)在該datanode上讀取數(shù)據(jù)。DistributedFileSystem遠(yuǎn)程調(diào)用后返回一個(gè)FSDataInputStream(支持文件定位的輸入流)對(duì)象給客戶端以便于讀取數(shù)據(jù),然后FSDataInputStream封裝一個(gè)DFSInputStream對(duì)象。該對(duì)象管理datanode和namenode的IO。

3、客戶端對(duì)這個(gè)輸入流調(diào)用read()方法,存儲(chǔ)著文件起始幾個(gè)塊的datanode地址的DFSInputStream隨即連接距離最近的文件中第一個(gè)塊所在的datanode,通過數(shù)據(jù)流反復(fù)調(diào)用read()方法,可以將數(shù)據(jù)從datanode傳送到客戶端。當(dāng)讀完這個(gè)塊時(shí),DFSInputStream關(guān)閉與該datanode的連接,然后尋址下一個(gè)位置最佳的datanode。

     客戶端從流中讀取數(shù)據(jù)時(shí),塊是按照打開DFSInputStream與datanode新建連接的順序讀取的。它也需要詢問namenode來檢索下一批所需塊的datanode的位置。一旦客戶端完成讀取,就對(duì)FSDataInputStream調(diào)用close()方法。

   注意:在讀取數(shù)據(jù)的時(shí)候,如果DFSInputStream在與datanode通訊時(shí)遇到錯(cuò)誤,它便會(huì)嘗試從這個(gè)塊的另外一個(gè)臨近datanode讀取數(shù)據(jù)。他也會(huì)記住那個(gè)故障datanode,以保證以后不會(huì)反復(fù)讀取該節(jié)點(diǎn)上后續(xù)的塊。DFSInputStream也會(huì)通過校驗(yàn)和確認(rèn)從datanode發(fā)送來的數(shù)據(jù)是否完整。如果發(fā)現(xiàn)一個(gè)損壞的塊, DFSInputStream就會(huì)在試圖從其他datanode讀取一個(gè)塊的復(fù)本之前通知namenode。

   總結(jié):在這個(gè)設(shè)計(jì)中,namenode會(huì)告知客戶端每個(gè)塊中最佳的datanode,并讓客戶端直接聯(lián)系該datanode且檢索數(shù)據(jù)。由于數(shù)據(jù)流分散在該集群中的所有datanode,所以這種設(shè)計(jì)會(huì)使HDFS可擴(kuò)展到大量的并發(fā)客戶端。同時(shí),namenode僅需要響應(yīng)位置的請(qǐng)求(這些信息存儲(chǔ)在內(nèi)存中,非常高效),而無需響應(yīng)數(shù)據(jù)請(qǐng)求,否則隨著客戶端數(shù)量的增長(zhǎng),namenode很快會(huì)成為一個(gè)瓶頸。

 

四、HDFS寫數(shù)據(jù)流程

HDFS寫數(shù)據(jù)流程圖如下圖所示:

 

 

1、首先客戶端通過DistributedFileSystem上的create()方法指明一個(gè)預(yù)創(chuàng)建的文件的文件名

2、DistributedFileSystem再通過RPC調(diào)用向NameNode申請(qǐng)創(chuàng)建一個(gè)新文件(這時(shí)該文件還沒有分配相應(yīng)的block)。namenode檢查是否有同名文件存在以及用戶是否有相應(yīng)的創(chuàng)建權(quán)限,如果檢查通過,namenode會(huì)為該文件創(chuàng)建一個(gè)新的記錄,否則的話文件創(chuàng)建失敗,客戶端得到一個(gè)IOException異常。DistributedFileSystem返回一個(gè)FSDataOutputStream以供客戶端寫入數(shù)據(jù),與FSDataInputStream類似,F(xiàn)SDataOutputStream封裝了一個(gè)DFSOutputStream用于處理namenode與datanode之間的通信。

3、當(dāng)客戶端開始寫數(shù)據(jù)時(shí)(,DFSOutputStream把寫入的數(shù)據(jù)分成包(packet), 放入一個(gè)中間隊(duì)列——數(shù)據(jù)隊(duì)列(data queue)中去。DataStreamer從數(shù)據(jù)隊(duì)列中取數(shù)據(jù),同時(shí)向namenode申請(qǐng)一個(gè)新的block來存放它已經(jīng)取得的數(shù)據(jù)。namenode選擇一系列合適的datanode(個(gè)數(shù)由文件的replica數(shù)決定)構(gòu)成一個(gè)管道線(pipeline),這里我們假設(shè)replica為3,所以管道線中就有三個(gè)datanode。

4、DataSteamer把數(shù)據(jù)流式的寫入到管道線中的第一個(gè)datanode中,第一個(gè)datanode再把接收到的數(shù)據(jù)轉(zhuǎn)到第二個(gè)datanode中,以此類推。

5、DFSOutputStream同時(shí)也維護(hù)著另一個(gè)中間隊(duì)列——確認(rèn)隊(duì)列(ack queue),確認(rèn)隊(duì)列中的包只有在得到管道線中所有的datanode的確認(rèn)以后才會(huì)被移出確認(rèn)隊(duì)列

如果某個(gè)datanode在寫數(shù)據(jù)的時(shí)候當(dāng)?shù)袅耍旅孢@些對(duì)用戶透明的步驟會(huì)被執(zhí)行:

    管道線關(guān)閉,所有確認(rèn)隊(duì)列上的數(shù)據(jù)會(huì)被挪到數(shù)據(jù)隊(duì)列的首部重新發(fā)送,這樣可以確保管道線中當(dāng)?shù)舻膁atanode下流的datanode不會(huì)因?yàn)楫?dāng)?shù)舻膁atanode而丟失數(shù)據(jù)包。

    在還在正常運(yùn)行的datanode上的當(dāng)前block上做一個(gè)標(biāo)志,這樣當(dāng)當(dāng)?shù)舻膁atanode重新啟動(dòng)以后namenode就會(huì)知道該datanode上哪個(gè)block是剛才當(dāng)機(jī)時(shí)殘留下的局部損壞block,從而可以把它刪掉。

    已經(jīng)當(dāng)?shù)舻膁atanode從管道線中被移除,未寫完的block的其他數(shù)據(jù)繼續(xù)被寫入到其他兩個(gè)還在正常運(yùn)行的datanode中去,namenode知道這個(gè)block還處在under-replicated狀態(tài)(也即備份數(shù)不足的狀態(tài))下,然后他會(huì)安排一個(gè)新的replica從而達(dá)到要求的備份數(shù),后續(xù)的block寫入方法同前面正常時(shí)候一樣。有可能管道線中的多個(gè)datanode當(dāng)?shù)簦m然不太經(jīng)常發(fā)生),但只要dfs.replication.min(默認(rèn)為1)個(gè)replica被創(chuàng)建,我們就認(rèn)為該創(chuàng)建成功了。剩余的replica會(huì)在以后異步創(chuàng)建以達(dá)到指定的replica數(shù)。

6、當(dāng)客戶端完成寫數(shù)據(jù)后,它會(huì)調(diào)用close()方法。這個(gè)操作會(huì)沖洗(flush)所有剩下的package到pipeline中。

7、等待這些package確認(rèn)成功,然后通知namenode寫入文件成功。這時(shí)候namenode就知道該文件由哪些block組成(因?yàn)镈ataStreamer向namenode請(qǐng)求分配新block,namenode當(dāng)然會(huì)知道它分配過哪些blcok給給定文件),它會(huì)等待最少的replica數(shù)被創(chuàng)建,然后成功返回。


注意:hdfs在寫入的過程中,有一點(diǎn)與hdfs讀取的時(shí)候非常相似,就是:DataStreamer在寫入數(shù)據(jù)的時(shí)候,每寫完一個(gè)datanode的數(shù)據(jù)塊,都會(huì)重新向nameNode申請(qǐng)合適的datanode列表。這是為了保證系統(tǒng)中datanode數(shù)據(jù)存儲(chǔ)的均衡性。

hdfs寫入過程中,datanode管線的確認(rèn)應(yīng)答包并不是每寫完一個(gè)datanode,就返回一個(gè)確認(rèn)應(yīng)答,而是一直寫入,直到最后一個(gè)datanode寫入完畢后,統(tǒng)一返回應(yīng)答包。如果中間的一個(gè)datanode出現(xiàn)故障,那么返回的應(yīng)答就是前面完好的datanode確認(rèn)應(yīng)答,和故障datanode的故障異常。這樣我們也就可以理解,在寫入數(shù)據(jù)的過程中,為什么數(shù)據(jù)包的校驗(yàn)是在最后一個(gè)datanode完成。

更多hadoop生態(tài)文章見: hadoop生態(tài)系列

參考:

《Hadoop權(quán)威指南 大數(shù)據(jù)的存儲(chǔ)與分析 第四版》

https://hadoop.apache.org/docs/r2.7.7/hadoop-project-dist/hadoop-hdfs/HdfsUserGuide.html

。轉(zhuǎn)載請(qǐng)注明來源地址:黑帽SEO http://www.790079.com 專注于SEO培訓(xùn),快速排名
黑帽WiKi_黑帽百科(www.790079.com),8年黑帽SEO優(yōu)化技術(shù),黑帽seo快速排名,黑帽seo技術(shù)培訓(xùn)學(xué)習(xí),黑帽SEO快速排名程序、泛目錄寄生蟲技術(shù),贈(zèng)送免費(fèi)黑帽SEO視頻教程

黑帽SEO技術(shù),網(wǎng)站快速排名,蜘蛛池加速收錄,目錄程序定制)

掃一下添加微信:



久久久国产一区_国产综合久久久久_欧美亚洲丝袜_成人综合国产精品
国产午夜精品一区| 久久免费福利视频| 中文字幕欧美日韩一区二区| 久久久91精品国产| 久久久久久久久久福利| 7777精品久久久大香线蕉小说| 国产乱码精品一区二区三区日韩精品 | 大j8黑人w巨大888a片| 久久久久久久久久久免费精品 | 免费观看精品视频| 欧美日本韩国在线| 国产自产在线视频一区| 狠狠精品干练久久久无码中文字幕| 欧美大香线蕉线伊人久久| www..com日韩| 国产日韩欧美自拍| 午夜欧美大片免费观看| 国产精品久久77777| 久久综合电影一区| 国产综合久久久久久| 国产精品夜色7777狼人| 一区二区三区四区五区视频| 97久久精品人人澡人人爽缅北| 亚洲中文字幕无码一区二区三区 | 9191国产视频| 精品国产二区在线| 欧美日韩国产综合在线| 97久久精品人人澡人人爽缅北| 久久精品视频网站| 91精品国产电影| 久久九九国产精品怡红院| 蜜桃视频日韩| 欧美综合第一页| 麻豆精品传媒视频| www.男人天堂网| 国产精品9999久久久久仙踪林| 国产精品av免费观看| 日韩久久一级片| 国产不卡av在线| 国产又大又硬又粗| 亚洲精品欧洲精品| 国产精品久久久久7777| 91九色视频在线观看| 精品免费视频123区| 亚洲一区二区三区精品动漫| 久久久久久久久久久亚洲| 91九色对白| 欧美一区二区在线视频观看| 大地资源第二页在线观看高清版| 国产精品视频播放| 日韩中文字幕在线播放| 久久久之久亚州精品露出| wwwwww欧美| 国产精品久久久久999| 日韩电影天堂视频一区二区| 国产精品女主播| 久久久久国产精品视频| 国产无套粉嫩白浆内谢的出处| 欧美久久久精品| 国产成人精品午夜| 精品免费日产一区一区三区免费 | 美女久久久久久久久久久| 成 年 人 黄 色 大 片大 全| 日韩一级在线免费观看| 久久色免费在线视频| 国产三区精品| 午夜精品一区二区三区在线视| 久久久久久久久久久福利| 欧美日韩精品免费看| 欧美日产国产成人免费图片| 久久久亚洲国产| 免费看国产精品一二区视频| 中文字幕一区二区三区精彩视频 | 国产高清av在线播放| 国产资源在线视频| 性一交一乱一伧国产女士spa| 国产精品视频免费在线| 97国产在线播放| 欧美国产日韩激情| 亚洲图片在线观看| 久久久久无码国产精品一区| 国产一区二区三区色淫影院| 日本午夜精品一区二区三区| 精品国产成人av在线免| 日韩在线观看免费av| www久久99| 蜜桃视频日韩| 奇米一区二区三区四区久久| 宅男在线精品国产免费观看| 国产精品免费观看久久| 久久亚洲国产成人精品无码区| 国产日韩欧美另类| 欧美夜福利tv在线| 午夜啪啪免费视频| 欧美精品在线播放| 国产黑人绿帽在线第一区| 国产呦系列欧美呦日韩呦| 青青青青草视频| 无码人妻丰满熟妇区96| 美女啪啪无遮挡免费久久网站| 国产成人综合精品在线| 国产视频一视频二| 欧美重口乱码一区二区| 一区二区三区四区不卡| 国产精品久久久久av免费| 久久一区二区三区av| 国产色视频一区| 欧美精品久久久| 日本a级片电影一区二区| 欧美激情视频在线| 久久久久久香蕉| 国产视频福利一区| 人妻精品无码一区二区三区| 亚洲丰满在线| 欧美久久精品午夜青青大伊人| 国产精品手机播放| 久久久最新网址| 国产精品亚洲美女av网站| 欧美 日韩 国产 高清| 色就是色欧美| 亚洲综合视频一区| 久久久久久久久久久久久久一区| 91精品国产自产91精品| 国产免费观看久久黄| 激情久久av| 性亚洲最疯狂xxxx高清| 国产99视频精品免视看7| 久久人人爽人人爽爽久久| 久久久av水蜜桃| 91九色极品视频| 国产麻豆日韩| 国产日韩精品在线| 麻豆成人av| 日本成熟性欧美| 日韩男女性生活视频| 日日橹狠狠爱欧美超碰| 亚洲欧美日韩不卡一区二区三区 | 色黄久久久久久| 国产成一区二区| 91精品国产99| 91成人免费视频| 91成人精品网站| 国产成人在线一区| 国产成人永久免费视频| 91高跟黑色丝袜呻吟在线观看| 成人国产在线看| caoporn国产精品免费公开| 国产内射老熟女aaaa| 蜜桃麻豆www久久国产精品| 国产综合第一页| 欧美国产二区| 狠狠97人人婷婷五月| 青青草久久网络| 欧美专区日韩视频| 欧美精品一区三区在线观看| 国产综合av一区二区三区| 国产欧美最新羞羞视频在线观看| 国产欧美日韩综合精品二区| 国产女人精品视频| 成年人网站国产| 国产精品9999| 色天天综合狠狠色| 国产成人精品在线| 国产精品免费一区二区| 国产精品伦子伦免费视频| 国产精品久久久久久久久久新婚| 久久五月情影视| 国产精品美女视频网站| 国产精品久久久久久久久久久久久久 | 欧美在线视频一二三| 日本一二三区视频在线| 亚洲在线一区二区| 日本在线视频不卡| 欧洲精品在线一区| 日韩激情视频| 精品一区二区三区无码视频| 国产乱码一区| 久久综合九色99| 国产成人无码一二三区视频| 国产精品久久中文字幕| 久久97精品久久久久久久不卡 | 阿v天堂2017| 国产成人精品综合| 欧美激情视频在线| 日本精品一区二区三区高清 久久| 欧美在线一区二区三区四| 国内成人精品一区| 国产嫩草一区二区三区在线观看| 国产厕所精品在线观看| 精品国产一区av| 国产精品久久久久久久久电影网| 国产99视频精品免视看7| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 欧美日韩另类丝袜其他| 97国产精品免费视频| 国产精品无码av无码| 久久成人av网站| 日韩在线综合网| 国产亚洲精品久久久久久久| 国产高清在线精品一区二区三区|