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

淺析Hadoop文件格式

系統(tǒng) Linux Hadoop
Hadoop 作為MR 的開源實現(xiàn),一直以動態(tài)運行解析文件格式并獲得比MPP數(shù)據(jù)庫快上幾倍的裝載速度為優(yōu)勢。不過,MPP數(shù)據(jù)庫社區(qū)也一直批評Hadoop由于文件格式并非為特定目的而建,因此序列化和反序列化的成本過高[7]。本文介紹Hadoop目前已有的幾種文件格式,分析其特點、開銷及使用場景。希望加深讀者對Hadoop文件格式及其影響性能的因素的理解。

 Hadoop 作為MR 的開源實現(xiàn),一直以動態(tài)運行解析文件格式并獲得比MPP數(shù)據(jù)庫快上幾倍的裝載速度為優(yōu)勢。不過,MPP數(shù)據(jù)庫社區(qū)也一直批評Hadoop由于文件格式并非為特定目的而建,因此序列化和反序列化的成本過高[7]。本文介紹Hadoop目前已有的幾種文件格式,分析其特點、開銷及使用場景。希望加深讀者對Hadoop文件格式及其影響性能的因素的理解。

 

 

 

 

 

Hadoop 中的文件格式

1 SequenceFile

SequenceFile是Hadoop API 提供的一種二進(jìn)制文件,它將數(shù)據(jù)以<key,value>的形式序列化到文件中。這種二進(jìn)制文件內(nèi)部使用Hadoop 的標(biāo)準(zhǔn)的Writable 接口實現(xiàn)序列化和反序列化。它與Hadoop API中的MapFile 是互相兼容的。Hive 中的SequenceFile 繼承自Hadoop API 的SequenceFile,不過它的key為空,使用value 存放實際的值, 這樣是為了避免MR 在運行map 階段的排序過程。如果你用Java API 編寫SequenceFile,并讓Hive 讀取的話,請確保使用value字段存放數(shù)據(jù),否則你需要自定義讀取這種SequenceFile 的InputFormat class 和OutputFormat class。

圖1:Sequencefile 文件結(jié)構(gòu)

2 RCFile

RCFile是Hive推出的一種專門面向列的數(shù)據(jù)格式。 它遵循“先按列劃分,再垂直劃分”的設(shè)計理念。當(dāng)查詢過程中,針對它并不關(guān)心的列時,它會在IO上跳過這些列。需要說明的是,RCFile在map階段從遠(yuǎn)端拷貝仍然是拷貝整個數(shù)據(jù)塊,并且拷貝到本地目錄后RCFile并不是真正直接跳過不需要的列,并跳到需要讀取的列, 而是通過掃描每一個row group的頭部定義來實現(xiàn)的,但是在整個HDFS Block 級別的頭部并沒有定義每個列從哪個row group起始到哪個row group結(jié)束。所以在讀取所有列的情況下,RCFile的性能反而沒有SequenceFile高。

圖2:RCFile 文件結(jié)構(gòu)

3 Avro

Avro是一種用于支持?jǐn)?shù)據(jù)密集型的二進(jìn)制文件格式。它的文件格式更為緊湊,若要讀取大量數(shù)據(jù)時,Avro能夠提供更好的序列化和反序列化性能。并且Avro數(shù)據(jù)文件天生是帶Schema定義的,所以它不需要開發(fā)者在API 級別實現(xiàn)自己的Writable對象。最近多個Hadoop 子項目都支持Avro 數(shù)據(jù)格式,如Pig 、Hive、Flume、Sqoop和Hcatalog。

圖3:Avro MR 文件格式

4. 文本格式

除上面提到的3種二進(jìn)制格式之外,文本格式的數(shù)據(jù)也是Hadoop中經(jīng)常碰到的。如TextFile 、XML和JSON。 文本格式除了會占用更多磁盤資源外,對它的解析開銷一般會比二進(jìn)制格式高幾十倍以上,尤其是XML 和JSON,它們的解析開銷比Textfile 還要大,因此強烈不建議在生產(chǎn)系統(tǒng)中使用這些格式進(jìn)行儲存。 如果需要輸出這些格式,請在客戶端做相應(yīng)的轉(zhuǎn)換操作。 文本格式經(jīng)常會用于日志收集,數(shù)據(jù)庫導(dǎo)入,Hive默認(rèn)配置也是使用文本格式,而且常常容易忘了壓縮,所以請確保使用了正確的格式。另外文本格式的一個缺點是它不具備類型和模式,比如銷售金額、利潤這類數(shù)值數(shù)據(jù)或者日期時間類型的數(shù)據(jù),如果使用文本格式保存,由于它們本身的字符串類型的長短不一,或者含有負(fù)數(shù),導(dǎo)致MR沒有辦法排序,所以往往需要將它們預(yù)處理成含有模式的二進(jìn)制格式,這又導(dǎo)致了不必要的預(yù)處理步驟的開銷和儲存資源的浪費。

5. 外部格式

Hadoop實際上支持任意文件格式,只要能夠?qū)崿F(xiàn)對應(yīng)的RecordWriter和RecordReader即可。其中數(shù)據(jù)庫格式也是會經(jīng)常儲存在Hadoop中,比如Hbase,Mysql,Cassandra,MongoDB。 這些格式一般是為了避免大量的數(shù)據(jù)移動和快速裝載的需求而用的。他們的序列化和反序列化都是由這些數(shù)據(jù)庫格式的客戶端完成,并且文件的儲存位置和數(shù)據(jù)布局(Data Layout)不由Hadoop控制,他們的文件切分也不是按HDFS的塊大小(blocksize)進(jìn)行切割。

文件存儲大小比較與分析

我們選取一個TPC-H標(biāo)準(zhǔn)測試來說明不同的文件格式在存儲上的開銷。因為此數(shù)據(jù)是公開的,所以讀者如果對此結(jié)果感興趣,也可以對照后面的實驗自行做一遍。Orders 表文本格式的原始大小為1.62G。 我們將其裝載進(jìn)Hadoop 并使用Hive 將其轉(zhuǎn)化成以上幾種格式,在同一種LZO 壓縮模式下測試形成的文件的大小。

 

Orders_text1

1732690045

1.61G

非壓縮

TextFile

Orders_tex2

772681211

736M

LZO壓縮

TextFile

Orders_seq1

1935513587

1.80G

非壓縮

SequenceFile

Orders_seq2

822048201

783M

LZO壓縮

SequenceFile

Orders_rcfile1

1648746355

1.53G

非壓縮

RCFile

Orders_rcfile2

686927221

655M

LZO壓縮

RCFile

Orders_avro_table1

1568359334

1.46G

非壓縮

Avro

Orders_avro_table2

652962989

622M

LZO壓縮

Avro

 

表1:不同格式文件大小對比

從上述實驗結(jié)果可以看到,SequenceFile無論在壓縮和非壓縮的情況下都比原始純文本TextFile大,其中非壓縮模式下大11%, 壓縮模式下大6.4%。這跟SequenceFile的文件格式的定義有關(guān): SequenceFile在文件頭中定義了其元數(shù)據(jù),元數(shù)據(jù)的大小會根據(jù)壓縮模式的不同略有不同。一般情況下,壓縮都是選取block 級別進(jìn)行的,每一個block都包含key的長度和value的長度,另外每4K字節(jié)會有一個sync-marker的標(biāo)記。對于TextFile文件格式來說不同列之間只需要用一個行間隔符來切分,所以TextFile文件格式比SequenceFile文件格式要小。但是TextFile 文件格式不定義列的長度,所以它必須逐個字符判斷每個字符是不是分隔符和行結(jié)束符。因此TextFile 的反序列化開銷會比其他二進(jìn)制的文件格式高幾十倍以上。

RCFile文件格式同樣也會保存每個列的每個字段的長度。但是它是連續(xù)儲存在頭部元數(shù)據(jù)塊中,它儲存實際數(shù)據(jù)值也是連續(xù)的。另外RCFile 會每隔一定塊大小重寫一次頭部的元數(shù)據(jù)塊(稱為row group,由hive.io.rcfile.record.buffer.size控制,其默認(rèn)大小為4M),這種做法對于新出現(xiàn)的列是必須的,但是如果是重復(fù)的列則不需要。RCFile 本來應(yīng)該會比SequenceFile 文件大,但是RCFile 在定義頭部時對于字段長度使用了Run Length Encoding進(jìn)行壓縮,所以RCFile 比SequenceFile又小一些。Run length Encoding針對固定長度的數(shù)據(jù)格式有非常高的壓縮效率,比如Integer、Double和Long等占固定長度的數(shù)據(jù)類型。在此提一個特例——Hive 0.8引入的TimeStamp 時間類型,如果其格式不包括毫秒,可表示為”YYYY-MM-DD HH:MM:SS”,那么就是固定長度占8個字節(jié)。如果帶毫秒,則表示為”YYYY-MM-DD HH:MM:SS.fffffffff”,后面毫秒的部分則是可變的。

Avro文件格式也按group進(jìn)行劃分。但是它會在頭部定義整個數(shù)據(jù)的模式(Schema), 而不像RCFile那樣每隔一個row group就定義列的類型,并且重復(fù)多次。另外,Avro在使用部分類型的時候會使用更小的數(shù)據(jù)類型,比如Short或者Byte類型,所以Avro的數(shù)據(jù)塊比RCFile 的文件格式塊更小。

序列化與反序列化開銷分析

我們可以使用Java的profile工具來查看Hadoop 運行時任務(wù)的CPU和內(nèi)存開銷。以下是在Hive 命令行中的設(shè)置:

hive>set mapred.task.profile=true;
hive>set mapred.task.profile.params =-agentlib:hprof=cpu=samples,heap=sites, depth=6,force=n,thread=y,verbose=n,file=%s

當(dāng)map task 運行結(jié)束后,它產(chǎn)生的日志會寫在$logs/userlogs/job- 文件夾下。當(dāng)然,你也可以直接在JobTracker的Web界面的logs或jobtracker.jsp 頁面找到日志。

我們運行一個簡單的SQL語句來觀察RCFile 格式在序列化和反序列化上的開銷:

hive> select O_CUSTKEY,O_ORDERSTATUS from orders_rc2 where O_ORDERSTATUS='P';

其中的O_CUSTKEY列為integer類型,O_ORDERSTATUS為String類型。在日志輸出的最后會包含內(nèi)存和CPU 的消耗。

下表是一次CPU 的開銷:

 

rank

self

accum

count

trace

method

20          

0.48%

79.64%

65

315554

org.apache.hadoop.hive.ql.io.RCFile$Reader.getCurrentRow

28

0.24%

82.07%

32

315292

org.apache.hadoop.hive.serde2.columnar.ColumnarStruct.init

55

0.10%

85.98%

14

315788

org.apache.hadoop.hive.ql.io.RCFileRecordReader.getPos

56

0.10%

86.08%

14

315797

org.apache.hadoop.hive.ql.io.RCFileRecordReader.next

 

表2:一次CPU的開銷

其中第五列可以對照上面的Track信息查看到底調(diào)用了哪些函數(shù)。比如CPU消耗排名20的函數(shù)對應(yīng)Track:

TRACE 315554: (thread=200001)
    org.apache.hadoop.hive.ql.io.RCFile$Reader.getCurrentRow(RCFile.java:1434)
    org.apache.hadoop.hive.ql.io.RCFileRecordReader.next(RCFileRecordReader.java:88)
    org.apache.hadoop.hive.ql.io.RCFileRecordReader.next(RCFileRecordReader.java:39)
org.apache.hadoop.hive.ql.io.CombineHiveRecordReader.doNext(CombineHiveRecordReader.java:98)
org.apache.hadoop.hive.ql.io.CombineHiveRecordReader.doNext(CombineHiveRecordReader.java:42)    
org.apache.hadoop.hive.ql.io.HiveContextAwareRecordReader.next(HiveContextAwareRecordReader.java:67)

其中,比較明顯的是RCFile,它為了構(gòu)造行而消耗了不必要的數(shù)組移動開銷。其主要是因為RCFile 為了還原行,需要構(gòu)造RowContainer,順序讀取一行構(gòu)造RowContainer,然后給其中對應(yīng)的列進(jìn)行賦值,因為RCFile早期為了兼容SequenceFile所以可以合并兩個block,又由于RCFile不知道列在哪個row group結(jié)束,所以必須維持?jǐn)?shù)組的當(dāng)前位置,類似如下格式定義:

   Array<RowContainer extends List<Object>>

而此數(shù)據(jù)格式可以改為面向列的序列化和反序列化方式。如:

Map<array<col1Type>,array<col2Type>,array<col3Type>....>

這種方式的反序列化會避免不必要的數(shù)組移動,當(dāng)然前提是我們必須知道列在哪個row group開始到哪個row group結(jié)束。這種方式會提高整體反序列化過程的效率。

關(guān)于Hadoop文件格式的思考

1 高效壓縮

Hadoop目前尚未出現(xiàn)針對數(shù)據(jù)特性的高效編碼(Encoding)和解碼(Decoding)數(shù)據(jù)格式。尤其是支持Run Length Encoding、Bitmap 這些極為高效算法的數(shù)據(jù)格式。HIVE-2065 討論過使用更加高效的壓縮形式,但是對于如何選取列的順序沒有結(jié)論。關(guān)于列順序選擇可以看Daniel Lemire的一篇論文 《Reordering Columns for Smaller Indexes》[1]。作者同時也是Hive 0.8中引入的bitmap 壓縮算法基礎(chǔ)庫的作者。該論文的結(jié)論是:當(dāng)某個表需要選取多個列進(jìn)行壓縮時,需要根據(jù)列的選擇性(selectivity)進(jìn)行升序排列,即唯一值越少的列排得越靠前。 事實上這個結(jié)論也是Vertica多年來使用的數(shù)據(jù)格式。其他跟壓縮有關(guān)的還有HIVE-2604和HIVE-2600。

2 基于列和塊的序列化和反序列化

不論排序后的結(jié)果是不是真的需要,目前Hadoop的整體框架都需要不斷根據(jù)數(shù)據(jù)key進(jìn)行排序。除了上面提到的基于列的排序,序列化和反序列化之外,Hadoop的文件格式應(yīng)該支持某種基于塊(Block) 級別的排序和序列化及反序列化方式,只有當(dāng)數(shù)據(jù)滿足需要時才進(jìn)行這些操作。來自Google Tenzing論文中曾將它作為MR 的優(yōu)化手段提到過。

“Block Shuffle:正常來說,MR 在Shuffle 的時候使用基于行的編碼和解碼。為了逐個處理每一行,數(shù)據(jù)必須先排序。然而,當(dāng)排序不是必要的時候這種方式并不高效,我們在基于行的shuffle基礎(chǔ)上實現(xiàn)了一種基于block的shuffle方式,每一次處理大概1M的壓縮block,通過把整個block當(dāng)成一行,我們能夠避免MR框架上的基于行的序列化和反序列化消耗,這種方式比基于行的shuffle 快上3倍以上。”

3 數(shù)據(jù)過濾(Skip List)

除常見的分區(qū)和索引之外,使用排序之后的塊(Block)間隔也是常見列數(shù)據(jù)庫中使用的過濾數(shù)據(jù)的方法。Google Tenzing同樣描述了一種叫做ColumnIO 的數(shù)據(jù)格式,ColumnIO在頭部定義該Block的最大值和最小值,在進(jìn)行數(shù)據(jù)判斷的時候,如果當(dāng)前Block的頭部信息里面描述的范圍中不包含當(dāng)前需要處理的內(nèi)容,則會直接跳過該塊。Hive社區(qū)里曾討論過如何跳過不需要的塊 ,可是因為沒有排序所以一直沒有較好的實現(xiàn)方式。包括RCFile格式,Hive的index 機制里面目前還沒有一個高效的根據(jù)頭部元數(shù)據(jù)就可以跳過塊的實現(xiàn)方式。

4 延遲物化

真正好的列數(shù)據(jù)庫,都應(yīng)該可以支持直接在壓縮數(shù)據(jù)之上不需要通過解壓和排序就能夠直接操作塊。通過這種方式可以極大的降低MR 框架或者行式數(shù)據(jù)庫中先解壓,再反序列化,然后再排序所帶來的開銷。Google Tenzing里面描述的Block Shuffle 也屬于延遲物化的一種。更好的延遲物化可以直接在壓縮數(shù)據(jù)上進(jìn)行操作,并且可以做內(nèi)部循環(huán), 此方面在論文《Integrating Compression and Execution in Column-Oriented Database System》[5]的5.2 章節(jié)有描述。 不過考慮到它跟UDF 集成也有關(guān)系,所以,它會不會將文件接口變得過于復(fù)雜也是一件有爭議的事情。

5 與Hadoop框架集成

無論文本亦或是二進(jìn)制格式,都只是最終的儲存格式。Hadoop運行時產(chǎn)生的中間數(shù)據(jù)卻沒有辦法控制。包括一個MR Job在map和reduce之間產(chǎn)生的數(shù)據(jù)或者DAG Job上游reduce 和下游map之間的數(shù)據(jù),尤其是中間格式并不是列格式,這會產(chǎn)生不必要的IO和CPU 開銷。比如map 階段產(chǎn)生的spill,reduce 階段需要先copy 再sort-merge。如果這種中間格式也是面向列的,然后將一個大塊切成若干小塊,并在頭部加上每個小塊的最大最小值索引,就可以避免大量sort-mege操作中解壓—反序列化—排序—合并(Merge)的開銷,從而縮短任務(wù)的運行時間。

其他文件格式

Hadoop社區(qū)也曾有對其他文件格式的研究。比如,IBM 研究過面向列的數(shù)據(jù)格式并發(fā)表論文《Column-Oriented Storage Techniques for MapReduce》[4],其中特別提到IBM 的CIF(Column InputFormat)文件格式在序列化和反序列化的IO消耗上比RCFile 的消耗要小20倍。里面提到的將列分散在不同的HDFS Block 塊上的實現(xiàn)方式RCFile 也有考慮過,但是最后因為重組行的消耗可能會因分散在遠(yuǎn)程機器上產(chǎn)生的延遲而最終放棄了這種實現(xiàn)。此外,最近Avro也在實現(xiàn)一種面向列的數(shù)據(jù)格式,不過目前Hive 與Avro 集成尚未全部完成。有興趣的讀者可以關(guān)注avro-806 和hive-895。

總結(jié)

Hadoop 可以與各種系統(tǒng)兼容的前提是Hadoop MR 框架本身能夠支持多種數(shù)據(jù)格式的讀寫。但如果要提升其性能,Hadoop 需要一種高效的面向列的基于整個MR 框架集成的數(shù)據(jù)格式。尤其是高效壓縮,塊重組(block shuffle),數(shù)據(jù)過濾(skip list)等高級功能,它們是列數(shù)據(jù)庫相比MR 框架在文件格式上有優(yōu)勢的地方。相信隨著社區(qū)的發(fā)展以及Hadoop 的逐步成熟,未來會有更高效且統(tǒng)一的數(shù)據(jù)格式出現(xiàn)。

【編輯推薦】

  1. Chkdsk大躍進(jìn):Win8磁盤檢測時間大大縮短
  2. Linux下使用mke2fsk格式化分區(qū)的方法
  3. Ubuntu 11.10 利用終端環(huán)境備份還原
責(zé)任編輯:趙寧寧 來源: www.gemini5201314.net
相關(guān)推薦

2012-05-29 09:06:32

Hadoop文件格式

2009-07-20 09:44:31

DB2外部文件格式

2009-08-05 10:57:17

ASP.NET配置文件配置文件格式

2016-12-01 14:47:20

2023-11-02 09:54:21

ODT文件

2021-09-29 15:52:26

計算機配置文件語言

2020-04-26 10:49:37

大數(shù)據(jù)Hadoop文件格式

2010-08-03 15:40:30

NFS文件格式

2017-08-25 17:41:17

Paradox數(shù)據(jù)文件格式

2017-06-16 09:58:34

Hive格式壓縮算法

2010-08-02 11:38:43

DB2外部文件格式

2024-03-17 19:14:28

2019-11-18 09:00:10

大數(shù)據(jù)數(shù)據(jù)格式文件格式

2009-06-02 14:12:26

Hibernate配置文件格式

2017-06-15 10:21:30

Apache Hado存儲引擎性能

2011-09-13 18:09:15

Eclipse And

2009-06-20 09:21:37

UNIXLINUX

2022-07-02 15:06:06

Pandoc文件Markdown

2010-08-02 14:19:28

DB2數(shù)據(jù)庫

2024-01-24 08:53:55

Figma設(shè)計文件fig 文件
點贊
收藏

51CTO技術(shù)棧公眾號

久久国产精品免费观看| 国产二区国产一区在线观看| 精品日韩一区二区三区免费视频| 日本老太婆做爰视频| 精品人妻一区二区三区三区四区| 欧美一区视频| 亚洲天天在线日亚洲洲精| 三级性生活视频| 不卡av免费观看| 99久久婷婷国产精品综合| 国产精品久久久久久久久久久久久久| xxxx日本少妇| 三级小说欧洲区亚洲区| 在线不卡的av| 国内精品在线观看视频| 在线免费观看黄色| 国产精品一区二区x88av| 欧美日韩xxx| 精品人妻无码一区二区三区换脸| 视频精品二区| 日韩欧洲国产| 五月开心六月丁香综合色啪 | av男人的天堂在线观看| 懂色中文一区二区在线播放| 日本精品视频网站| 国产黄色录像片| 亚洲专区视频| 日韩无一区二区| 国产嫩草在线观看| 亚洲欧美电影| 午夜精品在线看| 亚洲成人蜜桃| 国产私拍精品| 26uuu久久综合| 国产精品毛片一区视频| 亚洲一卡二卡在线观看| 日韩精品一级二级 | 96sao精品免费视频观看| 亚洲成人在线免费| 六月婷婷激情综合| 菠萝菠萝蜜在线观看| 国产精品嫩草99a| 日韩免费av电影| 男人的天堂在线视频| 成人在线视频一区二区| 91九色露脸| 精品人妻少妇嫩草av无码专区 | 国产精品19p| 亚洲三级欧美| 色女孩综合影院| www一区二区www免费| 久久www人成免费看片中文| 亚洲精品国产成人久久av盗摄| 涩涩涩999| 人成免费电影一二三区在线观看| 精品一区二区三区蜜桃| 国产精品嫩草影院一区二区| 国产91国语对白在线| 国产精品日韩| 欧洲亚洲女同hd| 99久热在线精品996热是什么| 亚洲精品裸体| 热久久这里只有| 一级片免费在线播放| 久久成人一区| 国产精品久久久久秋霞鲁丝 | caopo在线| 亚洲精品va在线观看| 国产欧美精品aaaaaa片| 在线视频cao| 黄色一区二区三区| 国产精品亚洲二区在线观看| 秋霞国产精品| 91精品国产综合久久久久久漫画 | 国产精品短视频| 无码毛片aaa在线| 青草影视电视剧免费播放在线观看| 亚洲精品视频观看| www在线观看免费| 欧洲一级精品| 欧美一区二区在线播放| 人妻av一区二区三区| 亚洲精品亚洲人成在线观看| 中文字幕欧美国内| 久草免费在线观看视频| 午夜日韩av| 国产91在线播放| 99免费在线视频| 91丝袜呻吟高潮美腿白嫩在线观看| 日韩欧美第二区在线观看| caoporn免费在线| 日韩欧美一区二区三区| 手机av在线网| 三级精品视频| 久久伊人精品天天| 国产成人无码av| 国模无码大尺度一区二区三区| 国产精品久久久久久久久久久久冷| 免费黄网站在线观看| 日韩一区在线播放| 92看片淫黄大片一级| 亚洲免费资源| 亚洲欧美在线一区| 精品无码免费视频| 欧美a级一区二区| 国产不卡一区二区在线观看 | 国产一区二区三区在线看| 手机在线免费看毛片| 亚洲在线视频| 国产精品久久91| 黑人操亚洲女人| 综合激情成人伊人| 真人抽搐一进一出视频| 97久久精品一区二区三区的观看方式| 亚洲毛片一区二区| 精品视频久久久久| 久久99热狠狠色一区二区| 久久综合毛片| 先锋影音在线资源站91| 欧美日韩一区二区三区四区| 最新在线黄色网址| 中文字幕一区二区精品区| 高清欧美性猛交xxxx黑人猛交| 97精品人妻一区二区三区| 久久久99久久精品欧美| 天天夜碰日日摸日日澡性色av| 青青在线精品| 亚洲人成网在线播放| 国产精品7777777| 国产成人精品亚洲777人妖| 夜夜春亚洲嫩草影视日日摸夜夜添夜 | 999久久久国产999久久久| 亚洲欧美成人网| 日韩欧美大片在线观看| 国产福利视频一区二区三区| 国产又粗又硬又长| 日韩三级成人| 日韩中文在线中文网在线观看| 9i看片成人免费看片| 99re66热这里只有精品3直播| 蜜桃视频一区二区在线观看| 亚洲福利影院| 亚洲欧美日韩国产中文| 中文字幕69页| 国产三级精品三级在线专区| 国产综合av在线| 青青草原在线亚洲| 欧美亚洲另类激情另类| 亚州视频一区二区三区| 亚洲码国产岛国毛片在线| 日韩av影视大全| 欧美a级片一区| 99re视频在线播放| 天堂av最新在线| 亚洲精品一区二区三区99| 国产精品1000| 91老司机福利 在线| 日日碰狠狠躁久久躁婷婷| 奇米777国产一区国产二区| 国语自产在线不卡| 国产ts变态重口人妖hd| 一二三四社区欧美黄| 两女双腿交缠激烈磨豆腐| 欧美日韩日本国产亚洲在线| 91日韩久久| 亚洲七七久久综合桃花剧情介绍| 精品国产一区二区国模嫣然| 日本黄色片免费观看| 麻豆精品精品国产自在97香蕉| 欧美极品一区二区| 欧美日韩免费电影| 欧美成人网在线| 天天躁日日躁狠狠躁伊人| 色综合久久99| 波多野结衣欲乱| 国产激情91久久精品导航 | 日韩欧美视频在线 | 色哟哟精品一区| a天堂中文字幕| 蜜桃视频免费观看一区| 亚洲日本无吗高清不卡| 免费一级欧美在线大片| 97视频在线观看播放| 亚洲人成色777777老人头| 91久久国产综合久久| 神马久久精品综合| 97久久精品人人做人人爽| 蜜臀av无码一区二区三区| 国产精品免费精品自在线观看| 性欧美xxxx交| 日本在线免费| 亚洲第一网站免费视频| 97人妻精品视频一区| 亚洲一区二区精品视频| youjizz亚洲女人| 国产成人在线电影| 美女黄色片视频| 亚洲高清电影| 正在播放91九色| 亚洲第一福利专区| 91在线短视频| 玖玖精品在线| 欧美亚洲激情视频| 免费网站在线观看人| 尤物九九久久国产精品的特点| 亚洲精品网站在线| 欧美久久久影院| 婷婷激情五月网| 日韩毛片精品高清免费| 国产又粗又长又爽| 国产精品一区在线观看你懂的| 国产玉足脚交久久欧美| 久久精品国产www456c0m| 久久一区二区精品| 韩国三级大全久久网站| 97超视频免费观看| 99久久精品免费观看国产| 国产视频精品一区二区三区| 精品人妻无码一区二区三区蜜桃一| 欧美色精品天天在线观看视频| 久久久久久久国产精品毛片| 欧美国产激情一区二区三区蜜月| 亚洲欧美日韩色| 国产成人免费视频网站| 亚洲一区二区中文字幕在线观看| 99精品热6080yy久久| 国产三级中文字幕| 五月天激情综合网| 亚洲国产日韩欧美| 国产91一区| 欧美精品一区三区在线观看| 欧美freesex8一10精品| 国产精品一区免费观看| 亚洲三区欧美一区国产二区| 亚洲精品免费一区二区三区| 久久av影院| 国产精品久久久久久久久久尿 | 国产精品高潮呻吟视频| 午夜av不卡| 午夜精品久久久久久久99热浪潮| 在线日本视频| 久久久91精品| seseavlu视频在线| 国产亚洲欧洲在线| 国产在线观看网站| 亚洲精品久久久久国产| 天天射,天天干| 国产丝袜高跟一区| 国产香蕉视频在线看| 国产午夜精品一区二区三区| 完全免费av在线播放| 欧美国产在线视频| 丁香花在线高清完整版视频| 欧美精品videosex牲欧美| 丝袜在线观看| 性欧美亚洲xxxx乳在线观看| 日韩伦理在线一区| 国产精品96久久久久久又黄又硬| 日韩av大片站长工具| 国产精品无码专区在线观看| 日韩一区二区三区免费视频| 国产欧美日韩视频| 日韩精品一区二区三区中文在线| eeuss一区二区三区| 伊人久久一区| 高清国产在线一区| 欧洲亚洲一区二区三区| 亚洲春色在线| 色琪琪久久se色| 国产成人亚洲综合无码| 黄色成人在线网站| 欧美老熟妇喷水| 香蕉国产精品偷在线观看不卡| 免费国产成人av| 国产美女精品人人做人人爽| 91香蕉国产线在线观看| 国产一本一道久久香蕉| 午夜诱惑痒痒网| 99精品一区二区三区| 国产欧美一区二区三区在线观看视频| 日韩美女视频一区二区| 国产欧美日韩另类| 欧美日韩精品免费观看视频| 好吊视频一区二区三区| 国产亚洲欧洲高清| sm在线观看| 国产精品久久综合av爱欲tv| 免费观看性欧美大片无片| 久久国产精品久久精品国产| 久久久综合色| 91九色在线观看视频| 久久国产三级精品| 又黄又爽的网站| 中文字幕一区二区三区蜜月| 日韩精品手机在线| 91精品国产麻豆| 亚洲人视频在线观看| 欧美成人精品在线视频| 日本综合视频| 国产伦一区二区三区色一情| 国产精品7m凸凹视频分类| 妞干网在线视频观看| 国产在线视频不卡二| 91精品人妻一区二区| 一区二区三区日韩精品| 91video| 欧美成人乱码一区二区三区| 四虎影院在线播放| 九九热精品视频国产| 国产精品毛片久久久久久久久久99999999 | 精品网站999www| 亚洲www色| 国产视频999| 中文字幕亚洲影视| 97超碰在线人人| 国产精品66部| 在线观看黄网址| 日韩欧美aⅴ综合网站发布| a网站在线观看| 最近更新的2019中文字幕| 另类专区亚洲| 久久国产精品久久| 夜夜嗨av一区二区三区网站四季av| 污污网站在线观看视频| 中文字幕不卡在线观看| 在线观看亚洲欧美| 亚洲精品福利免费在线观看| 日本无删减在线| 91精品国产一区二区三区动漫| 91蜜臀精品国产自偷在线| 一本久道综合色婷婷五月| 久久看人人爽人人| 日本一区二区三区精品| 日韩午夜av电影| 日本在线免费网| 91色视频在线观看| 亚洲欧洲美洲一区二区三区| 99re6在线观看| 亚洲欧洲性图库| 国产乱码精品一区二区三区精东| 中文字幕亚洲综合| 色8久久久久| 天天成人综合网| 国产一区二区精品久久99| 看免费黄色录像| 日韩精品一区二区三区中文不卡 | 国产精品一区二区久久久| 成人精品影视| 中文字幕一区二区三区四区在线视频| 国产亚洲综合色| 亚洲精品无码久久久久| 中文字幕成人在线| 2020国产精品小视频| 日韩视频在线观看视频| 国产精品2024| 日本午夜精品理论片a级app发布| 精品成人一区二区三区| 国产在线88av| 欧美成熟毛茸茸复古| 欧美亚洲一区| 九九热免费在线| 欧美日韩国产高清一区| 青青草超碰在线| 国产精品第3页| 99视频精品视频高清免费| 国产精品嫩草69影院| 欧美日韩另类字幕中文| 久久电影视频| 国产精品久久久久久影视 | 久久www视频| 成人天堂资源www在线| 久久99国产综合精品免费| 亚洲社区在线观看| 国产视频一区二区在线播放| 国产日韩av网站| 久久精品人人做| 91肉色超薄丝袜脚交一区二区| 欧美成人一二三| 五月天亚洲色图| 精品中文字幕av| 最新国产成人在线观看| 色婷婷激情五月| 国产精品入口尤物| 欧美不卡一区| 精品无码一区二区三区| 制服丝袜亚洲色图| 午夜久久中文| 男人天堂网站在线| 久久久久久久综合狠狠综合| 亚洲一区二区人妻| 久久久人成影片一区二区三区| 欧美一站二站| 国产艳妇疯狂做爰视频 | 北条麻妃一区二区三区| 中文字幕第15页| 色综合亚洲精品激情狠狠| 久久超级碰碰| 五月天婷婷亚洲| 高潮白浆女日韩av免费看| 国产在线观看黄|