• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    消除規(guī)范關(guān)系連接冗余的二次排序算法研究

    2018-01-02 08:40:02劉黎志
    武漢工程大學(xué)學(xué)報 2017年5期
    關(guān)鍵詞:分區(qū)排序分組

    劉黎志 ,張 威

    1.智能機器人湖北省重點實驗室(武漢工程大學(xué)),湖北 武漢 430205;

    2.武漢工程大學(xué)計算機科學(xué)與工程學(xué)院,湖北 武漢 430205

    消除規(guī)范關(guān)系連接冗余的二次排序算法研究

    劉黎志1,2,張 威1,2

    1.智能機器人湖北省重點實驗室(武漢工程大學(xué)),湖北 武漢 430205;

    2.武漢工程大學(xué)計算機科學(xué)與工程學(xué)院,湖北 武漢 430205

    使用MapReduce框架對規(guī)范的一對多關(guān)系實體進(jìn)行連接操作時,一方實體的各個屬性會在連接的結(jié)果中產(chǎn)生大量冗余.通過對二次排序算法進(jìn)行優(yōu)化,重新定義Map階段的分區(qū)過程、Shuffle階段的排序及分組過程,使得Map階段的輸出為包含一方實體屬性值和多方實體排序值的組合鍵及包含多方實體屬性值的集合.Reduce階段將組合鍵進(jìn)行分解,提取一方實體的主碼作為HBase表的行健,并將組合鍵中一方實體的各個屬性值及多方實體屬性值集合分別寫入HBase表中對應(yīng)的列,從而既實現(xiàn)了連接的語義,又消除了冗余.實驗證明,優(yōu)化后的算法可以消除一方實體屬性值在連接結(jié)果中的冗余,提高了對連接結(jié)果的查詢效率.

    MapReduce;連接冗余;二次排序;HBase

    MapReduce在對規(guī)范的一對多關(guān)系進(jìn)行連接操作時,一方關(guān)系的各個屬性值會在連接的結(jié)果中產(chǎn)生大量的冗余,為消除冗余,可利用HBase表的稀疏存儲特性,將一方關(guān)系的各個屬性值只存儲一次,同時將其對應(yīng)的多方關(guān)系進(jìn)行按列多次存儲.實現(xiàn)的過程可借鑒二次排序算法的思想,讓一方和多方關(guān)系在Map端進(jìn)行連接后,輸出的Key既包含一方關(guān)系的屬性,又包含多方關(guān)系中可排序的值,從而使得Reduce端在規(guī)約時可將Key包含的一方關(guān)系的屬性值及多方關(guān)系的經(jīng)過二次排序后的屬性值直接寫入HBase表.

    MapReduce是Google在2004年提出一個用于處理大數(shù)據(jù)的分布式計算框架,其數(shù)據(jù)處理的流程分為Map、Shuffle及Reduce三個階段.在Map階段,原始數(shù)據(jù)源根據(jù)其數(shù)據(jù)特征被劃分成若干數(shù)據(jù)塊,每個數(shù)據(jù)塊由集群中的節(jié)點進(jìn)行Map邏輯處理,結(jié)果以Key/Value(鍵/值對)的形式輸出.Shuffle階段負(fù)責(zé)對Key/Value對進(jìn)行排序及分組,Map階段的排序發(fā)生在將節(jié)點內(nèi)存緩沖區(qū)的key/Value寫入到本地磁盤spill文件,及將多個本地磁盤spill文件合并為一個spill文件時,排序的過程為:首先根據(jù)key所屬的Partition(分區(qū))排序,每個Partition再按Key進(jìn)行排序.Map階段完成后,每個的Partition會被拷貝到對應(yīng)的Reduce節(jié)點,由于Reduce節(jié)點會接受來自多個Map節(jié)點的數(shù)據(jù),故Shuffle在Reduce階段的任務(wù)就是將來自不同Map節(jié)點的Partition按Key值進(jìn)行歸并排序后,將Key/Value根據(jù)Key值分組為[Key,List(Value1,Value2…Valuen)]作為Reduce任務(wù)的輸入.Reduce階段負(fù)責(zé)對[Key,List< Value1,Value2…Valuen]按特定邏輯進(jìn)行規(guī)約處理,并將結(jié)果輸出[1-2].

    Hadoop MapReduce是Google MapReduce框架的開源實現(xiàn)[3],通過對 Hadoop MapReduce進(jìn)行擴展,可以將HBase與MapReduce進(jìn)行集成,從而使得HBase數(shù)據(jù)表和外界數(shù)據(jù)源可以以MapReduce的方式進(jìn)行雙向交互,從而提高數(shù)據(jù)的處理速度和效率.HBase是建立在Hadoop之上,具有高可靠性、高性能、列存儲、可伸縮、實時讀寫特點的數(shù)據(jù)庫系統(tǒng),能夠為海量的數(shù)據(jù)提供高性能的數(shù)據(jù)維護及查詢服務(wù)[4-8].可以利用MapReduce將具有相同屬性的文件進(jìn)行連接操作,根據(jù)參與連接的文件大小可選擇使用Reduce端連接、Map端連接、Semi(半)連接及Reduce端+Bloom Filter連接,連接的結(jié)果可以寫入文本文件,也可以直接寫入HBase數(shù)據(jù)表.由于MapReduce的Shuffle過程默認(rèn)按連接結(jié)果的Key進(jìn)行排序,若需要對Value也進(jìn)行排序,則需要重新定義Shuffle的排序和分組過程,進(jìn)行二次排序,從而使得連接的結(jié)果首先按 Key排序,然后再按Value排序[9-15].

    1 改進(jìn)的二次排序算法

    假設(shè)規(guī)范的一方關(guān)系為M(MKEY,MATT1,MATT2,…,MATTn),多 方 關(guān) 系 為 S(SKEY,MKEY ,SATT,SVALUE),其中MKEY為關(guān)系S的外碼,(mkey[m],matt1[m],matt2[m],…,mattn[m]),m∈[1,n]表示關(guān)系M的一個元組,關(guān)系S中的SATT屬性的取值范圍為{satt1,satt2,…,sattn},SValue的取值范圍為{svalue1,svalue2,…,svaluen},且按序號從小到大排序的整型值.則使用MKEY對關(guān)系M和S進(jìn)行連接操作,并根據(jù)SVALUE值進(jìn)行二次排序后的結(jié)果如下所示:

    可見一方關(guān)系M的每個元組的各個屬性會在連接結(jié)果中產(chǎn)生了大量冗余,消除冗余的方法是將連接的結(jié)果進(jìn)行轉(zhuǎn)換,寫入HBase的數(shù)據(jù)表.由于HBase表是按列存儲的,在定義表結(jié)構(gòu)時只需要定義列族(Column Family),對屬于列族的列的數(shù)量沒有限制,以ColumnFamily:Qualifier的形式表示一個列名,Qualifier可以是任意的字節(jié)數(shù)組.因此可以以S:satt[k]列,k∈[1,n],S為多方關(guān)系名,satt[k]為S中的SATT屬性的在連接結(jié)果中的值,來存儲連接結(jié)果中的多方關(guān)系SVALUE屬性的值.對于連接結(jié)果中的一方關(guān)系,提取mkey[m],m∈[1,n]為 HBase表的行健,以 M:MATT[m]列,m∈[1,n],M為一方關(guān)系名,MATT[m]為M中的MATT屬性名,來存儲一方關(guān)系在連接結(jié)果中和 mkey[m]對應(yīng)的(matt1[m],matt2[m],…,mattn[m])屬性值,從而使得一方關(guān)系的連接結(jié)果只存儲了一次,既實現(xiàn)了連接的語義,又消除了冗余.HBase存儲列值時默認(rèn)按列名進(jìn)行排序,故經(jīng)過二次排序后的連接結(jié)果的svalue[t],t∈[1,n]可能不會按照排序后的次序進(jìn)行存儲,可增加M:Seq 列存儲排序后的 svalue[t]值及其與 satt[k],k∈[1,n]的對應(yīng)關(guān)系.經(jīng)過二次排序后的連接結(jié)果在HBase表中的存儲結(jié)構(gòu)如圖1所示.

    實現(xiàn)將一對多的規(guī)范關(guān)系進(jìn)行連接,二次排序后,直接寫入HBase表,其過程如下.

    1.1 自定義組合鍵

    MapReduce的Shuffle階段只能按Key對數(shù)據(jù)進(jìn)行排序,因此若需要在對Key進(jìn)行排序后,再對Value進(jìn)行排序,必須使得Map階段輸出的Key包含多方關(guān)系S中的SVALUE值,為將一方關(guān)系M的各個屬性寫入HBase表,Key還要包含一方關(guān)系M的各個屬性值,自定義的組合鍵如下所示:

    圖1 二次排序連接結(jié)果的存儲結(jié)構(gòu)Fig.1 Storage structure of secondary sort join result

    其中firstKey存儲M關(guān)系中的MKEY及各個MATT屬性值以字符“ ”分隔的字符串,mkey為以“ ”分隔的第一個子字符串,secoondKey存儲S關(guān)系中的SVALUE值.

    1.2 實現(xiàn)Map端連接

    由于一方關(guān)系M的數(shù)據(jù)一般較小,故可將其數(shù)據(jù)文件復(fù)制多份,讓每個map節(jié)點內(nèi)存中保存一份(如存放到HashMap中),然后掃描多方關(guān)系S:對于S中的每一條記錄,在HashMap中查找是否有相同的MKEY的記錄,如果有,則連接后輸出.在MapReduce的任務(wù)啟動時,通過job.addCache-File(“hdfs://namenode:9000/M.txt”)指定要復(fù)制的一方數(shù)據(jù)文件M.txt,JobTracker在作業(yè)啟動之前會獲取這個URI列表,并將相應(yīng)的文件拷貝到各個TaskTracker的本地磁盤上,Map函數(shù)在重載的setup方法中通過context.getCacheFiles()可以獲取到緩存到本地的文件.實現(xiàn)Map端連接的過程如下:

    //定義Map的輸出為< CombinationKey,Text>

    HBaseMapper extends Mapper<LongWritable, Text,CombinationKey,Text>

    {private HashMap<String,String>cache_M=new Hash-Map<String,String>();

    protected void setup(Context context)

    {BufferedReader br=null;URI[]distributePaths=context.getCacheFiles();

    String mInfo=null;File mFile=new File("./M.txt");

    br=new BufferedReader(new FileReader(mFile.getPath()));//讀緩存文件,并放到內(nèi)存中

    while(null!=(mInfo=br.readLine())){

    String[]mParts=mInfo.split(" ");cache_M.put(mParts[0],mInfo)}//mPart[0]為MKEY值

    }

    protected void map(LongWritable key,Text value,Context context)

    {string mkey=得到S關(guān)系每一行數(shù)據(jù)的MKEY值;

    string sattr=得到S關(guān)系每一行數(shù)據(jù)的SATT值;

    IntWritable svalue=得到S關(guān)系每一行數(shù)據(jù)的SVALUE值;

    Text mInfo=new Text(cache_M.get(mkey));

    if(mInfo!=null){

    CombinationKey cbkey=new CombinationKey();

    cbkey.setFirstKey(mInfo);cbkey.setSecondKey(svalue);

    context.write(cbkey,new Text(sattr+“ ”+svalue));

    }}}

    1.3 重新定義分區(qū)函數(shù)和排序依據(jù)及分組函數(shù)

    由于在Map端就進(jìn)行一方關(guān)系M和多方關(guān)系S的連接操作,故需要重新定義分區(qū)函數(shù),使得firstKey中具有相同mkey的連接結(jié)果分到同一個區(qū)(Partition),自定義分區(qū)類的定義如下:

    class CusPartition extends Partitioner<CombinationKey,Text>{

    public int getPartition(CombinationKey key,Text value,int numPartitions){

    string mkey=取出key中firstKey部分的mkey;//mkey為分組依據(jù)

    return (mkey.hashCode()&Integer.MAX_VALUE)%numPartitions;}

    }//numPartitions的值為集群中reduce節(jié)點的數(shù)量.

    在Map和Reduce階段都需要對處在同一個分區(qū)的連接結(jié)果首先按firstKey中的mkey進(jìn)行排序,再按secondKey進(jìn)行排序,自定義的排序比較類定義如下:

    class CusComparator extends WritableComparator{

    public int compare(WritableComparable cbKeyOne,WritableComparable cbKeyTwo){

    CombinationKey c1=(CombinationKey)cbKeyOne;

    CombinationKey c2=(CombinationKey)cbKeyTwo;

    string mkey1=從c1中取出firstKey部分的mkey;IntWritabe svalue1=取出c1中的secondKey;

    string mkey2=從c2中取出firstKey部分的mkey;IntWritabe svalue2=取出c2中的secondKey;

    if(!mkey1.equals(mkey2)) {return mkey1.compareTo(mkey2);}//以字符方式比較mkey

    else{return svalue1-svalue2;//以數(shù)值方式比較second-Key}}}

    比較方法返回值值分別以小于零的值、零值、大于零的值表示小于、等于和大于.

    在Reduce階段將具有相同combinationkey的連接結(jié)果分在同一組,形成[combinationkey,List(sattr[k]“ ”svalue1,sattr[k]“ ”svalue2...sattr[k]“ ”svaluen)],k∈[1,n].分組的依據(jù)仍然為 firstkey的mkey部分,自定義的分組類如下所示:

    class CusGrouping extends WritableComparator{

    public int compare(WritableComparable cbKeyOne,WritableComparable cbKeyTwo){

    CombinationKey c1=(CombinationKey)cbKeyOne;

    CombinationKey c2=(CombinationKey)cbKeyTwo;

    string mkey1=從c1中取出firstKey部分的mkey;

    string mkey2=從c2中取出firstKey部分的mkey;

    return mkey1.compareTo(mkey2);}}

    1.4 在Reduce階段將連接結(jié)果寫入HBase表

    Reduce首先對輸入的combinationkey進(jìn)行分解,取出firstKey中的mkey作為HBase表的行健,然后將firstKey中的其它屬性值依次以M:MATT[m],m∈[1,n]列存儲.對已經(jīng)按svalue排序好的集合 List(sattr[k]“ ”svalue1,sattr[k]“ ”svalue2...sattr[k]“ ”svaluen),以 S:sattr[k],k∈[1,n]列存儲對應(yīng)的svalue值.由于HBase默認(rèn)按列的名稱S:satt[k]進(jìn)行排序,故存儲的次序可能與排序的結(jié)果不一致,可以增加M:seq列,存儲排序后的svalue值,Reduce的過程定義如下:

    class SCHBTReducer extends TableReducer<CombinationKey,Text,ImmutableBytesWritable>{

    public void reduce(CombinationKey key,Iterable<Text>values,Context context){

    string mSeq=“”;

    string[]mParts=key.getFirstKey().toString().split(" ");

    Put put=new Put(mParts[0].getBytes());//行健為mkey

    for(int i=1;i<mParts.length;i++){//存儲一方關(guān)系 M的各個屬性值

    put.add(“M”.getBytes(),MATT[i].getBytes(),mParts[i].getBytes())}

    while(values.iterator().hasNext()){//存儲多方關(guān)系的satt及svalue值

    string[]sParts=ite.next().toString().split(" ");

    put.add(“S.”getBytes(),sParts[0].getBytes(),,sParts[1].get-Bytes());

    mSeq+=sParts[0]+":"+sParts[1]+";";}

    put.add(“M”.getBytes(),”mSeq”.getBytes(),mSeq.get-Bytes());//存儲按svalue排序的結(jié)果

    context.write(new ImmutableBytesWritable(mParts[0].get-Bytes()),put);//寫入 HBase表

    }}

    2 實驗部分

    實驗環(huán)境為包含有4個節(jié)點的Hadoop集群,1個主節(jié)點,4個數(shù)據(jù)節(jié)點(主節(jié)點也為數(shù)據(jù)節(jié)點),節(jié)點計算機的配置為Pentium(R)Dual-Core E500 2.5 GHz,2 GiB內(nèi)存,160 GiB硬盤.集群使用的操作系統(tǒng)為 ubuntu-14.04.1-server-i386,Hadoop版本為2.4.1,HBase版本為0.98,7,客戶端使用Eclipse 4.2.1,Java SE 1.7為開發(fā)環(huán)境.以學(xué)生選課關(guān)系模擬規(guī)范的一對多關(guān)系,模擬數(shù)據(jù)如圖2所示.

    在集群的HDFS上建立SecSort_MFileIn目錄,上傳std.txt文件到該目錄,建立SecSort_SFileIn目錄,上傳course.txt文件到該目錄.在Main函數(shù)中對Job進(jìn)行如下的配置:

    String[]ioArgs=new String[]{"hdfs://MainDataNode:9000/SecSort_MFileIn/std.txt",

    "hdfs://MainDataNode:9000/SecSort_SFileIn"};

    job.addCacheFile(new URI(ioArgs[0]));//設(shè)置 Map端連接需要復(fù)制到每個節(jié)點內(nèi)存的一方文件

    job.setJarByClass(SecSortHBase.class);//設(shè)置任務(wù)的類名

    job.setMapperClass(HBaseMapper.class);//設(shè)置Map類名

    job.setReducerClass(SCHBTReducer.class);//設(shè) 置 Re-duce類名

    job.setPartitionerClass(CusPartition.class);//設(shè)置自定義分區(qū)類

    job.setSortComparatorClass(CusComparator.class);//設(shè)置自定義排序比較類

    job.setGroupingComparatorClass(CusGrouping.class);//設(shè)置自定義分區(qū)類

    job.setMapOutputKeyClass(CombinationKey.class);//設(shè)置Map輸出的Key類型

    job.setMapOutputValueClass(Text.class);//設(shè)置 Map輸出的Value類型

    FileInputFormat.setInputPaths(job,new Path(ioArgs[1]));//設(shè)置任務(wù)的輸入路徑

    job.setOutputFormatClass(TableOutputFormat.class);//設(shè)置任務(wù)輸出為HBase表

    job.getConfiguration().set(TableOutputFormat.OUTPUT_TABLE,"t_sc");//設(shè)置輸出的表名

    System.exit(job.waitForCompletion(true)?0:1); //運行任務(wù)

    任務(wù)在集群中運行后,將結(jié)果寫入到HBase的t_sc表中的結(jié)果如圖3所示.

    圖2 實驗?zāi)M數(shù)據(jù)Fig.2 Experimental simulation data

    從實驗結(jié)果看出,std.txt文件中每個學(xué)生的屬性只存儲了一次,每個學(xué)生所選課程存儲了多次,實現(xiàn)了連接的語義,消除了冗余,二次排序的學(xué)生成績可直接通過查詢std:CourseSeq列得到.因以HBase表存儲連接結(jié)果,可以利用HBase提供的各類方法進(jìn)行數(shù)據(jù)檢索,提高了數(shù)據(jù)的查詢效率.

    3 結(jié) 語

    利用MapReduce對具有相同屬性的關(guān)系進(jìn)行連接時,不可避免會產(chǎn)生冗余,將Map端輸出的Key進(jìn)行組合,使其包含產(chǎn)生冗余的屬性,并重新定義分區(qū)、排序及分組過程得到期望的Reduce端的輸入,在Reduce端將連接結(jié)果寫入HBase表,可以優(yōu)化規(guī)范一對多關(guān)系的連接結(jié)果冗余.如何對多個關(guān)聯(lián)的實體進(jìn)行連接,實現(xiàn)連接的語義,又避免連接結(jié)果中不必要的冗余,將是以后研究的主要方向.

    [1] 王珊,王會舉.架構(gòu)大數(shù)據(jù):挑戰(zhàn)、現(xiàn)狀與展望[J].計算機學(xué)報,2011,34(10):1741-1751.WANG S, WANG H J.Architectingbigdata:challenges,studies and forecasts[J].Chinese Journal of Computers,2011,34(10):1741-1751.

    [2] 孟小峰,慈祥.大數(shù)據(jù)管理:概念、技術(shù)與挑戰(zhàn)[J].計算機研究與發(fā)展,2013,50(1):146-169.MENG X F,CI X.Big data management:concepts,techniques and challenges[J].Journal of Computer Research and Development,2013,50(1):146-159.

    [3] 陳吉榮,樂嘉錦.基于Hadoop生態(tài)系統(tǒng)的大數(shù)據(jù)解決方案綜述[J].計算機工程與科學(xué),2013,35(10):25-35.CHEN J R,LE J J.Reviewing the big data solution based on Hadoop ecosystem[J].Computer Engineering&Science,2013,35(10):25-35.

    [4] LARS G.HBase:the definitive guide[M].Sebastopol:O’REILLY,2011.

    [5] ZIKOPOULOS P C,EATON C,DEROOS D,et al.Understanding big data:analytics for enterprise class Hadoop and streaming data [M]. New Youk:McGraw-Hill,2012.

    [6] AIYER A,BAUTIN M,CHEN G J,et al.Storage Infrastructure Behind Facebook Messages Using HBase at Scale[J].Bulletin of the Technical Committee on Data Engineering,2012,35(2):996-999.

    [7] VENNER J.Pro Hadoop[M].Berkeley:Appress,2009.

    [8] 蔡睿誠.基于HDFS的小文件處理與相關(guān)MapReduce計算模型性能的優(yōu)化與改進(jìn)[D].長春:吉林大學(xué),2012.

    [9] LU W,SHEN Y Y,CHEN S,et al.Efficient processing of k nearest neighbor joins using MapReduce[J].PVLDB,2016,5(10):1184-195.

    [10] PANSARE N,BORKAR V R,JERMAINE C,et al.Online aggregation for large MapReduce jobs[J].PBLDB,2014,4(11):1135-1145.

    [11] OKCAN I,RIEDEWALD M.Processing theta-joins using MapReduce[C]//ACM SIGMOD International Conference on Management of Data.ACM,2011:949-960.

    [12] AFRARTI F N,DAS S A,MENESTRINA D,et al.Fuzzy joins using MapReduce[C]//IEEE International Conference on Data Engineering.IEEE,2012:498-509.

    [13] ZHANG X F,SHEN L,WANG M.Efficient multi-way theta-join processing using MapReduce[J].PVLDB,2016,5(11):1184-1195.

    [14] BABU S.Towards automatic optimization of MapReduce programs[C]//ACM Symposium on Cloud Computing.ACM,2010:137-142.

    [15] SILBA Y N,REED J M.Exploiting MapReduce based similarity joins[C]//ACM SIGMOD International Conference on Management of Data.ACM,2012:693-696.

    Secondary Sort-Based Algorithm for Eliminating Normative Join Redundancy

    LIU Lizhi1,2,ZHANG Wei1,2
    1.Hubei Key Laboratory of Intelligent Robot(Wuhan Institute of Technology),Wuhan 430205,China;
    2.School of Computer Science and Engineering,Wuhan Institute of Technology,Wuhan 430205,China

    The join results of two entities with normative one-to-many relationship by MapReduce may contain some redundancy of one side entity.A combination key with one side entity properties and multi-side sorted values and a list of multi-side entity properties can be got as the input of reduce stage,by optimizing secondary sort-based algorithm and redefining the partition function of map stage,sort and group function of shuffle stage.After splitting the combination key at reduce stage,the key of one side entity was extracted as rowkey of the HBase table to store the join results,and the other properties of the one side entity and the list containing multiside entity properties were put in the corresponding columns of the HBase table,so the join semantics was realized and the redundancy was eliminated.The examination proves that the optimized algorithm can eliminate the redundancy of one side entity properties and promote the data query efficiency of the join results.

    MapReduce;join redundancy;secondary sort;HBase

    TP311

    A

    10.3969/j.issn.1674-2869.2017.05.018

    1674-2869(2017)05-0508-06

    2016-12-01

    劉黎志,碩士,副教授.E-mail:llz73@163.com

    劉黎志,張威.消除規(guī)范關(guān)系連接冗余的二次排序算法研究[J].武漢工程大學(xué)學(xué)報,2017,39(5):508-513.

    LIU L Z,ZHANG W.Research on the secondary sort algorithm for eliminating normative join redundancy[J].Journal of Wuhan Institute of Technology,2017,39(5):508-513.

    陳小平

    猜你喜歡
    分區(qū)排序分組
    上海實施“分區(qū)封控”
    排序不等式
    恐怖排序
    分組搭配
    節(jié)日排序
    怎么分組
    浪莎 分區(qū)而治
    刻舟求劍
    兒童繪本(2018年5期)2018-04-12 16:45:32
    分組
    基于SAGA聚類分析的無功電壓控制分區(qū)
    電測與儀表(2015年8期)2015-04-09 11:50:16
    中文字幕最新亚洲高清| 久久天堂一区二区三区四区| 禁无遮挡网站| 精品久久久精品久久久| 久久精品成人免费网站| 久热这里只有精品99| 老司机靠b影院| 精品国产超薄肉色丝袜足j| 99国产精品一区二区三区| 激情在线观看视频在线高清| 99久久精品国产亚洲精品| 18禁黄网站禁片午夜丰满| 久久这里只有精品19| 十分钟在线观看高清视频www| 婷婷丁香在线五月| 成人18禁高潮啪啪吃奶动态图| 亚洲欧美日韩高清在线视频| 在线国产一区二区在线| 男男h啪啪无遮挡| 亚洲午夜理论影院| 国产aⅴ精品一区二区三区波| 最新美女视频免费是黄的| 亚洲午夜理论影院| 亚洲精品一卡2卡三卡4卡5卡| 亚洲精品中文字幕在线视频| 欧美国产精品va在线观看不卡| 男女做爰动态图高潮gif福利片 | 中文字幕人妻熟女乱码| 热re99久久国产66热| 丝袜美腿诱惑在线| 欧美最黄视频在线播放免费| 欧美在线一区亚洲| 变态另类丝袜制服| 99精品欧美一区二区三区四区| 国产欧美日韩精品亚洲av| 极品教师在线免费播放| 大型av网站在线播放| 亚洲精华国产精华精| 桃红色精品国产亚洲av| 中文字幕人妻熟女乱码| 老司机午夜福利在线观看视频| 国产成人啪精品午夜网站| 成人18禁高潮啪啪吃奶动态图| 久久影院123| 在线国产一区二区在线| 九色亚洲精品在线播放| 999精品在线视频| 久久国产乱子伦精品免费另类| 黑丝袜美女国产一区| 免费在线观看黄色视频的| 看免费av毛片| 午夜精品国产一区二区电影| 美女大奶头视频| 午夜福利高清视频| 精品国产亚洲在线| 亚洲第一欧美日韩一区二区三区| 国产av在哪里看| 熟女少妇亚洲综合色aaa.| avwww免费| 可以在线观看毛片的网站| 欧美日韩一级在线毛片| 婷婷丁香在线五月| 变态另类成人亚洲欧美熟女 | 级片在线观看| 亚洲五月色婷婷综合| 国产私拍福利视频在线观看| 久久久国产成人免费| 免费观看精品视频网站| 日本五十路高清| 免费高清在线观看日韩| e午夜精品久久久久久久| 91在线观看av| 男人舔女人下体高潮全视频| 一区二区三区精品91| 精品一区二区三区av网在线观看| 日韩精品青青久久久久久| 欧美日本中文国产一区发布| 在线观看日韩欧美| 色播在线永久视频| 日本欧美视频一区| a在线观看视频网站| 久久人妻av系列| 亚洲电影在线观看av| 午夜福利,免费看| 欧美乱妇无乱码| 中文字幕久久专区| 韩国精品一区二区三区| 午夜福利,免费看| 免费看十八禁软件| 免费在线观看亚洲国产| 男人操女人黄网站| 97碰自拍视频| 国产精品久久久久久亚洲av鲁大| 国产精品久久久久久精品电影 | 啪啪无遮挡十八禁网站| 国内精品久久久久久久电影| 9色porny在线观看| 色婷婷久久久亚洲欧美| 人人妻,人人澡人人爽秒播| 99香蕉大伊视频| 久久影院123| 天天一区二区日本电影三级 | 色综合站精品国产| 十八禁网站免费在线| 精品国产乱码久久久久久男人| 色精品久久人妻99蜜桃| 黄片大片在线免费观看| 美女 人体艺术 gogo| 高清在线国产一区| 黑人操中国人逼视频| 国语自产精品视频在线第100页| 午夜视频精品福利| 欧美在线黄色| 久久久水蜜桃国产精品网| 人成视频在线观看免费观看| 夜夜夜夜夜久久久久| 久久青草综合色| 亚洲精品在线美女| 国产私拍福利视频在线观看| 国产精品自产拍在线观看55亚洲| 亚洲精品国产精品久久久不卡| 一区二区三区国产精品乱码| 久久伊人香网站| 老司机在亚洲福利影院| 亚洲精品国产精品久久久不卡| 日本撒尿小便嘘嘘汇集6| 一本综合久久免费| 亚洲片人在线观看| 男人的好看免费观看在线视频 | 国产欧美日韩综合在线一区二区| 少妇熟女aⅴ在线视频| 日韩欧美一区视频在线观看| 美女 人体艺术 gogo| 欧美性长视频在线观看| 人人妻人人爽人人添夜夜欢视频| 十分钟在线观看高清视频www| 一边摸一边抽搐一进一出视频| 国产精品久久久久久精品电影 | 窝窝影院91人妻| 久久久久亚洲av毛片大全| 午夜亚洲福利在线播放| 色尼玛亚洲综合影院| 亚洲精品在线美女| 亚洲欧美一区二区三区黑人| 精品国内亚洲2022精品成人| 国产又爽黄色视频| 又大又爽又粗| 欧美乱码精品一区二区三区| 午夜福利,免费看| 美女 人体艺术 gogo| 欧美日韩瑟瑟在线播放| 欧美激情极品国产一区二区三区| 大码成人一级视频| 色哟哟哟哟哟哟| 亚洲人成77777在线视频| 熟女少妇亚洲综合色aaa.| 亚洲精品在线美女| 亚洲一码二码三码区别大吗| 亚洲色图综合在线观看| 久久狼人影院| 免费在线观看黄色视频的| 两性午夜刺激爽爽歪歪视频在线观看 | 国产1区2区3区精品| 国产成人系列免费观看| 在线观看日韩欧美| 在线十欧美十亚洲十日本专区| 亚洲激情在线av| 在线观看日韩欧美| 国产伦一二天堂av在线观看| 欧美黑人欧美精品刺激| 国产成人一区二区三区免费视频网站| 中文字幕色久视频| 久久精品国产清高在天天线| 欧美在线黄色| 欧美精品亚洲一区二区| 日本撒尿小便嘘嘘汇集6| 亚洲精品中文字幕一二三四区| 欧美激情高清一区二区三区| 在线天堂中文资源库| 亚洲国产精品999在线| 国产高清视频在线播放一区| 99久久久亚洲精品蜜臀av| 神马国产精品三级电影在线观看 | 亚洲精品国产一区二区精华液| 亚洲欧美日韩高清在线视频| 亚洲专区国产一区二区| 日韩成人在线观看一区二区三区| 天堂动漫精品| www.www免费av| 国产片内射在线| 亚洲最大成人中文| 久久人人精品亚洲av| 久久精品人人爽人人爽视色| 欧美日韩福利视频一区二区| 免费在线观看日本一区| 欧美+亚洲+日韩+国产| 91成年电影在线观看| 两人在一起打扑克的视频| 两性夫妻黄色片| 亚洲色图av天堂| 国产又色又爽无遮挡免费看| 男女下面插进去视频免费观看| 国产片内射在线| 国产一区二区三区视频了| 丰满的人妻完整版| 欧美成人一区二区免费高清观看 | 亚洲精品国产一区二区精华液| 50天的宝宝边吃奶边哭怎么回事| 曰老女人黄片| 日本欧美视频一区| 精品国产乱码久久久久久男人| 国产亚洲欧美98| 91九色精品人成在线观看| 黑人巨大精品欧美一区二区蜜桃| 精品不卡国产一区二区三区| 巨乳人妻的诱惑在线观看| 日本免费a在线| 久久精品国产99精品国产亚洲性色 | 中文字幕久久专区| 久久久久久人人人人人| 黄色视频不卡| 操出白浆在线播放| 久久午夜综合久久蜜桃| 一本大道久久a久久精品| 高清毛片免费观看视频网站| 男人的好看免费观看在线视频 | 99久久久亚洲精品蜜臀av| 国产91精品成人一区二区三区| 国产成人精品久久二区二区91| 精品日产1卡2卡| 国语自产精品视频在线第100页| 88av欧美| av福利片在线| 免费一级毛片在线播放高清视频 | 午夜精品久久久久久毛片777| 一级毛片精品| av中文乱码字幕在线| 欧美激情 高清一区二区三区| 男人舔女人下体高潮全视频| 制服丝袜大香蕉在线| 十分钟在线观看高清视频www| 欧美国产精品va在线观看不卡| 欧美午夜高清在线| 亚洲人成电影观看| 热re99久久国产66热| 男女下面进入的视频免费午夜 | 久久久国产成人精品二区| 不卡一级毛片| 亚洲aⅴ乱码一区二区在线播放 | 窝窝影院91人妻| 国产av一区二区精品久久| 很黄的视频免费| 亚洲成人免费电影在线观看| 99国产精品一区二区蜜桃av| 99久久99久久久精品蜜桃| 国产精品久久久久久精品电影 | 岛国在线观看网站| 国产亚洲精品久久久久5区| 免费在线观看日本一区| 88av欧美| 亚洲欧洲精品一区二区精品久久久| av中文乱码字幕在线| 黄片大片在线免费观看| 麻豆成人av在线观看| 俄罗斯特黄特色一大片| 一级毛片高清免费大全| 88av欧美| xxx96com| 亚洲视频免费观看视频| 亚洲国产中文字幕在线视频| 国产成人系列免费观看| 操美女的视频在线观看| 国产精品久久久久久亚洲av鲁大| 国产欧美日韩综合在线一区二区| 每晚都被弄得嗷嗷叫到高潮| 大香蕉久久成人网| 午夜两性在线视频| 视频在线观看一区二区三区| 国产精品98久久久久久宅男小说| 满18在线观看网站| 亚洲专区字幕在线| 香蕉丝袜av| 窝窝影院91人妻| 国产私拍福利视频在线观看| 久久久久精品国产欧美久久久| 无遮挡黄片免费观看| 欧美人与性动交α欧美精品济南到| 777久久人妻少妇嫩草av网站| 制服丝袜大香蕉在线| 成人精品一区二区免费| 啦啦啦 在线观看视频| 正在播放国产对白刺激| 久久精品aⅴ一区二区三区四区| 免费不卡黄色视频| 嫩草影视91久久| 91国产中文字幕| 午夜激情av网站| 久久中文字幕一级| 国产熟女xx| 久久久水蜜桃国产精品网| 国产aⅴ精品一区二区三区波| 男人舔女人下体高潮全视频| 国产亚洲欧美精品永久| 国产在线观看jvid| 性欧美人与动物交配| 成人国产一区最新在线观看| 久久久国产成人免费| 亚洲中文字幕日韩| 中亚洲国语对白在线视频| 国产免费男女视频| 欧美日韩亚洲综合一区二区三区_| 丁香六月欧美| 亚洲av美国av| 国产成人av激情在线播放| 国产欧美日韩一区二区三| 欧美另类亚洲清纯唯美| 亚洲国产看品久久| 自拍欧美九色日韩亚洲蝌蚪91| 亚洲精品一区av在线观看| 国产国语露脸激情在线看| 精品一区二区三区视频在线观看免费| 一本久久中文字幕| 精品国产超薄肉色丝袜足j| 在线观看午夜福利视频| 黄色成人免费大全| 又大又爽又粗| 亚洲国产高清在线一区二区三 | 久久久精品国产亚洲av高清涩受| www.自偷自拍.com| 热99re8久久精品国产| 国产成人欧美| 欧美日韩一级在线毛片| 91字幕亚洲| 亚洲人成电影免费在线| 久久久久久人人人人人| 黄色片一级片一级黄色片| 一区二区三区高清视频在线| 欧美色视频一区免费| 国产一级毛片七仙女欲春2 | 91老司机精品| 国产成年人精品一区二区| 正在播放国产对白刺激| 黄片小视频在线播放| www.熟女人妻精品国产| 宅男免费午夜| 两个人看的免费小视频| 男女床上黄色一级片免费看| 看免费av毛片| 女性生殖器流出的白浆| 一级毛片精品| 亚洲狠狠婷婷综合久久图片| 国产亚洲精品av在线| 国产一区二区三区在线臀色熟女| 精品国产国语对白av| 一个人免费在线观看的高清视频| 国产熟女xx| 国产av精品麻豆| 91在线观看av| 国产精品自产拍在线观看55亚洲| 成人永久免费在线观看视频| 午夜亚洲福利在线播放| 日韩精品中文字幕看吧| 啪啪无遮挡十八禁网站| 精品少妇一区二区三区视频日本电影| 久久久久九九精品影院| 国产99白浆流出| 男人的好看免费观看在线视频 | 亚洲国产欧美网| 久久精品影院6| 久久人人爽av亚洲精品天堂| 日本精品一区二区三区蜜桃| 成人欧美大片| 免费高清在线观看日韩| 国产免费男女视频| 啪啪无遮挡十八禁网站| 国产精品亚洲一级av第二区| 国产av又大| 亚洲成人免费电影在线观看| 国产精品av久久久久免费| 欧美一级a爱片免费观看看 | 成熟少妇高潮喷水视频| 日本三级黄在线观看| 色精品久久人妻99蜜桃| 午夜老司机福利片| 久久香蕉精品热| 国产精品精品国产色婷婷| √禁漫天堂资源中文www| 97碰自拍视频| 麻豆av在线久日| 成人永久免费在线观看视频| 国产欧美日韩精品亚洲av| 日本三级黄在线观看| 亚洲精品国产一区二区精华液| 悠悠久久av| 人成视频在线观看免费观看| 看黄色毛片网站| 亚洲第一青青草原| www国产在线视频色| 纯流量卡能插随身wifi吗| 母亲3免费完整高清在线观看| 在线观看舔阴道视频| 欧美黑人欧美精品刺激| 亚洲avbb在线观看| 午夜影院日韩av| 99精品久久久久人妻精品| 又紧又爽又黄一区二区| 国产成人精品无人区| 一区二区三区国产精品乱码| 亚洲av美国av| 久久伊人香网站| 日本欧美视频一区| 国产97色在线日韩免费| 脱女人内裤的视频| 久久精品国产综合久久久| 国产一区在线观看成人免费| 日韩高清综合在线| 久久 成人 亚洲| 日韩成人在线观看一区二区三区| 国产成人影院久久av| 久久青草综合色| avwww免费| 精品无人区乱码1区二区| 亚洲 欧美 日韩 在线 免费| 日韩av在线大香蕉| 精品久久久精品久久久| 国产免费av片在线观看野外av| 欧美黄色淫秽网站| 国产高清视频在线播放一区| 日韩高清综合在线| 亚洲色图av天堂| 黄频高清免费视频| 久久久久久久久中文| www.999成人在线观看| 法律面前人人平等表现在哪些方面| 女人高潮潮喷娇喘18禁视频| 久99久视频精品免费| 女同久久另类99精品国产91| 99精品欧美一区二区三区四区| 国产亚洲欧美98| 日韩欧美国产一区二区入口| 日日干狠狠操夜夜爽| 亚洲av电影不卡..在线观看| 国产欧美日韩一区二区三| 怎么达到女性高潮| 久久久精品欧美日韩精品| 国产精品乱码一区二三区的特点 | 9191精品国产免费久久| 国产亚洲精品久久久久5区| 欧美日韩精品网址| 成年人黄色毛片网站| www.自偷自拍.com| 亚洲av电影不卡..在线观看| 人人妻人人爽人人添夜夜欢视频| 亚洲av片天天在线观看| 一个人观看的视频www高清免费观看 | 亚洲国产看品久久| 9色porny在线观看| 天天添夜夜摸| 精品福利观看| 99精品久久久久人妻精品| 国产三级在线视频| 久久久久精品国产欧美久久久| 久久精品影院6| 精品卡一卡二卡四卡免费| 亚洲一码二码三码区别大吗| 在线观看www视频免费| 国产成人一区二区三区免费视频网站| av欧美777| 国产精品 欧美亚洲| 亚洲熟妇中文字幕五十中出| 欧美乱码精品一区二区三区| 午夜福利在线观看吧| 一区二区三区高清视频在线| 成年女人毛片免费观看观看9| 一进一出好大好爽视频| 国产1区2区3区精品| 亚洲av第一区精品v没综合| 精品不卡国产一区二区三区| 午夜老司机福利片| 亚洲精品久久成人aⅴ小说| 9色porny在线观看| 叶爱在线成人免费视频播放| 一二三四在线观看免费中文在| 成年人黄色毛片网站| 国产av在哪里看| 久久伊人香网站| 19禁男女啪啪无遮挡网站| 欧美 亚洲 国产 日韩一| 又大又爽又粗| 神马国产精品三级电影在线观看 | 夜夜夜夜夜久久久久| 国产av一区二区精品久久| 日日夜夜操网爽| 中文字幕另类日韩欧美亚洲嫩草| 亚洲欧美激情在线| 99久久精品国产亚洲精品| 婷婷六月久久综合丁香| 中文字幕av电影在线播放| 狠狠狠狠99中文字幕| 妹子高潮喷水视频| 少妇的丰满在线观看| 久久精品国产亚洲av香蕉五月| 久久青草综合色| 免费女性裸体啪啪无遮挡网站| 中文亚洲av片在线观看爽| 久久这里只有精品19| 欧美黑人精品巨大| 亚洲 欧美一区二区三区| 免费观看人在逋| 亚洲欧美日韩另类电影网站| 很黄的视频免费| 午夜福利一区二区在线看| 亚洲色图综合在线观看| 欧美在线一区亚洲| 午夜精品国产一区二区电影| 午夜久久久在线观看| 欧美激情极品国产一区二区三区| 国产精品国产高清国产av| 欧美人与性动交α欧美精品济南到| 在线视频色国产色| 黄片播放在线免费| 久久香蕉国产精品| 国产亚洲精品综合一区在线观看 | 婷婷六月久久综合丁香| 午夜久久久久精精品| 啦啦啦 在线观看视频| 色老头精品视频在线观看| 欧美人与性动交α欧美精品济南到| 97人妻精品一区二区三区麻豆 | 啦啦啦免费观看视频1| 免费在线观看亚洲国产| 精品人妻1区二区| tocl精华| 国产午夜福利久久久久久| 成人手机av| 变态另类成人亚洲欧美熟女 | 国产亚洲av高清不卡| 男人的好看免费观看在线视频 | 欧美丝袜亚洲另类 | 制服丝袜大香蕉在线| 欧美大码av| 免费一级毛片在线播放高清视频 | 美女午夜性视频免费| 午夜精品久久久久久毛片777| 99久久久亚洲精品蜜臀av| 国产欧美日韩综合在线一区二区| 久久欧美精品欧美久久欧美| 久9热在线精品视频| 纯流量卡能插随身wifi吗| 国内精品久久久久久久电影| 国产三级在线视频| 99国产综合亚洲精品| 久久国产精品人妻蜜桃| 久久久久久久午夜电影| 欧美乱色亚洲激情| 最近最新中文字幕大全免费视频| 亚洲色图av天堂| 亚洲国产欧美一区二区综合| 黄网站色视频无遮挡免费观看| 免费在线观看黄色视频的| 精品久久久久久,| 国产精品永久免费网站| netflix在线观看网站| 欧美日韩亚洲综合一区二区三区_| 欧美不卡视频在线免费观看 | 亚洲国产高清在线一区二区三 | 国产精品久久视频播放| 亚洲国产高清在线一区二区三 | 露出奶头的视频| 亚洲国产欧美网| 午夜亚洲福利在线播放| 亚洲自偷自拍图片 自拍| 亚洲国产精品成人综合色| 九色亚洲精品在线播放| 午夜福利在线观看吧| 亚洲欧美激情在线| 欧美色视频一区免费| 久久久久亚洲av毛片大全| 在线av久久热| 一a级毛片在线观看| 国产片内射在线| 国产一区二区三区综合在线观看| 色播在线永久视频| 国产伦人伦偷精品视频| 在线观看66精品国产| 久9热在线精品视频| 国产野战对白在线观看| 亚洲av电影不卡..在线观看| 久久中文看片网| 成人精品一区二区免费| 国产高清有码在线观看视频 | 一级片免费观看大全| 女人被躁到高潮嗷嗷叫费观| 亚洲国产中文字幕在线视频| av在线天堂中文字幕| 在线观看www视频免费| 亚洲avbb在线观看| 黄色视频,在线免费观看| 麻豆久久精品国产亚洲av| 欧美另类亚洲清纯唯美| 大陆偷拍与自拍| 亚洲成人久久性| svipshipincom国产片| 91成年电影在线观看| 国产99白浆流出| 多毛熟女@视频| 日本免费a在线| 大型黄色视频在线免费观看| 最近最新中文字幕大全电影3 | 1024视频免费在线观看| 国产三级在线视频| 日日爽夜夜爽网站| 桃红色精品国产亚洲av| 亚洲国产看品久久| 韩国av一区二区三区四区|