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

DLF +DDI 一站式數據湖構建與分析最佳實踐

開發 數據湖
數據湖作為一個集中化的數據存儲倉庫,支持的數據類型具有多樣性,包括結構化、半結構化以及非結構化的數據,數據來源上包含數據庫數據、binglog 增量數據、日志數據以及已有數倉上的存量數據等。

背景

隨著數據時代的不斷發展,數據量爆發式增長,數據形式也變的更加多樣。傳統數據倉庫模式的成本高、響應慢、格式少等問題日益凸顯。于是擁有成本更低、數據形式更豐富、分析計算更靈活的數據湖應運而生。

數據湖作為一個集中化的數據存儲倉庫,支持的數據類型具有多樣性,包括結構化、半結構化以及非結構化的數據,數據來源上包含數據庫數據、binglog 增量數據、日志數據以及已有數倉上的存量數據等。數據湖能夠將這些不同來源、不同格式的數據集中存儲管理在高性價比的存儲如 OSS 等對象存儲中,并對外提供統一的數據目錄,支持多種計算分析方式,有效解決了企業中面臨的數據孤島問題,同時大大降低了企業存儲和使用數據的成本。

數據湖架構及關鍵技術

企業級數據湖架構如下:

數據湖存儲與格式

數據湖存儲主要以云上對象存儲作為主要介質,其具有低成本、高穩定性、高可擴展性等優點。

數據湖上我們可以采用支持 ACID 的數據湖存儲格式,如 Delta Lake、Hudi、Iceberg。這些數據湖格式有自己的數據 meta 管理能力,能夠支持 Update、Delete 等操作,以批流一體的方式解決了大數據場景下數據實時更新的問題。在當前方案中,我們主要介紹Delta Lake的核心能力和應用場景。

Delta Lake 的核心能力

Delta Lake 是一個統一的數據管理系統,為云上數據湖帶來數據可靠性和快速分析。Delta Lake 運行在現有數據湖之上,并且與 Apache Spark 的 API 完全兼容。使用Delta Lake,您可以加快高質量數據導入數據湖的速度,團隊也可以在云服務上快速使用這些數據,安全且可擴展。

ACID 事務性:Delta Lake 在多個寫操作之間提供 ACID 事務性。每一次寫操作都是一個事務操作,事務日志(Transaction Log)中記錄的寫操作都有一個順序序列。事務日志(Transaction Log)跟蹤了文件級別的寫操作,并使用了樂觀鎖進行并發控制,這非常適用于數據湖,因為嘗試修改相同文件的多次寫操作的情況并不經常發生。當發生沖突時,Delta Lake 會拋出一個并發修改異常,拋給供用戶處理并重試其作業。Delta Lake 還提供了最高級別的隔離(可序列化隔離),允許工程師不斷地向目錄或表寫入數據,而使用者不斷地從同一目錄或表讀取數據,讀取數據時會看到數據的最新快照。

Schema 管理(Schema management):Delta Lake 會自動驗證正在寫入的DataFrame 的 Schema 是否與表的 Schema 兼容。若表中存在但 DataFrame 中不存在的列則會被設置為 null。如果 DataFrame 中有額外的列不在表中,那么該操作將會拋出異常。Delta Lake 具有 DDL(數據定義語言)顯式添加新列的功能,并且能夠自動更新 Schema。

可伸縮的元數據(Metadata)處理:Delta Lake 將表或目錄的元數據信息存儲在事務日志(Transaction Log)中,而不是元數據 Metastore 中。這使得 Delta Lake夠在固定時間內列出大目錄中的文件,并且在讀取數據時效率很高。

數據版本控制和時間旅行(Time Travel):Delta Lake 允許用戶讀取表或目錄的歷史版本快照。當文件在寫入過程中被修改時,Delta Lake 會創建文件的新的版本并保留舊版本。當用戶想要讀取表或目錄的較舊版本時,他們可以向 Apach Spark的 read API 提供時間戳或版本號,Delta Lake 根據事務日志(Transaction Log)中的信息來構建該時間戳或版本的完整快照。這非常方便用戶來復現實驗和報告,如果需要,還可以將表還原為舊版本。
統一批流一體:除了批處理寫入之外,Delta Lake 還可以作為 Apache Spark 的結構化流的高效流接收器(Streaming Sink)。與 ACID 事務和可伸縮元數據處理相結合,高效的流接收器(Streaming Sink)支持大量近實時的分析用例,而無需維護復雜的流和批處理管道。

記錄更新和刪除:Delta Lake 將支持合并、更新和刪除的 DML(數據管理語言)命令。這使得工程師可以輕松地在數據湖中插入和刪除記錄,并簡化他們的變更數據捕獲和 GDPR(一般數據保護條例)用例。由于 Delta Lake 在文件級粒度上進行跟蹤和修改數據,因此它比讀取和覆蓋整個分區或表要高效得多。

數據湖構建與管理

1. 數據入湖

企業的原始數據存在于多種數據庫或存儲系統,如關系數據庫 MySQL、日志系統SLS、NoSQL 存儲 HBase、消息數據庫 Kafka 等。其中大部分的在線存儲都面向在線事務型業務,并不適合在線分析的場景,所以需要將數據以無侵入的方式同步至成本更低且更適合計算分析的對象存儲。

常用的數據同步方式有基于 DataX、Sqoop 等數據同步工具做批量同步;同時在對于實時性要求較高的場景下,配合使用 Kafka+spark Streaming / flink 等流式同步鏈路。目前很多云廠商提供了一站式入湖的解決方案,幫助客戶以更快捷更低成本的方式實現數據入湖,如阿里云 DLF 數據入湖。

2. 統一元數據服務

對象存儲本身是沒有面向大數據分析的語義的,需要結合 Hive Metastore Service 等元數據服務為上層各種分析引擎提供數據的 Meta 信息。數據湖元數據服務的設計目標是能夠在大數據引擎、存儲多樣性的環境下,構建不同存儲系統、格式和不同計算引擎統一元數據視圖,并具備統一的權限、元數據,且需要兼容和擴展開源大數據生態元數據服務,支持自動獲取元數據,并達到一次管理多次使用的目的,這樣既能夠兼容開源生態,也具備極大的易用性。

數據湖計算與分析

相比于數據倉庫,數據湖以更開放的方式對接多種不同的計算引擎,如傳統開源大數據計算引擎 Hive、Spark、Presto、Flink 等,同時也支持云廠商自研的大數據引擎,如阿里云 MaxCompute、Hologres 等。在數據湖存儲與計算引擎之間,一般還會提供數據湖加速的服務,以提高計算分析的性能,同時減少帶寬的成本和壓力。

Databricks 數據洞察-商業版的 Spark 數據計算與分析引擎

DataBricks 數據洞察(DDI)做為阿里云上全托管的 Spark 分析引擎,能夠簡單快速幫助用戶對數據湖的數據進行計算與分析。

Saas 全托管 Spark:免運維,無需關注底層資源情況,降低運維成本,聚焦分析業務
完整 Spark 技術棧集成:一站式集成 Spark 引擎和 Delta Lake 數據湖,100%兼容開源 Spark 社區版;Databricks 做商業支持,最快體驗 Spark 最新版本特性
總成本降低:商業版本 Spark 及 Delta Lake 性能優勢顯著;同時基于計算存儲分離架構,存儲依托阿里云 OSS 對象存儲,借助阿里云 JindoFS 緩存層加速;能夠有效降低集群總體使用成本
高品質支持以及 SLA 保障:阿里云和 Databricks 提供覆蓋 Spark 全棧的技術支持;提供商業化 SLA 保障與7*24小時 Databricks 專家支持服務

Databricks 數據洞察+ DLF 數據湖構建與流批一體分析實踐

企業構建和應用數據湖一般需要經歷數據入湖、數據湖存儲與管理、數據湖探索與分析等幾個過程。本文主要介紹基于阿里云數據湖構建(DLF)+Databricks 數據洞察(DDI)構建一站式的數據入湖,批流一體數據分析實戰。

流處理場景:

實時場景維護更新兩張 Delta 表:

delta_aggregates_func 表:RDS 數據實時入湖 。
delta_aggregates_metrics 表:工業 metric 數據通過 IoT 平臺采集到云 Kafka ,經由 Spark Structured Streaming 實時入湖。

批處理場景:

以實時場景生成兩張 Delta 作為數據源,進行數據分析執行 Spark jobs,通過 Databrick 數據洞察作業調度定時執行。

前置條件

1. 服務開通

確保 DLF、OSS、Kafka、DDI、RDS、DTS 等云產品服務已開通。注意 DLF、RDS、Kafka、DDI 實例均需在同一 Region 下。

2. RDS 數據準備

RDS 數據準備,在 RDS 中創建數據庫 dlfdb。在賬戶中心創建能夠讀取 engine_funcs數據庫的用戶賬號,如 dlf_admin。

通過 DMS 登錄數據庫,運行一下語句創建 engine_funcs 表,及插入少量數據。

  1. CREATE TABLE `engine_funcs` (  `emp_no` int(11) NOT NULL,  `engine_serial_number` varchar(20) NOT NULL,  `engine_serial_name` varchar(20) NOT NULL,  `target_engine_serial_number` varchar(20) NOT NULL,  `target_engine_serial_name` varchar(20) NOT NULL,  `operator` varchar(16) NOT NULL,  `create_time` DATETIME NOT NULL,  `update_time` DATETIME NOT NULL,  PRIMARY KEY (`emp_no`)) ENGINE=InnoDB DEFAULT CHARSET=utf8INSERT INTO `engine_funcs` VALUES (10001,'1107108133','temperature','1107108144','temperature','/', now(), now());INSERT INTO `engine_funcs` VALUES (10002,'1107108155','temperature','1107108133','temperature','/', now(), now());INSERT INTO `engine_funcs` VALUES (10003,'1107108155','runTime','1107108166','speed','/', now(), now());INSERT INTO `engine_funcs` VALUES (10004,'1107108177','pressure','1107108155','electricity','/', now(), now());INSERT INTO `engine_funcs` VALUES (10005,'1107108188','flow' ,'1107108111','runTime','/', now(), now()); 

RDS數據實時入湖

1. 創建數據源

進入 DLF 控制臺界面:https://dlf.console.aliyun.com/cn-hangzhou/home,點擊菜單 數據入湖 -> 數據源管理。
點擊 新建數據源。填寫連接名稱,選擇數據準備中的使用的 RDS 實例,填寫賬號密碼,點擊“連接測試”驗證網絡連通性及賬號可用性。

點擊下一步,確定,完成數據源創建。

2. 創建元數據庫

在 OSS 中新建 Bucket,databricks-data-source;

點擊左側菜單“元數據管理”->“元數據庫”,點擊“新建元數據庫”。填寫名稱,新建目錄 dlf/,并選擇。

3. 創建入湖任務

點擊菜單“數據入湖”->“入湖任務管理”,點擊“新建入湖任務”。
選擇“關系數據庫實時入湖”,按照下圖的信息填寫數據源、目標數據湖、任務配置等信息。并保存。
配置數據源,選擇剛才新建的“dlf”連接,使用表路徑 “dlf/engine_funcs”,選擇新建 dts 訂閱,填寫名稱。

回到任務管理頁面,點擊“運行”新建的入湖任務。就會看到任務進入“初始化中”狀態,隨后會進入“運行”狀態。
點擊“詳情”進入任務詳情頁,可以看到相應的數據庫表信息。

該數據入湖任務,屬于全量+增量入湖,大約3至5分鐘后,全量數據會完成導入,隨后自動進入實時監聽狀態。如果有數據更新,則會自動更新至 Delta Lake 數據中。

數據湖探索與分析

DLF 數據查詢探索

DLF 產品提供了輕量級的數據預覽和探索功能,點擊菜單“數據探索”->“SQL 查詢”進入數據查詢頁面。

在元數據庫表中,找到“fjl_dlf”,展開后可以看到 engine_funcs_delta 表已經自動創建完成。雙擊該表名稱,右側 sql 編輯框會出現查詢該表的 sql 語句,點擊“運行”,即可獲得數據查詢結果。

回到 DMS 控制臺,運行下方 DELETE 和 INSERT SQL 語句。

  1. DELETE FROM `engine_funcs` where `emp_no` = 10001;UPDATE `engine_funcs` SET `operator` = '+', `update_time` = NOW() WHERE `emp_no` =10002;INSERT INTO `engine_funcs` VALUES (20001,'1107108199','speed','1107108122','runTime','*', now(), now()); 

大約1至3分鐘后,在 DLF 數據探索再次執行剛才的 select 語句,所有的數據更新已經同步至數據湖中。

創建 Databricks 數據洞察(DDI)集群

集群創建完成后,點擊“詳情”進入詳情頁,添加當前訪問機器 ip 白名單。

點擊 Notebook 進入交互式分析頁查詢同步至 Delta Lake 中 engine_funcs_delta 表數據。

IoT 平臺采集到云 Kafka 數據實時寫入 Delta Lake

1.引入 spark-sql-kafka 三方依賴

  1. %spark.confspark.jars.packages org.apache.spark:spark-sql-kafka-0-10_2.12:3.0.1 

2.使用 UDF 函數定義流數據寫入 Delta Lake 的 Merge 規則

發往 Kafka 的測試數據的格式:

  1. {"sn""1107108111","temperature""12" ,"speed":"1115""runTime":"160","pressure":"210","electricity":"380","flow":"740","dia":"330"}{"sn""1107108122","temperature""13" ,"speed":"1015""runTime":"150","pressure":"220","electricity":"390","flow":"787","dia":"340"}{"sn""1107108133","temperature""14" ,"speed":"1215""runTime":"140","pressure":"230","electricity":"377","flow":"777","dia":"345"}{"sn""1107108144","temperature""15" ,"speed":"1315""runTime":"145","pressure":"240","electricity":"367","flow":"730","dia":"430"}{"sn""1107108155","temperature""16" ,"speed":"1415""runTime":"155","pressure":"250","electricity":"383","flow":"750","dia":"345"}{"sn""1107108166","temperature""10" ,"speed":"1515""runTime":"145","pressure":"260","electricity":"350","flow":"734","dia":"365"}{"sn""1107108177","temperature""12" ,"speed":"1115""runTime":"160","pressure":"210","electricity":"377","flow":"733","dia":"330"}{"sn""1107108188","temperature""13" ,"speed":"1015""runTime":"150","pressure":"220","electricity":"381","flow":"737","dia":"340"}{"sn""1107108199","temperature""14" ,"speed":"1215""runTime":"140","pressure":"230","electricity":"378","flow":"747","dia":"345"
  1. %sparkimport org.apache.spark.sql._import io.delta.tables._def upsertToDelta(microBatchOutputDF: DataFrame, batchId: Long) { microBatchOutputDF.createOrReplaceTempView("dataStream") // 對流數據DF執行列轉行的操作; val df=microBatchOutputDF.sparkSession.sql(s""" select `sn`, stack(7, 'temperature', `temperature`, 'speed', `speed`, 'runTime', `runTime`, 'pressure', `pressure`, 'electricity', `electricity`, 'flow', `flow` , 'dia', `dia`) as (`name`, `value` ) from dataStream """) df.createOrReplaceTempView("updates") // 實現實時更新動態的數據,結果merge到表里面 val mergedf=df.sparkSession.sql(s""" MERGE INTO delta_aggregates_metrics t USING updates s ON s.sn = t.sn and s.name=t.name WHEN MATCHED THEN UPDATE SET t.value = s.value, t.update_time=current_timestamp() WHEN NOT MATCHED THEN INSERT (t.sn,t.name,t.value ,t.create_time,t.update_time) values (s.sn,s.name,s.value,current_timestamp(),current_timestamp()) """)} 

3.使用 Spark Structured Streaming 實時流寫入 Delta Lake

  1. %sparkimport org.apache.spark.sql.functions._import org.apache.spark.sql.streaming.Triggerdef getquery(checkpoint_dir:String,servers:String,topic:String ){    var streamingInputDF =    spark.readStream    .format("kafka")    .option("kafka.bootstrap.servers", servers)    .option("subscribe", topic)         .option("startingOffsets""latest")      .option("minPartitions""10")      .option("failOnDataLoss""true")    .load()var streamingSelectDF =   streamingInputDF   .select(    get_json_object(($"value").cast("string"), "$.sn").alias("sn"),   get_json_object(($"value").cast("string"), "$.temperature").alias("temperature"),   get_json_object(($"value").cast("string"), "$.speed").alias("speed"),   get_json_object(($"value").cast("string"), "$.runTime").alias("runTime"),   get_json_object(($"value").cast("string"), "$.electricity").alias("electricity"),   get_json_object(($"value").cast("string"), "$.flow").alias("flow"),   get_json_object(($"value").cast("string"), "$.dia").alias("dia"),   get_json_object(($"value").cast("string"), "$.pressure").alias("pressure")   )val query = streamingSelectDF      .writeStream      .format("delta")      .option("checkpointLocation", checkpoint_dir)      .trigger(Trigger.ProcessingTime("5 seconds")) // 執行流處理時間間隔      .foreachBatch(upsertToDelta _) //引用upsertToDelta函數      .outputMode("update")      .start()} 

4. 執行程序

  1. %sparkval my_checkpoint_dir="oss://databricks-data-source/checkpoint/ck"val servers= "***.***.***.***:9092"val topic= "your-topic"getquery(my_checkpoint_dir,servers,topic) 

5. 啟動 Kafka 并向生產里發送測試數據

查詢數據實時寫入并更新

查詢從 MySQL 實時同步入湖的 engine_funcs_delta 數據

  1. %sparkval rds_dataV=spark.table("fjl_dlf.engine_funcs_delta")rds_dataV.show() 

批處理作業

結合業務,需要將對應的 delta_aggregates_metrics 里的 Value 參數 join 到engine_funcs_delta 表里

  1. %spark//讀取實時更新的delta_aggregates_metrics數據表val aggregateDF=spark.table("log_data_warehouse_dlf.delta_aggregates_metrics")//讀取實時更新的engine_funcs_delta函數表val rds_dataV=spark.table("fjl_dlf.engine_funcs_delta").drop("create_time","update_time")// rds_dataV.show()val aggregateSDF= aggregateDF.withColumnRenamed("value","esn_value").withColumnRenamed("name","engine_serial_name").withColumnRenamed("sn","engine_serial_number")// aggregateSDF.show()val aggregateTDF=aggregateDF.withColumnRenamed("value","tesn_value").withColumnRenamed("name","target_engine_serial_name").withColumnRenamed("sn","target_engine_serial_number").drop("create_time","update_time")// aggregateTDF.show()//將對應的delta_aggregates_metrics里的Value參數 join到engine_funcs_delta表里;val  resdf=rds_dataV.join(aggregateSDF,Seq("engine_serial_name","engine_serial_number"),"left").join(aggregateTDF,Seq("target_engine_serial_number","target_engine_serial_name"),"left")            .selectExpr("engine_serial_number","engine_serial_name","esn_value","target_engine_serial_number","target_engine_serial_name","tesn_value","operator","create_time","update_time")//數據展示resdf.show(false)// 將結果寫入到Delta表里面resdf.write.format("delta")    .mode("append")    .saveAsTable("log_data_warehouse_dlf.delta_result"

性能優化:OPTIMIZE & Z-Ordering

在流處理場景下會產生大量的小文件,大量小文件的存在會嚴重影響數據系統的讀性能。Delta Lake 提供了 OPTIMIZE 命令,可以將小文件進行合并壓縮,另外,針對 Ad-Hoc 查詢場景,由于涉及對單表多個維度數據的查詢,我們借助 Delta Lake 提供的 Z-Ordering 機制,可以有效提升查詢的性能。從而極大提升讀取表的性能。DeltaLake 本身提供了 Auto Optimize 選項,但是會犧牲少量寫性能,增加數據寫入 delta 表的延遲。相反,執行 OPTIMIZE 命令并不會影響寫的性能,因為 Delta Lake 本身支持 MVCC,支持 OPTIMIZE 的同時并發執行寫操作。因此,我們采用定期觸發執行 OPTIMIZE 的方案,每小時通過 OPTIMIZE 做一次合并小文件操作,同時執行 VACCUM 來清理過期數據文件:

  1. OPTIMIZE log_data_warehouse_dlf.delta_result ZORDER by engine_serial_number;VACUUM log_data_warehouse_dlf.delta_result RETAIN 1 HOURS; 

 

責任編輯:梁菲 來源: 阿里云云棲號
相關推薦

2022-12-23 09:04:33

字節跳動數據治理架構

2022-06-16 11:18:45

實踐構建開發

2021-12-07 10:04:34

Azure Kuber場景應用

2013-10-24 17:35:01

云網絡H3C電子政務

2023-03-27 21:24:18

架構數據處理分析服務

2017-02-23 16:07:59

網易

2024-08-19 09:05:00

Seata分布式事務

2021-07-27 16:02:40

云原生數據庫阿里云

2024-05-28 07:58:08

2023-10-30 09:01:08

Nginx日志分析

2023-10-26 06:59:58

FinOps云原生

2022-09-16 11:27:46

建設微服務

2017-05-04 21:30:32

前端異常監控捕獲方案

2009-07-30 21:16:29

布線服務電纜架設

2009-10-23 09:42:24

2014-01-13 09:00:54

PythonDjango

2010-05-06 16:02:26

2011-06-21 14:35:27

2012-04-09 17:36:38

華為智真

2009-07-27 11:37:04

網絡拓撲摩卡
點贊
收藏

51CTO技術棧公眾號

国产麻豆一区二区三区精品视频| 好吊日视频在线观看| 国产欧美大片| 在线免费观看羞羞视频一区二区| www.com黄色片| 菠萝蜜视频国产在线播放| 高清在线观看日韩| 日韩av电影手机在线观看| 日本裸体美女视频| 国产亚洲精品美女久久| 在线观看精品一区| 337p亚洲精品色噜噜狠狠p| 亚洲欧美自偷自拍| 国产一区二区日韩精品| 欧美专区第一页| 老湿机69福利| 郴州新闻综合频道在线直播| 精品1区2区在线观看| 国产免费人做人爱午夜视频| 中文字幕中文字幕在线中高清免费版| 久久综合色鬼综合色| 91久久精品国产91久久| 国产无套丰满白嫩对白| 亚洲影视一区| 中文字幕少妇一区二区三区| 国产精品手机在线观看| 亚洲精品aaa| 色诱视频网站一区| 男人添女荫道口图片| 日本中文字幕伦在线观看| 99久久免费视频.com| 亚洲最大福利网| 日韩精品成人免费观看视频| 欧美三级在线| 久久网福利资源网站| 亚洲成人网在线播放| 国产女人18毛片水真多18精品| 欧美日韩另类一区| 91蝌蚪视频在线观看| 狼人综合视频| 精品高清一区二区三区| 肉大捧一出免费观看网站在线播放 | 国产全是老熟女太爽了| 老牛精品亚洲成av人片| 日韩精品一区二区三区三区免费 | 欧美片网站免费| 精品视频1区2区| 九热视频在线观看| 香蕉成人影院| 欧美日韩在线播放三区四区| 国产成人手机视频| 五月激情久久| 欧洲一区在线电影| 成人一区二区三| 欧美成人黑人| 91福利区一区二区三区| 国模杨依粉嫩蝴蝶150p| 久久久一本精品| 在线日韩av片| 激情视频免费网站| 亚洲综合视频| 日韩视频免费观看高清完整版| 成年人网站av| 18国产精品| 欧美精品一区男女天堂| 黄色免费视频网站| 九一成人免费视频| 伊人成人开心激情综合网| 亚洲综合第一区| 国产精品黑丝在线播放 | 亚洲午夜在线观看| 成人免费网站在线观看视频| 亚洲精品国产精华液| 久艹在线免费观看| 香蕉伊大人中文在线观看| 狠狠躁夜夜躁人人躁婷婷91| 成人黄色一区二区| 亚洲欧美一级| 欧美成人乱码一区二区三区| 制服丝袜第一页在线观看| 天堂av一区二区三区在线播放| 亚洲欧美日韩久久久久久| 男人操女人动态图| 国产大片一区| 国产69精品久久久| 日韩黄色一级视频| 国产精品亚洲综合一区在线观看| 国产精品 日韩| 国产中文在线视频| 亚洲精品欧美在线| 国产亚洲欧美在线视频| 欧美国产视频| 亚洲精品久久久久久久久| 国产一二三四五区| 一本一本久久a久久综合精品| 国自产精品手机在线观看视频| 国产精品视频久久久久久久| 老汉av免费一区二区三区| 91网免费观看| 国产免费a∨片在线观看不卡| 中文字幕在线观看不卡视频| 欧美一级片免费播放| 成人免费黄色| 亚洲精品国偷自产在线99热| 秋霞欧美一区二区三区视频免费| 亚洲久久成人| 成人免费视频a| 亚洲aaa在线观看| 综合久久一区二区三区| 日韩av一二三四区| 玖玖玖电影综合影院| 亚洲女人天堂视频| 久久久久成人片免费观看蜜芽| 老司机精品福利视频| 岛国一区二区三区高清视频| 色大18成网站www在线观看| 亚洲成人资源网| 污污的视频免费观看| 欧美极品中文字幕| 久久久综合免费视频| 国产精品欧美综合亚洲| 久久婷婷综合激情| 日韩黄色片在线| 日韩一区二区三免费高清在线观看| 日韩国产中文字幕| 久久久久久久国产视频| 精品在线免费视频| 色女人综合av| free欧美| 亚洲欧美国产一区二区三区| 99久在线精品99re8热| 国产凹凸在线观看一区二区| 免费看啪啪网站| 91大神在线观看线路一区| 日韩精品免费综合视频在线播放| 久久免费公开视频| 国产精品99久久久久久有的能看| 亚洲午夜精品久久久久久浪潮| 韩国精品主播一区二区在线观看 | 日本欧美一区二区| 欧美激情第六页| 伊人成综合网站| 日韩精品视频中文在线观看| 欧美成人aaaaⅴ片在线看| 国产麻豆午夜三级精品| 亚洲欧美日韩不卡| 日韩一级视频| 久久在线免费观看视频| 国产免费一区二区三区最新不卡| 国产精品久久三| 国产成年人视频网站| 国产精品国产一区| 91在线中文字幕| 在线āv视频| 精品蜜桃在线看| 夜夜春亚洲嫩草影视日日摸夜夜添夜| 一区二区三区四区视频在线| 丰满肉肉bbwwbbww| 久久综合狠狠综合久久综合88| 欧美深夜福利视频| 五月综合久久| 国产精品成av人在线视午夜片 | 中文字幕在线播放不卡| 国产精品88888| 少妇人妻在线视频| 国产中文字幕一区二区三区 | 亚洲国产精品久久久久婷蜜芽| 美国成人xxx| 欧美洲成人男女午夜视频| 国产免费av在线| 宅男在线国产精品| 九九视频在线免费观看| 成人av免费在线| 激情网站五月天| 日韩电影免费在线观看| 亚洲a级在线播放观看| 男男gaygays亚洲| 亚洲精品永久免费| 亚洲图片小说视频| 一区二区三区91| 丝袜美腿中文字幕| 久久久青草婷婷精品综合日韩| 亚洲黄色成人久久久| 久久丁香四色| 欧美最猛性xxxxx亚洲精品| 色老头视频在线观看| 欧美精品一区二区久久久| 一级黄色在线视频| 亚洲免费av网站| 少妇大叫太粗太大爽一区二区| 久久精品国产在热久久| 国产美女在线一区| 日韩夫妻性生活xx| 国产亚洲欧美另类一区二区三区| av激情成人网| 欧美精品999| 成人在线免费电影| 精品黑人一区二区三区久久| 不卡av电影在线| 亚洲永久免费av| 真实乱视频国产免费观看| 国产一区91精品张津瑜| 欧美aⅴ在线观看| 好看的日韩av电影| 少妇特黄a一区二区三区| 超碰一区二区三区| 成人妇女免费播放久久久| 欧美少妇精品| 欧美日韩aaaa| 麻豆网站在线免费观看| 亚洲精品中文字幕女同| 国产av无码专区亚洲a∨毛片| 一本久道中文字幕精品亚洲嫩| 99热6这里只有精品| 91视频91自| 亚洲一二三四五| 九九国产精品视频| 激情综合网俺也去| 亚洲区一区二| 黄网站色视频免费观看| 色欧美自拍视频| 欧美一区二区三区四区夜夜大片 | 成人免费视频观看| 97视频在线观看免费高清完整版在线观看| 生活片a∨在线观看| 亚洲欧美国产日韩天堂区| 色婷婷综合视频| 精品美女在线播放| 国内毛片毛片毛片毛片| 欧美日韩大陆在线| a片在线免费观看| 91国产福利在线| 国产午夜精品久久久久| 欧美日韩色婷婷| 日韩av在线电影| 午夜日韩在线观看| 日本熟妇毛耸耸xxxxxx| 亚洲一区二区三区四区在线免费观看| 亚洲AV成人无码精电影在线| 国产欧美一区二区三区鸳鸯浴 | 一区二区三区精密机械公司| 久久av红桃一区二区禁漫| 国产精品久久久久久久久免费桃花 | 欧美日本在线视频中文字字幕| 中文字幕有码在线视频| 欧美超级乱淫片喷水| 成人国产免费电影| 久久亚洲精品一区| 26uuu亚洲电影在线观看| 久久国产精品视频| 91高清在线观看视频| 欧美高清videos高潮hd| 秋霞在线视频| 午夜精品99久久免费| av在线网页| 欧美在线观看一区二区三区| 色偷偷偷在线视频播放| 欧洲中文字幕国产精品| 另类中文字幕国产精品| 国产精品视频免费在线观看| 亚洲一区导航| 97久草视频| 欧美电影免费网站| 欧美一进一出视频| 日韩精品1区| 超薄肉色丝袜足j调教99| 亚洲网站啪啪| 人妻熟女一二三区夜夜爱| 日韩电影在线观看一区| 在线免费看污网站| 粉嫩高潮美女一区二区三区| 精品无码国产一区二区三区51安| 91在线精品一区二区| 国产伦理片在线观看| 亚洲欧洲制服丝袜| 日韩男人的天堂| 欧美性受xxxx黑人xyx性爽| 一级做a爱片久久毛片| 日韩欧美www| 国产视频二区在线观看| 日韩亚洲在线观看| 高清电影在线免费观看| 国产精品电影网站| 日韩激情综合| 欧美在线视频二区| 亚洲欧美综合| 国产v亚洲v天堂无码久久久| 激情av综合网| 日本丰满少妇裸体自慰 | 久久久精品视频免费| 色婷婷精品久久二区二区蜜臂av| 91精品人妻一区二区三区果冻| 精品999久久久| 1pondo在线播放免费| 久久人人爽人人爽人人片av高请 | 亚洲尤物影院| 免费网站在线观看黄| 99久久精品久久久久久清纯| 国产jjizz一区二区三区视频| 亚洲欧洲精品天堂一级| 五月天婷婷久久| 91精品国产一区二区| 日本大臀精品| 久久久久久久久国产精品| 欧美日韩女优| 精品伊人久久大线蕉色首页| 亚洲精品国产偷自在线观看| 麻豆av免费在线| 成人午夜av影视| 182在线观看视频| 色狠狠一区二区| 日本成人动漫在线观看| 日韩视频第一页| 日本精品在线中文字幕| 国产在线精品一区二区三区》| 国产精品久久天天影视| 情侣黄网站免费看| www.视频一区| 欧美三根一起进三p| 精品污污网站免费看| 日韩二区三区| 国内精品小视频在线观看| 精品国产鲁一鲁****| 一区二区三区四区不卡| 日韩av中文在线观看| 在线观看日韩精品视频| 亚洲国产一区二区在线播放| 99久久精品国产色欲| 色噜噜国产精品视频一区二区| 午夜精品久久久久久久久久蜜桃| 不卡一卡2卡3卡4卡精品在| 婷婷精品进入| 午夜免费看毛片| 国产精品乱人伦| 高潮无码精品色欲av午夜福利| 亚洲欧洲在线免费| 日韩伦理福利| 久久99精品国产99久久| 18成人免费观看视频| 亚洲精品无码一区二区| 亚洲一区二区欧美日韩| 亚洲经典一区二区三区| 欧美大秀在线观看| 亚洲国产视频二区| 欧美交换配乱吟粗大25p| 国产福利一区二区三区视频 | 精品免费日产一区一区三区免费| 欧美三级第一页| 亚洲色图欧美日韩| 亚洲国产一区视频| 亚洲三区在线观看无套内射| 538国产精品视频一区二区| 午夜精品福利影院| 男人操女人免费| 国产免费观看久久| 一级片在线观看视频| 久久夜色精品国产| 亚洲视频国产精品| 日本中文字幕网址| 久久―日本道色综合久久| 国产寡妇亲子伦一区二区三区四区| 精品亚洲一区二区三区在线播放| 成人av观看| 亚洲精品中字| 国产精品18久久久久久久网站| 国产亚洲第一页| 日韩电影在线观看中文字幕| 桃花岛tv亚洲品质| 亚洲国产日韩美| 国产一区二区毛片| 四虎永久在线精品| 国产一区二区三区视频在线观看| 日韩一级特黄| 99色这里只有精品| 国产午夜一区二区三区| 国产绿帽一区二区三区| 高清亚洲成在人网站天堂| 九一亚洲精品| 国产亚洲色婷婷久久| 欧美日韩一二三四五区| 91xxx在线观看| 国产精品一区二区三区四区五区| 母乳一区在线观看| 国产麻豆a毛片| 亚洲国产成人久久| 另类一区二区| 人妻夜夜添夜夜无码av| 国产精品免费视频网站| 肥臀熟女一区二区三区| 日韩av免费网站| 欧美精品啪啪| 欧洲美熟女乱又伦| 欧美大片日本大片免费观看| 日韩国产激情| 国产欧美精品aaaaaa片| 国产亚洲成年网址在线观看| 亚洲av无码乱码国产精品| 国产v综合v亚洲欧美久久| 欧美日韩精选| 欧美特黄一级片|