青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

不會飛的鳥

2010年12月10日 ... 不鳥他們!!! 我要用自己開發(fā)的分布式文件系統(tǒng)、分布式調(diào)度系統(tǒng)、分布式檢索系統(tǒng), 做自己的搜索引擎!!!大魚有大志!!! ---楊書童

Hadoop分布式文件系統(tǒng):架構(gòu)和設(shè)計要點(diǎn)

原文:http://hadoop.apache.org/core/docs/current/hdfs_design.html
一、前提和設(shè)計目標(biāo)
1、硬件錯誤是常態(tài),而非異常情況,HDFS可能是有成百上千的server組成,任何一個組件都有可能一直失效,因此錯誤檢測和快速、自動的恢復(fù)是HDFS的核心架構(gòu)目標(biāo)。
2、跑在HDFS上的應(yīng)用與一般的應(yīng)用不同,它們主要是以流式讀為主,做批量處理;比之關(guān)注數(shù)據(jù)訪問的低延遲問題,更關(guān)鍵的在于數(shù)據(jù)訪問的高吞吐量。
3HDFS以支持大數(shù)據(jù)集合為目標(biāo),一個存儲在上面的典型文件大小一般都在千兆至T字節(jié),一個單一HDFS實(shí)例應(yīng)該能支撐數(shù)以千萬計的文件。
4HDFS應(yīng)用對文件要求的是write-one-read-many訪問模型。一個文件經(jīng)過創(chuàng)建、寫,關(guān)閉之后就不需要改變。這一假設(shè)簡化了數(shù)據(jù)一致性問題,使高吞吐量的數(shù)據(jù)訪問成為可能。典型的如MapReduce框架,或者一個web crawler應(yīng)用都很適合這個模型。
5、移動計算的代價比之移動數(shù)據(jù)的代價低。一個應(yīng)用請求的計算,離它操作的數(shù)據(jù)越近就越高效,這在數(shù)據(jù)達(dá)到海量級別的時候更是如此。將計算移動到數(shù)據(jù)附近,比之將數(shù)據(jù)移動到應(yīng)用所在顯然更好,HDFS提供給應(yīng)用這樣的接口。
6、在異構(gòu)的軟硬件平臺間的可移植性。

二、NamenodeDatanode
    HDFS采用master/slave架構(gòu)。一個HDFS集群是有一個Namenode和一定數(shù)目的Datanode組成。Namenode是一個中心服務(wù)器,負(fù)責(zé)管理文件系統(tǒng)的namespace和客戶端對文件的訪問。Datanode在集群中一般是一個節(jié)點(diǎn)一個,負(fù)責(zé)管理節(jié)點(diǎn)上它們附帶的存儲。在內(nèi)部,一個文件其實(shí)分成一個或多個block,這些block存儲在Datanode集合里。Namenode執(zhí)行文件系統(tǒng)的namespace操作,例如打開、關(guān)閉、重命名文件和目錄,同時決定block到具體Datanode節(jié)點(diǎn)的映射。DatanodeNamenode的指揮下進(jìn)行block的創(chuàng)建、刪除和復(fù)制。NamenodeDatanode都是設(shè)計成可以跑在普通的廉價的運(yùn)行linux的機(jī)器上。HDFS采用java語言開發(fā),因此可以部署在很大范圍的機(jī)器上。一個典型的部署場景是一臺機(jī)器跑一個單獨(dú)的Namenode節(jié)點(diǎn),集群中的其他機(jī)器各跑一個Datanode實(shí)例。這個架構(gòu)并不排除一臺機(jī)器上跑多個Datanode,不過這比較少見。

單一節(jié)點(diǎn)的Namenode大大簡化了系統(tǒng)的架構(gòu)。Namenode負(fù)責(zé)保管和管理所有的HDFS元數(shù)據(jù),因而用戶數(shù)據(jù)就不需要通過Namenode(也就是說文件數(shù)據(jù)的讀寫是直接在Datanode上)。

三、文件系統(tǒng)的namespace
   HDFS支持傳統(tǒng)的層次型文件組織,與大多數(shù)其他文件系統(tǒng)類似,用戶可以創(chuàng)建目錄,并在其間創(chuàng)建、刪除、移動和重命名文件。HDFS不支持user quotas和訪問權(quán)限,也不支持鏈接(link),不過當(dāng)前的架構(gòu)并不排除實(shí)現(xiàn)這些特性。Namenode維護(hù)文件系統(tǒng)的namespace,任何對文件系統(tǒng)namespace和文件屬性的修改都將被Namenode記錄下來。應(yīng)用可以設(shè)置HDFS保存的文件的副本數(shù)目,文件副本的數(shù)目稱為文件的 replication因子,這個信息也是由Namenode保存。

四、數(shù)據(jù)復(fù)制
    HDFS被設(shè)計成在一個大集群中可以跨機(jī)器地可靠地存儲海量的文件。它將每個文件存儲成block序列,除了最后一個block,所有的block都是同樣的大小。文件的所有block為了容錯都會被復(fù)制。每個文件的block大小和replication因子都是可配置的。Replication因子可以在文件創(chuàng)建的時候配置,以后也可以改變。HDFS中的文件是write-one,并且嚴(yán)格要求在任何時候只有一個writerNamenode全權(quán)管理block的復(fù)制,它周期性地從集群中的每個Datanode接收心跳包和一個Blockreport。心跳包的接收表示該Datanode節(jié)點(diǎn)正常工作,而Blockreport包括了該Datanode上所有的block組成的列表。


1、副本的存放,副本的存放是HDFS可靠性和性能的關(guān)鍵。HDFS采用一種稱為rack-aware的策略來改進(jìn)數(shù)據(jù)的可靠性、有效性和網(wǎng)絡(luò)帶寬的利用。這個策略實(shí)現(xiàn)的短期目標(biāo)是驗證在生產(chǎn)環(huán)境下的表現(xiàn),觀察它的行為,構(gòu)建測試和研究的基礎(chǔ),以便實(shí)現(xiàn)更先進(jìn)的策略。龐大的HDFS實(shí)例一般運(yùn)行在多個機(jī)架的計算機(jī)形成的集群上,不同機(jī)架間的兩臺機(jī)器的通訊需要通過交換機(jī),顯然通常情況下,同一個機(jī)架內(nèi)的兩個節(jié)點(diǎn)間的帶寬會比不同機(jī)架間的兩臺機(jī)器的帶寬大。
    通過一個稱為Rack Awareness的過程,Namenode決定了每個Datanode所屬的rack id。一個簡單但沒有優(yōu)化的策略就是將副本存放在單獨(dú)的機(jī)架上。這樣可以防止整個機(jī)架(非副本存放)失效的情況,并且允許讀數(shù)據(jù)的時候可以從多個機(jī)架讀取。這個簡單策略設(shè)置可以將副本分布在集群中,有利于組件失敗情況下的負(fù)載均衡。但是,這個簡單策略加大了寫的代價,因為一個寫操作需要傳輸block到多個機(jī)架。
    在大多數(shù)情況下,replication因子是3HDFS的存放策略是將一個副本存放在本地機(jī)架上的節(jié)點(diǎn),一個副本放在同一機(jī)架上的另一個節(jié)點(diǎn),最后一個副本放在不同機(jī)架上的一個節(jié)點(diǎn)。機(jī)架的錯誤遠(yuǎn)遠(yuǎn)比節(jié)點(diǎn)的錯誤少,這個策略不會影響到數(shù)據(jù)的可靠性和有效性。三分之一的副本在一個節(jié)點(diǎn)上,三分之二在一個機(jī)架上,其他保存在剩下的機(jī)架中,這一策略改進(jìn)了寫的性能。

2、副本的選擇,為了降低整體的帶寬消耗和讀延時,HDFS會盡量讓reader讀最近的副本。如果在reader的同一個機(jī)架上有一個副本,那么就讀該副本。如果一個HDFS集群跨越多個數(shù)據(jù)中心,那么reader也將首先嘗試讀本地數(shù)據(jù)中心的副本。

3SafeMode
    Namenode啟動后會進(jìn)入一個稱為SafeMode的特殊狀態(tài),處在這個狀態(tài)的Namenode是不會進(jìn)行數(shù)據(jù)塊的復(fù)制的。Namenode從所有的 Datanode接收心跳包和BlockreportBlockreport包括了某個Datanode所有的數(shù)據(jù)塊列表。每個block都有指定的最小數(shù)目的副本。當(dāng)Namenode檢測確認(rèn)某個Datanode的數(shù)據(jù)塊副本的最小數(shù)目,那么該Datanode就會被認(rèn)為是安全的;如果一定百分比(這個參數(shù)可配置)的數(shù)據(jù)塊檢測確認(rèn)是安全的,那么Namenode將退出SafeMode狀態(tài),接下來它會確定還有哪些數(shù)據(jù)塊的副本沒有達(dá)到指定數(shù)目,并將這些block復(fù)制到其他Datanode

五、文件系統(tǒng)元數(shù)據(jù)的持久化
    Namenode存儲HDFS的元數(shù)據(jù)。對于任何對文件元數(shù)據(jù)產(chǎn)生修改的操作,Namenode都使用一個稱為Editlog的事務(wù)日志記錄下來。例如,在HDFS中創(chuàng)建一個文件,Namenode就會在Editlog中插入一條記錄來表示;同樣,修改文件的replication因子也將往 Editlog插入一條記錄。Namenode在本地OS的文件系統(tǒng)中存儲這個Editlog。整個文件系統(tǒng)的namespace,包括block到文件的映射、文件的屬性,都存儲在稱為FsImage的文件中,這個文件也是放在Namenode所在系統(tǒng)的文件系統(tǒng)上。
    Namenode在內(nèi)存中保存著整個文件系統(tǒng)namespace和文件Blockmap的映像。這個關(guān)鍵的元數(shù)據(jù)設(shè)計得很緊湊,因而一個帶有4G內(nèi)存的 Namenode足夠支撐海量的文件和目錄。當(dāng)Namenode啟動時,它從硬盤中讀取EditlogFsImage,將所有Editlog中的事務(wù)作用(apply)在內(nèi)存中的FsImage ,并將這個新版本的FsImage從內(nèi)存中flush到硬盤上,然后再truncate這個舊的Editlog,因為這個舊的Editlog的事務(wù)都已經(jīng)作用在FsImage上了。這個過程稱為checkpoint。在當(dāng)前實(shí)現(xiàn)中,checkpoint只發(fā)生在Namenode啟動時,在不久的將來我們將實(shí)現(xiàn)支持周期性的checkpoint
    Datanode并不知道關(guān)于文件的任何東西,除了將文件中的數(shù)據(jù)保存在本地的文件系統(tǒng)上。它把每個HDFS數(shù)據(jù)塊存儲在本地文件系統(tǒng)上隔離的文件中。 Datanode并不在同一個目錄創(chuàng)建所有的文件,相反,它用啟發(fā)式地方法來確定每個目錄的最佳文件數(shù)目,并且在適當(dāng)?shù)臅r候創(chuàng)建子目錄。在同一個目錄創(chuàng)建所有的文件不是最優(yōu)的選擇,因為本地文件系統(tǒng)可能無法高效地在單一目錄中支持大量的文件。當(dāng)一個Datanode啟動時,它掃描本地文件系統(tǒng),對這些本地文件產(chǎn)生相應(yīng)的一個所有HDFS數(shù)據(jù)塊的列表,然后發(fā)送報告到Namenode,這個報告就是Blockreport

六、通訊協(xié)議
    所有的HDFS通訊協(xié)議都是構(gòu)建在TCP/IP協(xié)議上。客戶端通過一個可配置的端口連接到Namenode,通過ClientProtocolNamenode交互。而Datanode是使用DatanodeProtocolNamenode交互。從ClientProtocolDatanodeprotocol抽象出一個遠(yuǎn)程調(diào)用(RPC),在設(shè)計上,Namenode不會主動發(fā)起RPC,而是是響應(yīng)來自客戶端和 Datanode RPC請求。

七、健壯性
    HDFS的主要目標(biāo)就是實(shí)現(xiàn)在失敗情況下的數(shù)據(jù)存儲可靠性。常見的三種失敗:Namenode failures, Datanode failures和網(wǎng)絡(luò)分割(network partitions)
1、硬盤數(shù)據(jù)錯誤、心跳檢測和重新復(fù)制
    每個Datanode節(jié)點(diǎn)都向Namenode周期性地發(fā)送心跳包。網(wǎng)絡(luò)切割可能導(dǎo)致一部分DatanodeNamenode失去聯(lián)系。 Namenode通過心跳包的缺失檢測到這一情況,并將這些Datanode標(biāo)記為dead,不會將新的IO請求發(fā)給它們。寄存在dead Datanode上的任何數(shù)據(jù)將不再有效。Datanode的死亡可能引起一些block的副本數(shù)目低于指定值,Namenode不斷地跟蹤需要復(fù)制的 block,在任何需要的情況下啟動復(fù)制。在下列情況可能需要重新復(fù)制:某個Datanode節(jié)點(diǎn)失效,某個副本遭到損壞,Datanode上的硬盤錯誤,或者文件的replication因子增大。

2、集群均衡
   HDFS支持?jǐn)?shù)據(jù)的均衡計劃,如果某個Datanode節(jié)點(diǎn)上的空閑空間低于特定的臨界點(diǎn),那么就會啟動一個計劃自動地將數(shù)據(jù)從一個Datanode搬移到空閑的Datanode。當(dāng)對某個文件的請求突然增加,那么也可能啟動一個計劃創(chuàng)建該文件新的副本,并分布到集群中以滿足應(yīng)用的要求。這些均衡計劃目前還沒有實(shí)現(xiàn)。

3、數(shù)據(jù)完整性
  從某個Datanode獲取的數(shù)據(jù)塊有可能是損壞的,這個損壞可能是由于Datanode的存儲設(shè)備錯誤、網(wǎng)絡(luò)錯誤或者軟件bug造成的。HDFS客戶端軟件實(shí)現(xiàn)了HDFS文件內(nèi)容的校驗和。當(dāng)某個客戶端創(chuàng)建一個新的HDFS文件,會計算這個文件每個block的校驗和,并作為一個單獨(dú)的隱藏文件保存這些校驗和在同一個HDFS namespace下。當(dāng)客戶端檢索文件內(nèi)容,它會確認(rèn)從Datanode獲取的數(shù)據(jù)跟相應(yīng)的校驗和文件中的校驗和是否匹配,如果不匹配,客戶端可以選擇從其他Datanode獲取該block的副本。

4、元數(shù)據(jù)磁盤錯誤
    FsImageEditlogHDFS的核心數(shù)據(jù)結(jié)構(gòu)。這些文件如果損壞了,整個HDFS實(shí)例都將失效。因而,Namenode可以配置成支持維護(hù)多個FsImageEditlog的拷貝。任何對FsImage或者Editlog的修改,都將同步到它們的副本上。這個同步操作可能會降低 Namenode每秒能支持處理的namespace事務(wù)。這個代價是可以接受的,因為HDFS是數(shù)據(jù)密集的,而非元數(shù)據(jù)密集。當(dāng)Namenode重啟的時候,它總是選取最近的一致的FsImageEditlog使用。
   NamenodeHDFS是單點(diǎn)存在,如果Namenode所在的機(jī)器錯誤,手工的干預(yù)是必須的。目前,在另一臺機(jī)器上重啟因故障而停止服務(wù)的Namenode這個功能還沒實(shí)現(xiàn)。

5、快照
   快照支持某個時間的數(shù)據(jù)拷貝,當(dāng)HDFS數(shù)據(jù)損壞的時候,可以恢復(fù)到過去一個已知正確的時間點(diǎn)。HDFS目前還不支持快照功能。

八、數(shù)據(jù)組織
1、數(shù)據(jù)塊
    兼容HDFS的應(yīng)用都是處理大數(shù)據(jù)集合的。這些應(yīng)用都是寫數(shù)據(jù)一次,讀卻是一次到多次,并且讀的速度要滿足流式讀。HDFS支持文件的write- once-read-many語義。一個典型的block大小是64MB,因而,文件總是按照64M切分成chunk,每個chunk存儲于不同的 Datanode
2、步驟
    某個客戶端創(chuàng)建文件的請求其實(shí)并沒有立即發(fā)給Namenode,事實(shí)上,HDFS客戶端會將文件數(shù)據(jù)緩存到本地的一個臨時文件。應(yīng)用的寫被透明地重定向到這個臨時文件。當(dāng)這個臨時文件累積的數(shù)據(jù)超過一個block的大小(默認(rèn)64M),客戶端才會聯(lián)系NamenodeNamenode將文件名插入文件系統(tǒng)的層次結(jié)構(gòu)中,并且分配一個數(shù)據(jù)塊給它,然后返回Datanode的標(biāo)識符和目標(biāo)數(shù)據(jù)塊給客戶端。客戶端將本地臨時文件flush到指定的 Datanode上。當(dāng)文件關(guān)閉時,在臨時文件中剩余的沒有flush的數(shù)據(jù)也會傳輸?shù)街付ǖ?/span>Datanode,然后客戶端告訴Namenode文件已經(jīng)關(guān)閉。此時Namenode才將文件創(chuàng)建操作提交到持久存儲。如果Namenode在文件關(guān)閉前掛了,該文件將丟失。
   上述方法是對通過對HDFS上運(yùn)行的目標(biāo)應(yīng)用認(rèn)真考慮的結(jié)果。如果不采用客戶端緩存,由于網(wǎng)絡(luò)速度和網(wǎng)絡(luò)堵塞會對吞估量造成比較大的影響。

3、流水線復(fù)制
    當(dāng)某個客戶端向HDFS文件寫數(shù)據(jù)的時候,一開始是寫入本地臨時文件,假設(shè)該文件的replication因子設(shè)置為3,那么客戶端會從Namenode 獲取一張Datanode列表來存放副本。然后客戶端開始向第一個Datanode傳輸數(shù)據(jù),第一個Datanode一小部分一小部分(4kb)地接收數(shù)據(jù),將每個部分寫入本地倉庫,并且同時傳輸該部分到第二個Datanode節(jié)點(diǎn)。第二個Datanode也是這樣,邊收邊傳,一小部分一小部分地收,存儲在本地倉庫,同時傳給第三個Datanode,第三個Datanode就僅僅是接收并存儲了。這就是流水線式的復(fù)制。

九、可訪問性
    HDFS給應(yīng)用提供了多種訪問方式,可以通過DFSShell通過命令行與HDFS數(shù)據(jù)進(jìn)行交互,可以通過java API調(diào)用,也可以通過C語言的封裝API訪問,并且提供了瀏覽器訪問的方式。正在開發(fā)通過WebDav協(xié)議訪問的方式。具體使用參考文檔。
十、空間的回收
1、文件的刪除和恢復(fù)
    用戶或者應(yīng)用刪除某個文件,這個文件并沒有立刻從HDFS中刪除。相反,HDFS將這個文件重命名,并轉(zhuǎn)移到/trash目錄。當(dāng)文件還在/trash目錄時,該文件可以被迅速地恢復(fù)。文件在/trash中保存的時間是可配置的,當(dāng)超過這個時間,Namenode就會將該文件從namespace中刪除。文件的刪除,也將釋放關(guān)聯(lián)該文件的數(shù)據(jù)塊。注意到,在文件被用戶刪除和HDFS空閑空間的增加之間會有一個等待時間延遲。
    當(dāng)被刪除的文件還保留在/trash目錄中的時候,如果用戶想恢復(fù)這個文件,可以檢索瀏覽/trash目錄并檢索該文件。/trash目錄僅僅保存被刪除文件的最近一次拷貝。/trash目錄與其他文件目錄沒有什么不同,除了一點(diǎn):HDFS在該目錄上應(yīng)用了一個特殊的策略來自動刪除文件,目前的默認(rèn)策略是刪除保留超過6小時的文件,這個策略以后會定義成可配置的接口。

2Replication因子的減小
    當(dāng)某個文件的replication因子減小,Namenode會選擇要刪除的過剩的副本。下次心跳檢測就將該信息傳遞給DatanodeDatanode就會移除相應(yīng)的block并釋放空間,同樣,在調(diào)用setReplication方法和集群中的空閑空間增加之間會有一個時間延遲。

參考資料:
HDFS Java API: http://hadoop.apache.org/core/docs/current/api/
HDFS source code: http://hadoop.apache.org/core/version_control.html

posted on 2010-03-24 23:55 不會飛的鳥 閱讀(298) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            男人的天堂亚洲| 日韩午夜精品| 亚洲视频一区在线| 欧美www视频| 伊人影院久久| 欧美一区二区三区在线视频| 欧美国产日韩一区二区三区| 亚洲电影在线看| 亚洲午夜性刺激影院| 欧美成人激情在线| 午夜精品理论片| 国产精品久久久99| 久久精品人人爽| 亚洲人成小说网站色在线| 樱桃国产成人精品视频| 亚洲黄色成人网| 久久激情视频| 亚洲成色www8888| 亚洲一区二区高清视频| 亚洲嫩草精品久久| 亚洲国产精品传媒在线观看| 国产精品久久久久久久浪潮网站 | 篠田优中文在线播放第一区| 一二三四社区欧美黄| 亚洲精品国产拍免费91在线| 激情欧美日韩| 欧美福利视频网站| 91久久精品一区二区别| 欧美日韩天堂| 久久精品中文| 激情六月婷婷综合| 在线视频一区二区| 亚洲精品免费一区二区三区| 国产人久久人人人人爽| 久久大逼视频| 亚洲精品在线观| 在线免费观看成人网| 牛牛国产精品| 午夜精品一区二区三区四区 | 免费成人网www| 久久男人资源视频| 亚洲少妇中出一区| 免费欧美高清视频| 午夜精品福利电影| 国产精品亚洲视频| 久久综合久色欧美综合狠狠| 最近看过的日韩成人| 欧美国产视频在线观看| 亚洲精品美女91| 亚洲欧美日韩一区在线观看| 国产精品久久久久久福利一牛影视| 欧美性理论片在线观看片免费| 美日韩精品免费| 欧美在线观看网站| 亚洲字幕在线观看| 国产乱人伦精品一区二区| 欧美a级片网| 欧美大片免费观看| 另类专区欧美制服同性| 99视频+国产日韩欧美| 91久久夜色精品国产九色| 樱桃国产成人精品视频| 一区二区三区精品视频| 欧美一区二区成人6969| 欧美伊人久久久久久久久影院| 国产一区二区精品久久91| 国产在线成人| 欧美视频中文在线看| 亚洲国产另类 国产精品国产免费| 欧美日韩一区二区视频在线观看| 亚洲校园激情| 欧美成人一区二区三区在线观看| 国产又爽又黄的激情精品视频| 美腿丝袜亚洲色图| 日韩午夜免费| 一区二区三区精品久久久| 国产欧美一区二区三区另类精品 | 欧美在线视频一区二区| 午夜精品亚洲| 久久国产精品免费一区| 1769国产精品| 尤妮丝一区二区裸体视频| 国产精品香蕉在线观看| 美日韩精品免费| 在线观看日韩国产| 亚洲人体一区| 国产日韩欧美在线播放| 国产精品永久免费| 91久久精品美女| 亚洲精品国久久99热| 亚洲色图制服丝袜| 欧美三级电影一区| 99re8这里有精品热视频免费 | 欧美韩日一区二区| 最近中文字幕日韩精品| 久久人人97超碰国产公开结果 | 国产婷婷一区二区| 亚洲激情一区二区| 午夜精品视频在线观看| 亚洲一区免费观看| 久久久99久久精品女同性| 亚洲人成网站777色婷婷| 欧美一级黄色网| 亚洲视频精品在线| 国产精品久久久久久久久久直播| 亚洲精品一区二区三区不| 亚洲美女在线看| 一本色道久久综合| 这里只有精品丝袜| 亚洲精品一区二区三区婷婷月 | 午夜久久99| 久久字幕精品一区| 最新高清无码专区| 噜噜噜噜噜久久久久久91| 国产欧美一区视频| 午夜久久资源| 妖精成人www高清在线观看| 欧美日韩一区高清| 在线欧美不卡| 日韩午夜高潮| 国产精品久久久久影院亚瑟| 久久久国产成人精品| 亚洲欧美日韩精品久久奇米色影视| 老司机精品久久| 久久先锋资源| 欧美日韩免费精品| 在线视频国产日韩| 久热精品在线视频| 欧美电影在线| 亚洲最新视频在线| 欧美一区二区视频在线| 伊人久久婷婷| 欧美黄色一区二区| 亚洲欧洲精品一区二区三区波多野1战4| 欧美性事在线| 99精品福利视频| 亚洲欧美日本国产有色| 国产精品99久久久久久久vr| 欧美一区二区三区免费观看视频| 在线观看国产精品淫| 久久精品中文字幕一区| 欧美高清自拍一区| 欧美视频免费在线观看| 一区二区三区欧美视频| 在线视频国产日韩| 欧美一区二区三区免费观看视频| 中文国产亚洲喷潮| 欧美日韩一区二区三区在线看| 欧美国产综合视频| 欧美多人爱爱视频网站| 亚洲免费观看视频| 欧美在线视频日韩| 先锋影音久久| 欧美 日韩 国产 一区| 亚洲高清视频的网址| 国产精品黄视频| 这里是久久伊人| 亚洲国产精品成人精品| 最新日韩精品| 国产精品久久久一区二区三区| 一区二区三区高清视频在线观看| 亚洲精品久久久久久一区二区 | 欧美顶级大胆免费视频| 亚洲国产婷婷| 欧美成年人网站| 亚洲福利精品| 亚洲精品国产系列| 国产精品国色综合久久| 亚洲国产欧美日韩另类综合| 国产精品成av人在线视午夜片| 日韩亚洲欧美成人一区| 亚洲国产一区二区三区在线播| 久久国产视频网| 欧美成人免费全部观看天天性色| 国产日韩精品一区观看 | 亚洲国产高潮在线观看| 久久久久国产精品午夜一区| 一区二区三区久久久| 亚洲一级二级在线| 欧美经典一区二区三区| 性视频1819p久久| 亚洲日本va午夜在线影院| 亚洲日本久久| 欧美伊人久久| 欧美激情成人在线| 国产精品毛片a∨一区二区三区|国 | 91久久久久久| 欧美一区午夜精品| 国内精品视频一区| 红杏aⅴ成人免费视频| 欧美1区视频| 亚洲在线视频一区| 另类成人小视频在线| 亚洲激情成人在线| 国产精品久久久久免费a∨大胸| 久久久精品999| 日韩一区二区高清| 欧美激情二区三区| 久久视频一区| 亚洲免费在线精品一区|