国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

Flink 分布式緩存原理及使用

共 2619字,需瀏覽 6分鐘

 ·

2021-11-18 06:07

背景

在1.9.1版本中分布式緩存并未拷貝HDFS下的文件到TM,運(yùn)行時拋出如下異常。



升級到1.10.1版本,能正常使用。借此,學(xué)習(xí)下Flink 分布式緩存相關(guān)知識。

定義

官網(wǎng)對 distributed cache 的定義:


    Flink offers a distributed cache, similar to Apache Hadoop, to make files locally accessible to parallel instances of user functions. This functionality can be used to share files that contain static external data such as dictionaries or machine-learned regression models.           The cache works as follows. A program registers a file or directory of a local or remote filesystem such as HDFS or S3 under a specific name in its ExecutionEnvironment as a cached file. When the program is executed, Flink automatically copies the file or directory to the local filesystem of all workers. A user function can look up the file or directory under the specified name and access it from the worker’s local filesystem.

意思是通過Flink程序注冊一個本地或者Hdfs文件,程序在運(yùn)行時,F(xiàn)link會自動將該文件拷貝到每個tm中,每個函數(shù)可以通過注冊的名稱獲取該文件。

使用

官網(wǎng)給出的使用案例:

final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
// register a file from HDFSenv.registerCachedFile("hdfs:///path/to/your/file", "hdfsFile")
// register a local executable file (script, executable, ...)env.registerCachedFile("file:///path/to/exec/file", "localExecFile", true)
// define your program and execute...DataStream input = ...DataStream result = input.map(new MyMapper());...env.execute();
---------------------------------------------------------------// extend a RichFunction to have access to the RuntimeContextpublic final class MyMapper extends RichMapFunction<String, Integer> {
@Override public void open(Configuration config) {
// access cached file via RuntimeContext and DistributedCache File myFile = getRuntimeContext().getDistributedCache().getFile("hdfsFile"); // read the file (or navigate the directory) ... }
@Override public Integer map(String value) throws Exception { // use content of cached file ... }}

實(shí)現(xiàn)流程

參考flink1.10.1版本的源碼,了解實(shí)現(xiàn)流程。

  1. 將分布式文件地址及注冊名稱寫入StreamExecutionEnvironment的cacheFile中。

protected final ListString, DistributedCache.DistributedCacheEntry>> cacheFile = new ArrayList<>();
public void registerCachedFile(String filePath, String name, boolean executable) { this.cacheFile.add(new Tuple2<>(name, new DistributedCache.DistributedCacheEntry(filePath, executable)));}
  1. 在生成StreamGraph時將該cacheFile傳遞給StreamGraph的 userArtifacts。

StreamGraphGenerator-->StreamGraph

org.apache.flink.streaming.api.environment.StreamExecutionEnvironment#getStreamGraphGenerator   private StreamGraphGenerator getStreamGraphGenerator() {    if (transformations.size() <= 0) {        throw new IllegalStateException("No operators defined in streaming topology. Cannot execute.");    }    return new StreamGraphGenerator(transformations, config, checkpointCfg)        .setStateBackend(defaultStateBackend)        .setChaining(isChainingEnabled)        .setUserArtifacts(cacheFile)   // note:傳遞cacheFile        .setTimeCharacteristic(timeCharacteristic)        .setDefaultBufferTimeout(bufferTimeout);}
org.apache.flink.streaming.api.graph.StreamGraphGenerator#generatepublic StreamGraph generate() { streamGraph = new StreamGraph(executionConfig, checkpointConfig, savepointRestoreSettings); streamGraph.setStateBackend(stateBackend); streamGraph.setChaining(chaining); streamGraph.setScheduleMode(scheduleMode); streamGraph.setUserArtifacts(userArtifacts); // note:傳遞userArtifacts streamGraph.setTimeCharacteristic(timeCharacteristic); streamGraph.setJobName(jobName); streamGraph.setBlockingConnectionsBetweenChains(blockingConnectionsBetweenChains);
alreadyTransformed = new HashMap<>();
for (Transformation transformation: transformations) { transform(transformation); }
final StreamGraph builtStreamGraph = streamGraph;
alreadyTransformed.clear(); alreadyTransformed = null; streamGraph = null;
return builtStreamGraph;}

3. 在生成JobGraph時將StreamGraph的userArtifacts 傳遞給JobGraph的userArtifacts。如果緩存文件為本地文件夾則會將該文件夾壓縮為.zip格式存儲在客戶端的臨時文件夾中,并使用新的存儲路徑。

org.apache.flink.streaming.api.graph.StreamingJobGraphGenerator#createJobGraph()    private JobGraph createJobGraph() {    ...    JobGraphGenerator.addUserArtifactEntries(streamGraph.getUserArtifacts(), jobGraph);    ...    return jobGraph;}
public static void addUserArtifactEntries(Collection> userArtifacts, JobGraph jobGraph) { if (userArtifacts != null && !userArtifacts.isEmpty()) { try { java.nio.file.Path tmpDir = Files.createTempDirectory("flink-distributed-cache-" + jobGraph.getJobID()); for (Tuple2 originalEntry : userArtifacts) { Path filePath = new Path(originalEntry.f1.filePath); boolean isLocalDir = false; try { FileSystem sourceFs = filePath.getFileSystem(); isLocalDir = !sourceFs.isDistributedFS() && sourceFs.getFileStatus(filePath).isDir(); } catch (IOException ioe) { LOG.warn("Could not determine whether {} denotes a local path.", filePath, ioe); } // zip local directories because we only support file uploads DistributedCache.DistributedCacheEntry entry; if (isLocalDir) { // note: 壓縮本地文件夾,返回zip文件路徑 Path zip = FileUtils.compressDirectory(filePath, new Path(tmpDir.toString(), filePath.getName() + ".zip")); entry = new DistributedCache.DistributedCacheEntry(zip.toString(), originalEntry.f1.isExecutable, true); } else { entry = new DistributedCache.DistributedCacheEntry(filePath.toString(), originalEntry.f1.isExecutable, false); } jobGraph.addUserArtifact(originalEntry.f0, entry); } } catch (IOException ioe) { throw new FlinkRuntimeException("Could not compress distributed-cache artifacts.", ioe); } }}

4. yarnPerjob 模式部署jobGraph時,如果是本地文件則上傳本地zip,返回該文件所在的hdfs路徑。如果緩存文件為hdfs已存在路徑,則直接寫入配置文件。

org.apache.flink.yarn.YarnClusterDescriptor#startAppMaster
// only for per job modeif (jobGraph != null) { for (Map.Entry entry : jobGraph.getUserArtifacts().entrySet()) { org.apache.flink.core.fs.Path path = new org.apache.flink.core.fs.Path(entry.getValue().filePath); // only upload local files // note: 上傳本地文件,返回hdfs中的路徑存儲在jobGraph的userArtifacts if (!path.getFileSystem().isDistributedFS()) { Path localPath = new Path(path.getPath()); Tuple2 remoteFileInfo = Utils.uploadLocalFileToRemote(fs, appId.toString(), localPath, homeDir, entry.getKey()); jobGraph.setUserArtifactRemotePath(entry.getKey(), remoteFileInfo.f0.toString()); } } // 將分布式緩存文件信息寫入到Configuration中 jobGraph.writeUserArtifactEntriesToConfiguration();}

DistributedCache#writeFileInfoToConfigpublic static void writeFileInfoToConfig(String name, DistributedCacheEntry e, Configuration conf) { int num = conf.getInteger(CACHE_FILE_NUM, 0) + 1; conf.setInteger(CACHE_FILE_NUM, num); conf.setString(CACHE_FILE_NAME + num, name); // note: DISTRIBUTED_CACHE_FILE_PATH_0 conf.setString(CACHE_FILE_PATH + num, e.filePath); conf.setBoolean(CACHE_FILE_EXE + num, e.isExecutable || new File(e.filePath).canExecute()); conf.setBoolean(CACHE_FILE_DIR + num, e.isZipped || new File(e.filePath).isDirectory()); if (e.blobKey != null) { conf.setBytes(CACHE_FILE_BLOB_KEY + num, e.blobKey); }}
  1. Task執(zhí)行時,會先讀取緩存文件中,并傳遞給RuntimeEnvironment,這樣便可以根據(jù)注冊名稱獲取文件。

    1. 從config文件中讀取緩存文件路徑。

    2. 創(chuàng)建臨時文件,將緩存文件從hdfs異步拷貝到當(dāng)前TM,并將拷貝后的本地路徑存儲在內(nèi)存中。臨時文件夾格式flink-dist-cache-uuid/jobId/。

org.apache.flink.runtime.taskmanager.Task#doRunprivate void doRun() {    .......    // all resource acquisitions and registrations from here on    // need to be undone in the end    Map> distributedCacheEntries = new HashMap<>();
// next, kick off the background copying of files for the distributed cache try { for (Map.Entry entry : DistributedCache.readFileInfoFromConfig(jobConfiguration)) { LOG.info("Obtaining local cache file for '{}'.", entry.getKey()); Future cp = fileCache.createTmpFile(entry.getKey(), entry.getValue(), jobId, executionId); distributedCacheEntries.put(entry.getKey(), cp); } } catch (Exception e) { throw new Exception( String.format("Exception while adding files to distributed cache of task %s (%s).", taskNameWithSubtask, executionId), e); }
Environment env = new RuntimeEnvironment( jobId, vertexId, executionId, executionConfig, taskInfo, jobConfiguration, taskConfiguration, userCodeClassLoader, memoryManager, ioManager, broadcastVariableManager, taskStateManager, aggregateManager, accumulatorRegistry, kvStateRegistry, inputSplitProvider, distributedCacheEntries, // note: consumableNotifyingPartitionWriters, inputGates, taskEventDispatcher, checkpointResponder, taskManagerConfig, metrics, this);}

public Future createTmpFile(String name, DistributedCacheEntry entry, JobID jobID, ExecutionAttemptID executionId) throws Exception { synchronized (lock) { Map> jobEntries = entries.computeIfAbsent(jobID, k -> new HashMap<>());
// register reference holder final Set refHolders = jobRefHolders.computeIfAbsent(jobID, id -> new HashSet<>()); refHolders.add(executionId);
Future fileEntry = jobEntries.get(name); if (fileEntry != null) { // file is already in the cache. return a future that // immediately returns the file return fileEntry; } else { // need to copy the file // create the target path File tempDirToUse = new File(storageDirectories[nextDirectory++], jobID.toString()); if (nextDirectory >= storageDirectories.length) { nextDirectory = 0; }
// kick off the copying Callable cp; if (entry.blobKey != null) { cp = new CopyFromBlobProcess(entry, jobID, blobService, new Path(tempDirToUse.getAbsolutePath())); } else { ## note: 從hdfs異步拷貝到TM內(nèi)部文件夾 cp = new CopyFromDFSProcess(entry, new Path(tempDirToUse.getAbsolutePath())); } FutureTask copyTask = new FutureTask<>(cp); executorService.submit(copyTask);
// store our entry jobEntries.put(name, copyTask);
return copyTask; } }}
  1. 算子在open函數(shù)中,讀取緩存文件。

org.apache.flink.api.common.cache.DistributedCache#getFile
public File getFile(String name) { // note: Map> distributedCacheEntries Future future = cacheCopyTasks.get(name);
try { final Path path = future.get(); URI tmp = path.makeQualified(path.getFileSystem()).toUri(); return new File(tmp); } catch (ExecutionException e) { throw new RuntimeException("An error occurred while copying the file.", e.getCause()); } catch (Exception e) { throw new RuntimeException("Error while getting the file registered under '" + name + "' from the distributed cache", e); }}
轉(zhuǎn)自:https://www.jianshu.com/p/63eb0d8eb510
瀏覽 46
點(diǎn)贊
評論
收藏
分享

手機(jī)掃一掃分享

分享
舉報
評論
圖片
表情
推薦
點(diǎn)贊
評論
收藏
分享

手機(jī)掃一掃分享

分享
舉報

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 五十路熟妇| A级片免费看| 日韩www| 欧美黄色片在线观看| 亚州免费视频| 91ccc| 韩国无码成人电影啊荒| 亚洲都市激情| 亚洲欧美在线观看| 欧美亚韩一区二区三区| 少妇bbw搡bbbb搡bbbb| 人妻人人妻| 免费成人黄色| 国产一级a毛一级a毛视频在线网站| 欧美av| 免费观看一区| 日本家庭乱伦视频| 亚洲AV无码成人精品涩涩麻豆| 国模一区二区三区| 午夜性爽视频男人的天堂| 俺来也俺去也www色官网| 动漫av网站| 欧美性BBwBBwBBwHD| 中文字幕精品在线| 特级欧美AAAAAA| 亚洲黄色小电影| 夜夜夜操操操| 综合玖玖| 亚洲性夜夜天天天天天天| 久青草视频| 欧美性网| 日韩无码AV电影| 99久久久国产精品无码| 波多野结衣无码高清视频| 无码水蜜桃一区二区| 黑人一区二区三区四区| 天天夜夜久久| 98色色| 人人草在线视频| 天堂а√在线中文在线新版| 欧美av| 蜜桃传媒在线播放| 蝌蚪窝在线视频观看| 久色伊人| 亚洲精品国产成人AV在线| 欧美性猛交ⅩXXX乱大交| 亚洲AV影院| 俺来也网| A片免费在线| 西西444WWW无码大胆知乎| a片视频免费观看| 亚洲综合区| 超碰9| 国产午夜成人福利在线| 黑人Av| 亚洲成人天堂| 久久综合热| 免费视频二区| www.激情五月天| 在线天堂AV| 国产凹凸视频| 免费看操片| 再深点好爽灬轻点久久国产| 欧美日韩国产在线| 九九操比| 2025最新国产精品每日更新| 狠狠干综合| 国产精品毛片久久久久久久| 黄页网站免费在线观看| 91女人18片女毛片60分钟| 激情一一区二区三区| 亚洲乱伦网| 苍井空无码| 无码免费毛片一区二区三区古代 | 另类性爱视频| 国产精品V日韩精品V在线观看| 久久一区二区三区四区| 日韩成人视频在线观看| 性无码专区| 538在线视频| 黄色A片视频| 夜夜骚av一区二区三区| 欧美色图在线视频| 日逼视频免费看| 欧美成人网站在线观看| 日本黄色电影网站| 欧美激情网| 日逼片| 午夜福利干B在线免费小视频 | 有免费的欧美操逼视频吗| 成年人观看视频| 岛国AV免费看| 国产乱国产乱300精品| 婷婷五月天国产| 亚洲专区中文字幕| 2025av天堂| 久久五月亭亭| 丝袜诱惑AV| 中文字幕在线免费看| 精品黄片| 一本色道久久综合亚洲精品小说| 一区二区成人电影| 91av免费| 国产91网| 免费的一级片| 蜜臀久久99精品久久久| 操美女视频网站| 69av在线观看视频| 91丨九色丨熟女新版| 婷婷中文网| 中文字幕不卡无码| 精品成人在线| 亚洲精品国产AV| 亚洲综合色婷婷| 日本黄色免费视频| 三洞齐开Av在线免费观看| 亚洲搞清视频日本| 成年人性生活免费视频| jizzjizzjizzjizz| 久久精品视频在线| 无码在线免费观看视频| 亚洲操B| 麻豆一区二区三区| 国产小视频在线观看| 你懂的在线观看视频| 操屄在线观看| 激情五月婷婷综合| 成人视频你懂的| 婷婷在线影院| 久久久无码电影| AAA亚洲| 四虎亚洲| 狠狠撸天天日| 啪啪视频国产| 久久久久久黄片| 九九成人精品| jizz久久| 欧美伦妇AAAAAA片| 夜夜骑夜夜撸| 欧美久久久久久久| 无码一区二区久久| 天堂а√在线中文在线新版| 狼友无码| 国产永久免费| 久久五月婷| 奇米色色| AV天堂影视在线观看| 国产毛片久久久久久国产毛片| 日本欧洲三级| 干少妇视频| 国产婬片lA片www777| 蜜桃人妻无码AV天堂三区| 一个人看的www日本高清视频| 久久久五月| 在线日韩AV| 999这里只有精品| 国产AV黄| 2025中文字幕在线| 亚洲区一| 国产精品93333333| 亚洲视频国产| 伊人久久影院| 国产精品福利在线观看| 国产性交网站| 高清色视频| AV大片免费看| 熟女少妇一区二区| AV福利在线观看| 操少妇逼| 午夜福利亚洲| 午夜精东影业果冻传媒| 欧美爆操视频| 亚洲伦理一区二区| 国产91无码精品秘入口| 中文字幕第11页| 亚洲欧美高清| 人人澡人人爱| 中文字幕免费在线| 亚洲中文字幕av天堂| 日本一级黄色电影网| 日本wwwwww| 国产AV无码专区| www.日本黄色视频| 色丁香五月婷婷| 成人A片免费| 先锋av资源| AV电影在线观看| 欧美三级片在线播放| 天天色免费视频| 国产女人18毛片水真多18| 中文字幕东京热| 日本成人电影一区二区三区| 亚洲高清无码视频在线| 成人无码动漫A片| 婷婷六月天| 久久夜色视频网| 囯产一级黄片| 亚洲AV无码成人精品一区| 大地资源38页| 国产成人av在线| 欧亚毛片| 国产成人无码毛片| 精品一区二区三区四区学生| 国产成人无码精品| 水蜜桃在线观看视频| 一区二区三区四区五区在线| 色骚爽大香蕉91| 色婷婷电影网| 日韩无码黄| 黄色视频免费播放| 黄片AAA| 国产一卡二卡| 国产精品黑人ThePorn| 天天舔天天射| 很很干在线视频| 日韩人妻无码一区二区| 伊人久久大香蕉国产| 三级乱伦视频| 综合激情AV| 激情av在线| 激情五月综合网| 亚洲AV在线看| 年轻女教师高潮2| 国产操逼大全| 四虎黄色网址| 亚州AV操屄| 日韩AV免费在线播放| 青青草乱伦视频| 人妻中文在线| 蜜柚AV| 国产亚洲色情| 亚洲无| 日本成人无码| 日韩AV电影在线观看| 成人肏逼视频在线| 免费黄视频在线观看| 狠狠躁日日躁夜夜躁2022麻豆| 婷婷五月天亚洲| 午夜操逼| 黄色电影地址| 狠狠操天天干| yw·163.爆乳尤物com| 亚洲第一中文字幕网| 不卡无码免费视频| 福利视频一区二区| 久久久久久亚洲AV无码专区| 欧美日韩有码视频网址大全| 国产海角视频| 中文在线а√天堂8| 怡春院视频| 豆花视频logo进入官网| 天堂无码| 亚洲一二三四区| 国产精品粉嫩福利在线| 欧美在线中文字幕| 狼人综合影院| H片免费在线观看| 日韩精品一二三区| 91激情在线| 国产一级网站| 麻豆视频一区| 人妻夜夜爽天天爽三区麻豆AV网站| 国产欧美在线免费观看| 亚洲日韩欧美中在线| 国产三级电影在线观看| 俺来也官网欧美久久精品| 午夜无码福利在线观看| 深夜福利网| 99在线免费观看视频| 免费黄色小视频在线观看| 久久精品999| 亚洲影院在线观看| 国内自拍激情视频| 五月天婷婷黄色| 91久久久久久久| 色秘乱码一区二区三区| 婷婷深爱激情| 国产情侣在线视频| 成人黄色网| 日本无码成人片在线播放| 国产一级二级在线观看| 婷婷五月天在线观看| 国产又粗又大又爽| 91人妻人人澡人人澡人人精品 | 午夜福利电影AV| 日韩一级大片| 日本一节片在线播放| 天天草视频| 欧美一级婬片AAAA毛片| 加勒比无码人妻| 国产三级精品三级在线观看 | 99高清无码| 国产AV大全| 能看毛片的网站| 有码一区二区三区| 91久久| 亚洲成人精品AV| 色婷婷一级A片AAA毛片| 人人肏肏人人| 69久久久久| 日韩欧美成人电影| 欧美成人福利视频| 一区二区三区免费在线观看| 91AV电影| 一级a免费| 国产学生妹在线播放| 另类老妇性BBBWBBW| 日韩日韩日韩| 中文字幕亚洲在线观看| 男人的天堂视频在线观看| 欧美午夜黄片| 欧美狠狠干| 久干妞| 亚洲黄色录像| 中国毛片网站| 亚久久| 一区在线视频| 国产乱╳╳AⅤ毛片| 亚洲AV无码一区| 小早川怜子精品一区二区| 日韩中文字幕无码中字字幕 | 国产精品久久久久久久久久久免费看 | 日日爱av| 天天色情| 麻豆国产成人AV一区二区三区| 丁香五月情| 爽好紧别夹喷水欧美| 国产av日韩av| 大荫蒂HD大荫蒂视频| 成年人免费黄色视频| Japanese在线观看| 欧美成人图片视频在线| 97大香蕉在线视频| 国产黄色网| 激情五月天激情网| 一区日韩| 国产欧美在线免费观看| 日本高清无码视频| 日本黄色视频官网| 最新国产精品| 蜜桃一区二区中午字幕| 影音先锋男人资源网| 中文字幕视频在线| 国产精品国产三级国产| 亚洲精品中文字幕无码| 欧美精品在线免费观看| 91女人18片女毛片60分钟| 国内自拍2025| 国产精品无码专区AV免费播放| 激情淫荡少妇| 国产农村妇女精品一二区| 日本Sm/调教/捆绑/紧缚| 亚洲av网站在线观看| 91免费看| 一级Av| 黑人大香蕉| 成年人免费看视频| 天堂在线中文| 天堂综合网久久| 免费在线看黄色| 亚洲日韩中文字幕无码| 18久久| 国产在线一二三| 亚洲视频高清无码| 蜜桃影视| 亚洲天堂AV网| 亚洲AV无码成人网站国产网站 | 人妻骚逼| 乱伦小说五月天| 久久久久综合| 日日爱av| 人妻av在线| 欧美AAA黄片| 男女啪啪免费网站| 无码精品在线观看| 俺去夜| 99久久丫e6| 天天艹逼| 亚洲一卡二卡三卡四卡免| 97国产视频| 美女靠逼视频| 一区二区三区精品| 一级爱爱爱| 日AV在线无| 欧美色视频一区二区三区在线观看| 亚洲无码门| 爆乳一区二区三区| 国产浮力草草| 北条麻妃人妻中文字幕91影视 | 久久久久久久久久久久高清毛片一级 | 日韩黄色三级| 午夜av免费| 淫淫五月天| 99视频自拍| 天天爽| 黄色大片在线播放| 国产成人精品在线观看| 操B电影| 日韩大香蕉| 日韩中文字幕无码中字字幕 | 亚洲女人天堂| 91麻豆免费视频| 黄色电影免费网站| 91精品国产综合久久久蜜臀主演| 不卡精品| 国产精品秘麻豆免费版现看视频| 欧美韩日一区二区| 欧美性爱综合网| 青青草逼视频| 看国产AA免费| 男人日女人视频| 蝌蚪窝视频网| 成人午夜毛片| 91高潮久久久久久久| 国产在线观看免费视频| 在线观看视频无码| 综合站欧美精品| 99国产精品99久久久久久粉嫩 | 国产精品不卡在线| 特黄AAAAAAAA片视频| 亚洲无码视频免费| 日逼无码视频| 麻豆91精品人妻成人无码| 国产亚洲99久久精品熟女| 天天操天天日天天干| 可以在线观看的AV| 波多野结衣无码NET,AV| 国产又爽又黄免费视频免费| 欧美不卡在线观看| 欧美成人一区二区| 一区久久| 青青草国产在线视频| 五月丁香成人网| 日本黄色片视频| 成人福利视频| 在线毛片网站| 伊人网导航| 女人天堂av| 色香蕉影院| 国产精品久久久一区二区三区 | 欧美日韩国产成人在线| 无码任你操| 97在线超碰| 大香蕉在8线| 久久久久久国产免费A片| 永久免费看片视频| 黄色一级小说| 高清免费无码| 中文字幕乱码中文字幕电视剧| 午夜福利免费在线观看| 亚洲国产高清视频| a免费在线观看| 欧美精产国品一| 亚洲AV高清无码| 天堂在线观看av| 精品人妻一区二区三区四区 | 午夜成人无码视频| 亚洲av影院| 亚洲色偷精品一区二区三区| 少妇AAA级久久久无码精品片| 天天视频黄| BBB搡BBB搡BBB搡BBB| 91天天综合在线| 无码精品人妻一区二区三刘亦菲| 欧美成人无码一区二区三区| 婷婷深爱五月丁香网| 免费无码毛片一区二区A片| 天天日日天天| 婷婷无码在线| 米奇色色色| 波多野结衣黄色| 亚洲激情视频在线观看| 在线观看中文字幕无码| 亚洲第一黄色| www.天天射| 少婦揉BBBB揉BBBB揉| 久草黄色电影在线观看| 亚洲视频免费在线| 嫩BBB槡BBBB槡BBBB百度| a色视频| 无码精品人妻一区二区三区漫画 | 我要操网站| 欧美成人日韩| 狼友初视频在线观看| 翔田AV无码秘三区| 免费黄色片子| 可以免费观看的AV| 欧美视频在线观看免费| 日韩人妻码一区二区三区| 婷婷激情六月| 中文字幕第一页在线| 337p西西人体大胆瓣开下部| 色综合久久88色综合| 色香蕉视频在线观看| 农村乱子伦毛片国产乱| 黑人一区二区| 亚洲天堂美女| 日本高清无码| 欧美女人操逼| 日韩高清成人无码| 日韩视频免费看| 3D动漫啪啪精品一区二| 超碰性爱| 另类TS人妖一区二区三区| 欧美色视频在线观| 男人的天堂2019| 看肏屄视频| 国内无码视频| 婷婷开心色四房播播在线| 天天艹夜夜艹| 一级特黄录像免费播放下载软件| 911国产视频| 色婷婷在线视频| 豆花视频成人精品视频| 少妇厨房愉情理伦BD在线观看| 无码草| 黄色日逼视频| 中文三级片| 亚洲男人的天堂AV| 欧美婷婷在线| 免费黄色网址啊不卡| 久久午夜无码鲁丝片| a√天堂中文在线8| 成人一级黄色电影| 骚白虎一区| 国产激情在线播放| 可以免费观看的av| 综合伊人大香蕉| 丁香五月一区二区| 最新一区二区| 欧美操逼视频网站| av无码一区二区| 狠狠搞狠狠操| 欧美人妻视频在线| 欧美级毛片一进一出| 欧美肉大捧一进一出小说| 免费成人视频在线观看| 亚洲韩国国产| 激情婷婷五月天| 4438成人网| 亚洲精品久久久久avwww潮水| 伊人成人片| 日韩av中文字幕在线播放| 人妻人人爽| 日韩成人小电影| 一二三区免费视频| 欧美三级网址| 国产精品一级A片| 久久久婷婷| 欧美日韩A| 欧美性爱xxxx| 久操网在线| 国产又粗又长又硬又大毛苴茸图片 | 久久精品一区二区三区不卡牛牛| 久久久久久久AV| 影音先锋成人视频| 性爱无码| 欧美一级免费| 操碰视频在线| 亚欧洲精品在线视频| 亚洲一区二区视频在线观看| 精品人妻中文字幕视频| 黄色在线网站| 四川少扫搡BBw搡BBBB| 在线观看污网站| 国产一级a一片成人AV| 夜夜精品视频| 精品孕妇一级A片免费看| 五月天激情小说| 精品人妻一区二区三区-国产精品| 一级国产欧美成人A片| 丁香五月中文| 怡红院一区二区| av天堂手机网| 成人精品| 亚洲第一福利视频| 国模私拍视频| 在线无码不卡| 日本边摸边吻奶边做爰| 免费看黄色毛片| 色哟哟视频在线观看| 欧洲黑人成人A版免费视频| 操日本老女人| 欧美日韩在线一区| 亚洲美女一区| 男人的天堂手机在线| 91蝌蚪视频在线播放| 在线观看中文字幕亚洲| 国产欧美欧洲| 黄片免费网站| 亚洲综合激情| 三级三级久久三级久久18| 大香蕉久操视频| 337P人体美鮑高清| 男人的天堂青青草| 男女一区二区三区| 人人操天天| 成人伦理聚合| 亚洲三级视频| 精品无码视频| 操逼的网站| 亚洲免费成人网站| 日韩一区二区在线视频| 超碰97av| 国产麻豆精品成人免费视频| 性爱视频99| 97在线免费| 国产激情内射| 欧美成人性爱网址| 成人一级精品| 国产黄色免费看| 爱爱视频免费| 国产XXXXX| 国产婷婷色一区二区三区| 一本久久精品一区二区| 欧美日韩精品一区二区三区视频播放| 日日舔| 久久动态图| 二区三区无码| 91精品国产人妻| 欧美黄片AAA| 九鼎联盟骗子| 无码三级视频| 一级黄色片免费看| 成人视频在线播放| 蜜桃Av噜噜一区二区| 国产福利电影在线观看| 成人肏屄视频| 人人干干| 无码专区在线观看| 国产精品theporn| 亚洲精品18禁| 国产高清a| 九月丁香婷婷| 日韩成人无码电影网站| 黃色毛片A片AAAA级20| 在线91视频| 日韩中文字幕无码人妻| 99久久爱re热6在播放| 狠狠干高清成人二区三区| 亚洲无码天堂| 青娱乐精品| 中文字幕视频| 欧美日韩中文字幕在线观看| 一起操在线观看| 日韩中文字幕AV| 一本道中文字幕| 日韩一级免费毛片| 97成人人妻一区二区三区| 水蜜桃视频免费观看| 国产一级片视频| 麻豆av在线观看| 97三级| 亚洲日韩欧美视频| 女人18片毛片60分钟黃菲菲| 亚洲人妻一区二区| 尤物视频官网| 中文字幕乱码中文字幕| 亚洲成人影片在线观看| 东方AV在线免费观看| 日韩一级二级三级| 国产精品成人无码专区| 国产视频一区二区在线观看| 操逼操123| 色屁屁草草影院ccyycom| 国产操逼的视频| 狠狠操免费视频| 十八禁视频在线观看网站.www| 亚洲欧美影院| 亚洲欧美日韩激情| 成人网站高清无码| 婷婷精品国产一区二区三区日韩| 国产视频不卡| 99亚洲视频| 男人天堂视频在线观看| 在线无码一区二区三区| 欧美黄色录像| 成人在线免费网站| 国产香蕉在线观看| 西西人体大胆ww4444多少集| 亚洲青青草| 特级毛片www| 人妻骚逼| 欧美成人激情| 日本不卡一区二区| 中文字幕成人电影| 91无码人妻一区二区三区| 婷婷激情综合| 国产特級黃色大片| 色婷婷一区二区三区四区五区精品视| 免费成人AV| 99精品视频北条麻妃国产版| 麻豆黄片| 欧美乱欲视频| 日本亚洲精品秘入口A片| 日韩做爱网站| 91视频网站免费观看| 91无码人妻精品1国产四虎| 操逼爽| 熟妇人妻中文| 婷婷深爱五月| 男人的天堂视频网站| 五月丁香花| 97资源超碰| 少妇视频| 国产激情久久| 少妇被躁到高潮无码| 日日夜夜天天操| 国产毛片18水真多18精品| 男人天堂亚洲| 中文字幕乱码中文乱码图片| 尤物网站在线观看| 亚洲先锋影音| 日本无码成人| 亚洲秘无码一区二区三区蜜桃中文| 日韩中文在线视频| 亚洲va国产天堂va久久en| 少妇特黄A一区二区三区| 日本中文在线| 亚洲无码视频在线观看| 国产精品久久久久久久免牛肉蒲| 亚洲精品一线| a片在线免费| 国语一区| 亚洲插菊花综合网| www.97超碰| 精品成人无码| 操屄视频在线观看| 久久青| 无码视频在线播放| 一级艹逼| 欧美乱欲视频| 免费三级怡红院| 91精品国产一区二区三区| 五月天婷婷久久| 99人人操| 国产www在线观看| 黄色三级视频在线观看| 黄色一级视频| 丁香五月一区二区| 国产3p露脸普通话对白| 亚洲AV无码乱码国产精品黑人| 91亚洲精品国偷拍自产在线观看 | 色男天堂| 996热re视频精品视频这里 | 婷婷综合av| 日韩免费成人视频| 在线免费观看无码视频| 亚洲成人AV在线播放| 日日爱爱| 无码视频在线免费观看| 欧美午夜精品久久久| 精品中文一区二区三区| av视屏| 国产高清中文字幕| 91久久精品一区二区三| 成人午夜视频在线观看| 色噜噜狠狠色综无码久久合欧美| 超碰自拍私拍二区三区区| 韩国精品一区| AV老鸭窝| 日韩免费小视频| 黄色AV免费在线观看| 亚洲中文字幕码mv| 口爆在线| 激情无码网站| 嘿咻嘿咻动态图| 99爱精品| 日本特黄AA片免费视频| 久久午夜福利| 久久久国产视频| 国产精品三级在线| 亚洲毛片亚洲毛片亚洲毛片| 嫩草91| 黄片网站在线看| 成人在线一区二区| AV大香蕉| 射射AV| 国产高清a| 日韩中文无| 专区无日本视频高清8| 秋霞中文字幕| 欧美日韩小视频| 丁香五月天在线播放| 免费国产黄色视频网站| 熟女少妇一区二区三区| 日本免费中文字幕| 成人一级精品| 曰韩一级片| 国产精品一区二区三区在线| 亚洲aa| 91色色| 成年无码| 欧美日韩高清一区二区三区| 中文字幕在线有码| 亚洲在线视频| 天天干精品| 99热国产在线观看| 国产精品片| 亚洲综合社区在线| 啊啊啊亚洲| 亚洲va在线| 男女啪啪免费网站| 日本一区二区三区免费看| 久久超碰99| 中文字幕+乱码+中文字幕电视剧 | 五月天福利导航| 人操人人人操| 亚洲大片在线观看| 中文字幕第12页| 日日夜夜精品| 日韩三区在线| 国产精品AV在线观看| 精品人妻一区| 日韩黄在线| 国产1级a毛a毛1级a毛1级| 国产精品日韩无码| 麻豆91麻豆国产传媒| 麻豆传媒一区| 欧美午夜伦理| 欧美三P囗交做爰XXXⅩ| 久久成人三级| 18害羞勿进网站国产| 粉嫩av懂色av蜜臀av分享| 欧美亚洲天堂| 18禁在线看| 日韩无码性爱视频| 国产精品成人无码免费| 久久久人妻无码精品蜜桃| 中文字幕va| 国产又爽又黄免费视频免费| 亚洲熟女一区二区三区妖精| 天天日日日干| 亚洲黄片免费在线观看| 国产无码免费视频| 午夜无码福利视频| 国产黄色视频在线观看免费| 欧美日韩一二三区| 成人无码欧美大片免费看| 五月丁香视频在线观看| 怡红院男人的天堂| 人妻少妇一区二区| 久久肏逼| 岛国av在线播放| 翔田千里无码流出两部| 久久精品波多野结衣| 成人网站av| 中文字幕三级片在线观看| 操亚洲| 99精品免费| 黄色视频一区二区| 天天天日天天天天天天天日歌词| 久久伊人精品| 午夜撸一撸| 国产乱╳╳AⅤ毛片| 大香蕉尹在线| 老鸭窝av免费入口在线观看| 日韩永久免费| 真实国产乱子伦毛片| 免费看AV大片| 欧美日韩中文字幕视频| 人人妻人人色| 日韩无码高清免费视频| 日韩久久高清| 第一福利视频导航| 波多野结衣网| 欧美日韩国产性爱| 麻豆精品久久久久久久99蜜桃| 亚洲中文视频在线| 麻豆md0049免费| 国产熟妇搡BBBB搡BBBB毛片| 黄色草莓视频| 亚洲欧美日本在线观看| 伊人网站| 国产91在线一区| 中文字幕人妻丰满熟妇| 国产中文字幕AV| 人人天天操| 婷婷一区二区| 成人天天爽| 日韩毛片在线播放| 蜜桃黄片AV在线观看| 欧美午夜性爱视频| 青青草激情视频| 爱搞在线观看wwww| 欧美后门菊门交3p| 国内久久| 秋霞理伦| 日韩va中文字幕无码免费| 麻豆精品国产| 久99久视频| 123操逼| 怡红院一区二区| 丰滿人妻一区二区三区| 麻豆91久久久| 超碰免费91| 国产无码免费视频| 91吴梦梦无码一区二区| 免费看黄片,在线观看| 天天摸天天添|