日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Apache Doris技术实践

發(fā)布時(shí)間:2023/12/15 编程问答 63 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Apache Doris技术实践 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 1 Doris簡述
    • 1.1 Doris架構(gòu)組成介紹
      • 1.1.1 Doris的整體架構(gòu)
      • 1.1.2 FE
      • 1.1.3 元數(shù)據(jù)
    • 1.2 Doris特點(diǎn)
    • 1.3 Doris的軟硬件需求
    • 1.4 Doris各個(gè)實(shí)例通信網(wǎng)絡(luò)端口
    • 1.5 中間件版本選取
  • 2 Doris部署
    • 2.1 環(huán)境準(zhǔn)備
      • 2.1.1 CentOS7
      • 2.1.2 關(guān)閉防火墻
      • 2.1.3 關(guān)閉Swap
      • 2.1.4 HostName設(shè)置
      • 2.1.5 安裝JDK
      • 2.1.6 安裝JCC
      • 2.1.7 安裝Docker
      • 2.1.8 安裝mysql
    • 2.2 Doris安裝
      • 2.2.1 環(huán)境檢查
      • 2.2.2 Doris編譯
      • 2.2.3 部署和啟動(dòng)FE
      • 2.2.4 部署和啟動(dòng)BE
    • 2.3 安裝檢查
  • 3 DORIS操作說明
    • 3.1 DORIS配置項(xiàng)
      • 3.1.1 靜態(tài)配置
      • 3.1.2 動(dòng)態(tài)配置
      • 3.1.3 配置項(xiàng)列表
    • 3.2 DORIS操作
      • 3.2.1 添加BE
      • 3.2.2 查詢BE
      • 3.2.3 刪除BE
      • 3.2.4 刪除FE
    • 3.3 數(shù)據(jù)庫操作
      • 3.3.1 修改默認(rèn)用戶的密碼
      • 3.3.2 創(chuàng)建數(shù)據(jù)庫
      • 3.3.3 創(chuàng)建用戶
      • 3.3.4 授權(quán)用戶
      • 3.3.5 創(chuàng)建表
      • 3.3.7 分區(qū)
      • 3.3.8 表結(jié)構(gòu)變更
      • 3.3.9 其他常用模命令
    • 3.4 通過JDBC訪問DORIS
    • 3.5 導(dǎo)入數(shù)據(jù)
      • 3.5.1 Broker load
      • 3.5.2 Stream load
      • 3.5.3 Insert
      • 3.5.4 Multi load
      • 3.5.5 Routine load
      • 3.5.6 數(shù)據(jù)導(dǎo)入場(chǎng)景說明
      • 3.5.7 參數(shù)說明
    • 3.6 查詢操作
      • 3.6.1 數(shù)據(jù)查詢
      • 3.6.2 數(shù)據(jù)表查詢
      • 3.6.3 查詢超時(shí)
      • 3.6.4 Broadcast/Shuffle Join
    • 3.7 備份與恢復(fù)
      • 3.7.1 backup備份
      • 3.7.2 restore恢復(fù)
      • 3.7.3 常用命令
    • 3.8 監(jiān)控和報(bào)警
  • 4 DORIS應(yīng)用場(chǎng)景
    • 4.1 DORIS添加KAFKA實(shí)時(shí)數(shù)據(jù)流
      • 4.1.1 doris訂閱kafka
      • 4.1.2 保證數(shù)據(jù)不丟失
      • 4.1.3 保證數(shù)據(jù)不重復(fù)
    • 4.2 MYSQL+DORIS
    • 4.3 HDFS+DORIS
    • 4.4 DORIS在EASTICSEARCH中的應(yīng)用
    • 4.5 DORIS個(gè)人感受
    • 4.6 DORIS在美團(tuán)點(diǎn)評(píng)的實(shí)踐
      • 4.6.1 美團(tuán)外賣Doris實(shí)踐概述
      • 4.6.2 美團(tuán)外賣Doris準(zhǔn)實(shí)時(shí)數(shù)倉平臺(tái)建設(shè)
        • Hive To Doris
        • Kafka To Doris
  • 5 DORIS FAQS
    • 5.1 安裝GCC之后版本號(hào)仍然是CENTOS7默認(rèn)的4.8
    • 5.2 安裝MYSQL報(bào)錯(cuò)UNIT MYSQLD.SERVICE COULD NOT BE FOUND
    • 5.3 手動(dòng)編譯SH BUILD.SH失敗
      • 5.3.1 報(bào)錯(cuò)download ora158.tar.gz failed
      • 5.3.2 報(bào)錯(cuò)gcc -V找不到指定的目錄
    • 5.4 部署FE,報(bào)錯(cuò)找不到IMAGE.0
    • 5.5 使用MYSQL連接FE失敗
    • 5.6 添加BE失敗
    • 5.7 BE啟動(dòng)失敗
    • 5.8 BE連接失敗


1 Doris簡述

Doris(原百度Palo)是一款基于大規(guī)模并行處理技術(shù)的分布式 SQL 數(shù)據(jù)庫,由百度在2017年開源,2018年進(jìn)入 Apache 孵化器。

1.1 Doris架構(gòu)組成介紹

1.1.1 Doris的整體架構(gòu)

Doris的架構(gòu)組成主要是BackEnd,即Doris 的后端節(jié)點(diǎn)(以下簡稱BE);FrontEnd,即Doris 的前端節(jié)點(diǎn)(以下簡稱FE)和bdbje(BerkekeyDB Java Edition),負(fù)責(zé)元數(shù)據(jù)操作日志的持久化、FE 高可用等功能。

BE的磁盤空間主要用來存放用戶數(shù)據(jù),總磁盤空間按照總用戶數(shù)量*3(副本數(shù)量)計(jì)算;然后再預(yù)留額外40% 的空間用作后臺(tái) compaction 以及一些中間數(shù)據(jù)的存存放。FE的磁盤空間主要用于存儲(chǔ)元數(shù)據(jù),包括日志和 image。通常從幾百 MB 到幾個(gè) GB 不等。

一臺(tái)機(jī)器上可以部署多個(gè) BE 實(shí)例,但是只能部署一個(gè) FE。如果需要 3 副本數(shù)據(jù),那么至少需要 3 臺(tái)機(jī)器各部署一個(gè) BE 實(shí)例。(測(cè)試環(huán)境也可僅適用一個(gè)BE)。架構(gòu)圖如圖1.1

Doris 的整體架構(gòu)分為兩層。多個(gè)FE 組成第一層,提供 FE 的橫向擴(kuò)展和高可用。多個(gè) BE 組成第二層,負(fù)責(zé)數(shù)據(jù)存儲(chǔ)于管理。本文主要介紹 FE 這一層中,元數(shù)據(jù)的設(shè)計(jì)與實(shí)現(xiàn)方式。

1.1.2 FE

· FE 節(jié)點(diǎn)分為 follower 和 observer 兩類。各個(gè) FE 之間,通過bdbje進(jìn)行l(wèi)eader 選舉,數(shù)據(jù)同步等工作。

· follower節(jié)點(diǎn)通過選舉,其中一個(gè) follower 成為 leader 節(jié)點(diǎn),負(fù)責(zé)元數(shù)據(jù)的寫入操作。當(dāng) leader 節(jié)點(diǎn)宕機(jī)后,其他 follower 節(jié)點(diǎn)會(huì)重新選舉出一個(gè) leader,保證服務(wù)的高可用。

· observer節(jié)點(diǎn)僅從 leader 節(jié)點(diǎn)進(jìn)行元數(shù)據(jù)同步,不參與選舉。可以橫向擴(kuò)展以提供元數(shù)據(jù)的讀服務(wù)的擴(kuò)展性。

1.1.3 元數(shù)據(jù)

Doris 的元數(shù)據(jù)是全內(nèi)存的。每個(gè)FE 內(nèi)存中,都維護(hù)一個(gè)完整的元數(shù)據(jù)鏡像。

Doris的元數(shù)據(jù)主要存儲(chǔ)4類信息:

· 用戶數(shù)據(jù)信息。包括數(shù)據(jù)庫、表的 Schema、分片信息等。

· 各類作業(yè)信息。如導(dǎo)入作業(yè),Clone 作業(yè)、SchemaChange 作業(yè)等。

· 用戶及權(quán)限信息。

· 集群及節(jié)點(diǎn)信息。

元數(shù)據(jù)的數(shù)據(jù)流具體過程如下:

  • 只有l(wèi)eader FE 可以對(duì)元數(shù)據(jù)進(jìn)行寫操作。寫操作在修改 leader 的內(nèi)存后,會(huì)序列化為一條log,按照 key-value 的形式寫入 bdbje。其中 key 為連續(xù)的整型,作為 log id,value 即為序列化后的操作日志

  • 日志寫入 bdbje 后,bdbje 會(huì)根據(jù)策略(寫多數(shù)/全寫),將日志復(fù)制到其他 non-leader 的 FE 節(jié)點(diǎn)。non-leader

  • FE 節(jié)點(diǎn)通過對(duì)日志回放,修改自身的元數(shù)據(jù)內(nèi)存鏡像,完成與 leader 節(jié)點(diǎn)的元數(shù)據(jù)同步

  • leader 節(jié)點(diǎn)的日志條數(shù)達(dá)到閾值后(默認(rèn) 10w 條),會(huì)啟動(dòng) checkpoint 線程。checkpoint 會(huì)讀取已有的 image 文件,和其之后的日志,重新在內(nèi)存中回放出一份新的元數(shù)據(jù)鏡像副本。然后將該副本寫入到磁盤,形成一個(gè)新的 image。每次 checkpoint 會(huì)占用雙倍內(nèi)存空間。

  • image 文件生成后,leader節(jié)點(diǎn)會(huì)通知其他 non-leader 節(jié)點(diǎn)新的 image 已生成。non-leader 主動(dòng)通過 http 拉取最新的 image 文件,來更換本地的舊文件

  • 1.2 Doris特點(diǎn)

    Doris的主要特性

    · 兼容Mysql協(xié)議,支持包括多表 Join、子查詢、窗口函數(shù)、CTE 在內(nèi)的豐富的 SQL 語法。支持諸多常見 BI 報(bào)表系統(tǒng),能極大降低用戶的學(xué)習(xí)和遷移成本

    · 支持高并發(fā)點(diǎn)查詢和高吞吐的多維分析查詢場(chǎng)景。通過分區(qū)裁剪、預(yù)聚合、謂詞下推、向量化執(zhí)行等技術(shù),以及高效的列式存儲(chǔ)引擎即數(shù)據(jù)壓縮算法,滿足不同業(yè)務(wù)場(chǎng)景下的延遲和吞吐需求。

    · 特有的數(shù)據(jù)預(yù)聚合功能。支持預(yù)聚合表和基準(zhǔn)表同步原子更新,為報(bào)表場(chǎng)景提供更快速的查詢響應(yīng)。

    · 提供強(qiáng)大的擴(kuò)展性和高可用特性。所有數(shù)據(jù)都采用多副本的方式保證數(shù)據(jù)的高可靠,同時(shí)提供全自動(dòng)的副本選擇、均衡和修復(fù)功能,為用戶提供7*24小時(shí)的高可用數(shù)據(jù)庫系統(tǒng)。

    · 提供友好的在線表結(jié)構(gòu)變更功能,能有效應(yīng)對(duì)業(yè)務(wù)上的需求變化。

    · 提供兩級(jí)數(shù)據(jù)劃分功能以及分層存儲(chǔ)功能。用戶可以更靈活地對(duì)數(shù)據(jù)進(jìn)行管理和維護(hù)。

    1.3 Doris的軟硬件需求

    環(huán)境名稱版本號(hào)
    CentOS/Ubuntu7.1及以上/16.04及以上
    Java1.8及以上
    GCC4.8.2及以上
    cmake
    python2.7及以上

    測(cè)試環(huán)境

    模塊CPU內(nèi)存磁盤網(wǎng)絡(luò)實(shí)例數(shù)
    FrontEnd8核+8G+10GB+千兆網(wǎng)卡1
    BackEnd8核+16G+50GB+千兆網(wǎng)卡1-3

    生產(chǎn)環(huán)境

    模塊CPU內(nèi)存磁盤網(wǎng)絡(luò)實(shí)例數(shù)
    FrontEnd16核+64G+100GB+萬兆網(wǎng)卡1-5
    BackEnd16核+64G+100GB+萬兆網(wǎng)卡10-100

    · Doris的性能與節(jié)點(diǎn)數(shù)量及配置正相關(guān)。最少4臺(tái)機(jī)器(一臺(tái) FE,三臺(tái) BE,其中一臺(tái) BE 混部一個(gè) Observer FE 提供元數(shù)據(jù)備份)。測(cè)試環(huán)境可以只部署一臺(tái)BE

    · 如果 FE 和 BE 混部,需注意資源競(jìng)爭問題,并保證元數(shù)據(jù)目錄和數(shù)據(jù)目錄分屬不同磁盤

    1.4 Doris各個(gè)實(shí)例通信網(wǎng)絡(luò)端口

    實(shí)例名稱端口名稱默認(rèn)端口通訊方向說明
    BEbe_port9060FE --> BEBE 上 thrift server 的端口,用于接收來自 FE 的請(qǐng)求
    BEwebserver_port8040BE <–> BEBE 上的 http server 的端口
    BEheartbeat_service_port9050FE --> BEBE 上心跳服務(wù)端口(thrift),用于接收來自 FE 的心跳
    BEbrpc_port8060FE<–>BE, BE <–> BEBE 上的 brpc 端口,用于 BE 之間通訊
    FEhttp_port8030FE <–> FE,用戶FE 上的 http server 端口
    FErpc_port9020BE --> FE, FE <–> FEFE 上的 thrift server 端口
    FEquery_port9030用戶FE 上的 mysql server 端口
    FEedit_log_port9010FE <–> FEFE 上的 bdbje 之間通信用的端口
    Brokerbroker_ipc_port8000FE --> Broker, BE --> BrokerBroker 上的 thrift server,用于接收請(qǐng)求

    1.5 中間件版本選取

    中間件名稱版本號(hào)
    CentOSCentOS-7-x86_64-DVD-2003.iso
    Java1.8.0_121
    Maven3.5.4
    Doris0.12.0
    cMake2.8.12.2
    python2.7.5
    gcc5.5.0
    docker18.03.1-ce

    2 Doris部署

    2.1 環(huán)境準(zhǔn)備

    本次使用1臺(tái)機(jī)器進(jìn)行集群搭建,適用混編的方式在一臺(tái)機(jī)器上同時(shí)部署FE和BE

    2.1.1 CentOS7

    CentOS7安裝過程省略。Apache Doris官方要求CentOS需要在7.1版本以上。請(qǐng)確保虛擬機(jī)的CentOS版本符合要求。

    2.1.2 關(guān)閉防火墻

    針對(duì)centos7以上
    1.查看防火墻狀態(tài)
    firewall-cmd --state

    2.停止firewall
    systemctl stop firewalld.service

    3.禁止firewall開機(jī)啟動(dòng)
    systemctl disable firewalld.service

    針對(duì)centos7以下
    1.查看防火墻狀態(tài)
    service iptables status

    2.停止防火墻
    service iptables stop

    3.啟動(dòng)防火墻
    service iptablesstart

    2.1.3 關(guān)閉Swap

    1.查看swap

    [root@CentOS7 opt]# free [root@CentOS7 opt]# cat /proc/vmstat |egrep "dirty|writeback" [root@CentOS7 opt]# sysctl -wvm.swappiness=0

    2.關(guān)閉swap

    [root@CentOS7 opt]# echo"vm.swappiness = 0">> /etc/sysctl.conf [root@CentOS7 opt]# swapoff -a

    3.檢查swap關(guān)閉

    2.1.4 HostName設(shè)置

    [root@CentOS7]# hostname -s CentOS7

    2.1.5 安裝JDK

    1.解壓jdk1.8的安裝包,并配置JAVA的環(huán)境變量

    [root@CentOS7~]# vi /etc/profile.d/jdk.sh #JAVA_HOME exportJAVA_HOME=/opt/java/jdk1.8.0_121 exportJRE_HOME=$JAVA_HOME/jre exportPATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

    2.添加環(huán)境變量,刷新文件使其生效

    [hadoop@hadoop04~]$ /etc/profile.d/jdk.sh

    3.查閱是否安裝成功

    2.1.6 安裝JCC

    1.解壓GCC5.5的安裝包,并在環(huán)境變量中配置gcc

    [root@CentOS7 ~]# vi ~/.bash_profile export CC=/usr/local/bin/gcc export CXX=/usr/local/bin/g++

    2.安裝GCC的依賴包:

    yum -y install gmp-devel yum -y install mpfr-devel yum -y install libmpc-devel yum -y install bzip2

    3.進(jìn)入到gcc的解壓目錄,執(zhí)行配置:

    [root@CentOS7 gcc-5.5.0]# cd /opt/gcc-5.5.0/ [root@CentOS7 gcc-5.5.0]#./configure--enable-checking=release --enable-languages=c,c++ --disable-multilib [root@CentOS7 gcc-5.5.0]#export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib #--disable-multilib 不產(chǎn)生32位的編譯器

    4.編譯、安裝:

    [root@CentOS7 gcc-5.5.0]# make -j 4 [root@CentOS7 gcc-5.5.0]# make install

    5.查看安裝結(jié)果(如果版本號(hào)依然是CentOS自帶的4.8,請(qǐng)檢查環(huán)境變量設(shè)置):

    參考鏈接:Linux安裝gcc 7.3.0編譯器詳解(CentOS 7 64位系統(tǒng))

    2.1.7 安裝Docker

    1.指定docker版本安裝即可

    [root@CentOS7opt]# yum install docker-ce-18.03.1.ce

    2.安裝完成之后查看docker版本

    3.啟動(dòng)docker

    [root@CentOS7opt]# systemctl start docker

    4.設(shè)置開機(jī)自啟

    [root@CentOS7opt]# systemctl enable docker

    2.1.8 安裝mysql

  • 下載mysql rpm包到/opt/package
  • 安裝mysql服務(wù)端
  • [root@CentOS7 package]# rpm -ivhMySQL-server-5.6.24-1.el6.x86_64.rpm

    查看初始密碼:

    [root@CentOS7 mysql]# cat/root/.mysql_secret

    查看mysql服務(wù)狀態(tài)并啟動(dòng)

    [root@CentOS7 package]# service mysqldstatus##如果報(bào)錯(cuò)Unit mysqld.service could not be found.請(qǐng)查找mysql.server然后復(fù)制到/etc/init.d/mysqld [root@CentOS7 mysql]# cp mysql.server/etc/init.d/mysqld
  • 安裝mysql客戶端
  • [root@CentOS7 package]# rpm -ivhMySQL-client-5.6.24-1.el6.x86_64.rpm

    使用查詢到的初始密碼登陸客戶端

    [root@CentOS7 package]# mysql -uroot-pMabbdrdTaRv0Gywq

    修改密碼:

    mysql> SET PASSWORD=PASSWORD('000000');

    2.2 Doris安裝

    2.2.1 環(huán)境檢查

  • 檢查Java版本,$JAVA_HOME
  • 檢查Python版本
  • 檢查docker版本
  • 檢查GCC版本
  • 2.2.2 Doris編譯

    網(wǎng)上有很多教程指導(dǎo)Doris的編譯,眾多的信息反而讓人摸不清頭腦,這里使用官網(wǎng)推薦的模擬docker鏡像的鏡像的方式編譯Doris
    官方鏈接

  • 下載docker鏡像(先確保安裝docker)
  • docker pullapachedoris/doris-dev:build-env-1.2 # doris-dev:build-env-1.2 對(duì)應(yīng)的是0.12.0版本Doris的鏡像
  • 檢查鏡像docker images
  • 運(yùn)行鏡像
    docker run -it apachedoris/doris-dev:build-env-1.2
  • 下載源碼
  • git clonehttps://github.com/apache/incubator-doris.git
  • 找到下載源碼的路徑編譯
  • find ./ -name build.sh #這里通過Doris源碼中的編譯腳本去搜索下載源碼的路徑
  • 到源碼的路徑下執(zhí)行編譯腳本
  • sh .build.sh #這里編譯的時(shí)候很長,如果失敗了,需要?jiǎng)h掉編譯的目錄重新編譯(建議備份下載的源碼,編譯失敗刪除源碼重新編譯即可)


    見到這張圖就說明編譯成功了

    2.2.3 部署和啟動(dòng)FE

  • 修改/conf/fe.conf中的meta_dir,指定元數(shù)據(jù)存放的位置
    默認(rèn)是${DORIS_HOME}/doris-meta 需要手動(dòng)創(chuàng)建

  • 修改FE節(jié)點(diǎn)IP

  • [root@CentOS7 fe]# vi ./conf/fe.conf #priority_networks 設(shè)置成FE所在節(jié)點(diǎn)的IP
  • 啟動(dòng)FE
  • [root@CentOS7 fe]# sh bin/start_fe.sh –daemon #發(fā)生錯(cuò)誤請(qǐng)通過查看fe/log/fe.log 或者 fe/log/fe.out 查看錯(cuò)誤信息 #################FE配置##################### # INFO, WARN, ERROR, FATAL sys_log_level = INFO # store metadata, create it if it is notexist. meta_dir =/opt/doris/output/fe/palo-meta http_port = 8030 #UI端口 rpc_port = 9020 query_port = 9030 edit_log_port = 9010 mysql_service_nio_enabled = truepriority_networks =CentOS7/24 #需要加上網(wǎng)關(guān)

    4.在mysql中連接FE

    #連接 [root@CentOS7 ~]# mysql -h CentOS7 -P 9030 -uroot #添加BE mysql> ALTER SYSTEM ADD BACKEND'CentOS7:9050';

    2.2.4 部署和啟動(dòng)BE

  • 修改/conf/be.conf中的storage_root_path,指定數(shù)據(jù)存放的位置
    多目錄使用;分隔,最后一個(gè)目錄不加;

  • 添加BE節(jié)點(diǎn)

  • mysql連接FE:mysql -h CentOS7 -P 9030 -uroot

    添加BE:ALTER SYSTEMADD FREE BACKEND “host:9050”;

    host為BE所在節(jié)點(diǎn)

  • 啟動(dòng)BE
  • [root@CentOS7 be]# sh bin/start_be.sh –daemon #################FE配置 # INFO, WARNING, ERROR, FATAL sys_log_level = INFO # ports for admin, web, heartbeat service be_port = 9060 be_rpc_port = 9070 webserver_port = 8040 heartbeat_service_port = 9050 brpc_port = 8060priority_networks =CentOS7/24 #同理,需要加上網(wǎng)關(guān)

    2.3 安裝檢查

    1.mysql連接FE

    2.界面訪問

    http://CentOS7:8030/api/bootstrap

    3 DORIS操作說明

    3.1 DORIS配置項(xiàng)

    3.1.1 靜態(tài)配置

    修改conf/fe.conf或者conf/be.conf配置文件

    3.1.2 動(dòng)態(tài)配置

    FE 啟動(dòng)后,可以通過以下命令動(dòng)態(tài)設(shè)置配置項(xiàng)。該命令需要管理員權(quán)限。

    ADMIN SET FRONTEND CONFIG ("fe_config_name" = "fe_config_value");

    通過 ADMIN SHOW FRONTEND CONFIG; 命令結(jié)果中的 IsMutable 列查看是否支持動(dòng)態(tài)配置

    3.1.3 配置項(xiàng)列表

    http://doris.apache.org/master/zh-CN/administrator-guide/config/fe_config.html#%E9%85%8D%E7%BD%AE%E9%A1%B9%E5%88%97%E8%A1%A8

    http://doris.apache.org/master/zh-CN/administrator-guide/config/be_config.html#%E9%85%8D%E7%BD%AE%E9%A1%B9%E5%88%97%E8%A1%A8

    3.2 DORIS操作

    3.2.1 添加BE

    見2.2.2

    3.2.2 查詢BE

    mysql> show proc '/backends';

    3.2.3 刪除BE

    mysql> ALTER SYSTEM DROP BACKEND "CentOS7:9050"; ERROR 1064 (HY000): errCode = 2, detailMessage = It is highly NOT RECOMMENDED to use DROP BACKEND stmt.It is not safe to directly drop a backend. All data on this backend will be discarded permanently. If you insist, use DROPP BACKEND stmt (double P). mysql> ALTER SYSTEM DROPP BACKEND "CentOS7:9050"; Query OK, 0 rows affected (0.01 sec)

    3.2.4 刪除FE

    mysql> ALTER SYSTEM DROPP FOLLOWER "CentOS7:9050";

    3.3 數(shù)據(jù)庫操作

    3.3.1 修改默認(rèn)用戶的密碼

    默認(rèn)用戶root/admin:

    mysql> set password for 'admin' = PASSWORD('000000');

    修改完成之后可以訪問頁面查看系統(tǒng)信息
    http://CentOS7:8030/system

    3.3.2 創(chuàng)建數(shù)據(jù)庫

    mysql> create database doris;

    3.3.3 創(chuàng)建用戶

    mysql> create user 'doris' identified by '000000';

    3.3.4 授權(quán)用戶

    mysql> grant all on doris to doris;

    3.3.5 創(chuàng)建表

    Doris支持支持單分區(qū)和復(fù)合分區(qū)兩種建表方式。
    在復(fù)合分區(qū)中:
    ? 第一級(jí)稱為 Partition,即分區(qū)。用戶可以指定某一維度列作為分區(qū)列(當(dāng)前只支持整型和時(shí)間類型的列),并指定每個(gè)分區(qū)的取值范圍。
    ? 第二級(jí)稱為 Distribution,即分桶。用戶可以指定一個(gè)或多個(gè)維度列以及桶數(shù)對(duì)數(shù)據(jù)進(jìn)行 HASH 分布。
    以下場(chǎng)景推薦使用復(fù)合分區(qū)
    ? 有時(shí)間維度或類似帶有有序值的維度,可以以這類維度列作為分區(qū)列。分區(qū)粒度可以根據(jù)導(dǎo)入頻次、分區(qū)數(shù)據(jù)量等進(jìn)行評(píng)估。
    ? 歷史數(shù)據(jù)刪除需求:如有刪除歷史數(shù)據(jù)的需求(比如僅保留最近N 天的數(shù)據(jù))。使用復(fù)合分區(qū),可以通過刪除歷史分區(qū)來達(dá)到目的。也可以通過在指定分區(qū)內(nèi)發(fā)送 DELETE 語句進(jìn)行數(shù)據(jù)刪除。
    ? 解決數(shù)據(jù)傾斜問題:每個(gè)分區(qū)可以單獨(dú)指定分桶數(shù)量。如按天分區(qū),當(dāng)每天的數(shù)據(jù)量差異很大時(shí),可以通過指定分區(qū)的分桶數(shù),合理劃分不同分區(qū)的數(shù)據(jù),分桶列建議選擇區(qū)分度大的列。
    用戶也可以不使用復(fù)合分區(qū),即使用單分區(qū)。則數(shù)據(jù)只做 HASH 分布
    單分區(qū)建表

    CREATE TABLE table1 (siteid INT DEFAULT '10',citycode SMALLINT,username VARCHAR(32) DEFAULT '',pv BIGINT SUM DEFAULT '0' ) AGGREGATE KEY(siteid, citycode, username) DISTRIBUTED BY HASH(siteid) BUCKETS 10 PROPERTIES("replication_num" = "1");

    這個(gè)表的 schema 如下:
    ? siteid:類型是INT(4字節(jié)), 默認(rèn)值為10
    ? citycode:類型是SMALLINT(2字節(jié))
    ? username:類型是VARCHAR, 最大長度為32, 默認(rèn)值為空字符串
    ? pv:類型是BIGINT(8字節(jié)), 默認(rèn)值是0; 這是一個(gè)指標(biāo)列, Doris內(nèi)部會(huì)對(duì)指標(biāo)列做聚合操作, 這個(gè)列的聚合方法是求和(SUM)
    復(fù)合分區(qū)建表

    CREATE TABLE table2 (event_day DATE,siteid INT DEFAULT '10',citycode SMALLINT,username VARCHAR(32) DEFAULT '',pv BIGINT SUM DEFAULT '0' ) AGGREGATE KEY(event_day, siteid, citycode, username) PARTITION BY RANGE(event_day) (PARTITION p201706 VALUES LESS THAN ('2017-07-01'),PARTITION p201707 VALUES LESS THAN ('2017-08-01'),PARTITION p201708 VALUES LESS THAN ('2017-09-01') ) DISTRIBUTED BY HASH(siteid) BUCKETS 10 PROPERTIES("replication_num" = "1");

    這個(gè)表的 schema 如下:
    ? event_day:類型是DATE,無默認(rèn)值
    ? siteid:類型是INT(4字節(jié)), 默認(rèn)值為10
    ? citycode:類型是SMALLINT(2字節(jié))
    ? username:類型是VARCHAR, 最大長度為32, 默認(rèn)值為空字符串
    ? pv:類型是BIGINT(8字節(jié)), 默認(rèn)值是0; 這是一個(gè)指標(biāo)列, Doris 內(nèi)部會(huì)對(duì)指標(biāo)列做聚合操作, 這個(gè)列的聚合方法是求和(SUM)
    我們使用 event_day 列作為分區(qū)列,建立3個(gè)分區(qū): p201706, p201707, p201708
    ? p201706:范圍為 [最小值, 2017-07-01)
    ? p201707:范圍為 [2017-07-01, 2017-08-01)
    ? p201708:范圍為 [2017-08-01, 2017-09-01)
    注意區(qū)間為左閉右開。
    每個(gè)分區(qū)使用 siteid 進(jìn)行哈希分桶,桶數(shù)為10
    3.3.6 查看表

    mysql> show tables;

    mysql> desc table1;

    mysql> desc tables2;

    3.3.7 分區(qū)

    在0.12.0版本中添加了臨時(shí)分區(qū)的功能。只有分區(qū)表能建臨時(shí)分區(qū),歸屬于某一分區(qū)表
    #添加臨時(shí)分區(qū)
    #可以通過 ALTER TABLE ADD TEMPORARY PARTITION 語句對(duì)一個(gè)表添加臨時(shí)分區(qū)

    mysql> ALTER TABLE table1 ADD TEMPORARY PARTITION tp1 VALUES LESS THAN("2020-02-01");mysql> ALTER TABLE table1 ADD TEMPORARY PARTITION tp1 VALUES [("2020-01-01"), ("2020-02-01"));mysql> ALTER TABLE table1 ADD TEMPORARY PARTITION tp1 VALUES LESS THAN("2020-02-01") ("in_memory" = "true", "replication_num" = "1") DISTRIBUTED BY HASH(k1) BUCKETS 5;

    #刪除臨時(shí)分區(qū)
    #可以通過 ALTER TABLE DROP TEMPORARY PARTITION 語句刪除一個(gè)表的臨時(shí)分區(qū)

    mysql> ALTER TABLE table1 DROP TEMPORARY PARTITION tp1;

    #替換分區(qū)
    #可以通過 ALTER TABLE DROP TEMPORARY PARTITION 語句刪除一個(gè)表的臨時(shí)分區(qū)

    mysql> ALTER TABLE tbl1 REPLACE PARTITION (p1) WITH TEMPORARY PARTITION (tp1);mysql> ALTER TABLE tbl1 REPLACE PARTITION (p1, p2) WITH TEMPORARY PARTITION (tp1, tp2, tp3);mysql> ALTER TABLE tbl1 REPLACE PARTITION (p1, p2) WITH TEMPORARY PARTITION (tp1, tp2) PROPERTIES ("strict_range" = "false","use_temp_partition_name" = "true" );

    3.3.8 表結(jié)構(gòu)變更

    類似于mysql
    ? 增加列
    ? 刪除列
    ? 修改列類型
    ? 改變列順序
    #增加列

    mysql> ALTER TABLE table1 ADD COLUMN uv BIGINT SUM DEFAULT '0' after pv;

    #查看修改

    mysql> SHOW ALTER TABLE COLUMN;

    #取消正在執(zhí)行的作業(yè)

    CANCEL ALTER TABLE COLUMN FROM table1

    3.3.9 其他常用模命令

    #drop
    ? 使用 Drop 操作直接刪除數(shù)據(jù)庫或表后,可以通過 Recover 命令恢復(fù)數(shù)據(jù)庫或表(限定時(shí)間內(nèi)),但臨時(shí)分區(qū)不會(huì)被恢復(fù)。
    ? 使用 Alter 命令刪除正式分區(qū)后,可以通過 Recover 命令恢復(fù)分區(qū)(限定時(shí)間內(nèi))。操作正式分區(qū)和臨時(shí)分區(qū)無關(guān)。
    ? 使用 Alter 命令刪除臨時(shí)分區(qū)后,無法通過 Recover 命令恢復(fù)臨時(shí)分區(qū)。
    #truncate
    ? 使用 Truncate 命令清空表,表的臨時(shí)分區(qū)會(huì)被刪除,且不可恢復(fù)。
    ? 使用 Truncate 命令清空正式分區(qū)時(shí),不影響臨時(shí)分區(qū)。
    ? 不可使用 Truncate 命令清空臨時(shí)分區(qū)。
    #alter
    ? 當(dāng)表存在臨時(shí)分區(qū)時(shí),無法使用 Alter 命令對(duì)表進(jìn)行 Schema Change、Rollup 等變更操作。
    ? 當(dāng)表在進(jìn)行變更操作時(shí),無法對(duì)表添加臨時(shí)分區(qū)。

    3.4 通過JDBC訪問DORIS

    doris可以直接使用JDBC編程的方式訪問:

    查詢結(jié)果:

    3.5 導(dǎo)入數(shù)據(jù)

    3.5.1 Broker load

    通過 Broker 進(jìn)程訪問并讀取外部數(shù)據(jù)源(如 HDFS)導(dǎo)入到 Doris。用戶通過 Mysql 協(xié)議提交導(dǎo)入作業(yè)后,異步執(zhí)行。通過 SHOW LOAD 命令查看導(dǎo)入結(jié)果。

    3.5.2 Stream load

    用戶通過 HTTP 協(xié)議提交請(qǐng)求并攜帶原始數(shù)據(jù)創(chuàng)建導(dǎo)入。主要用于快速將本地文件或數(shù)據(jù)流中的數(shù)據(jù)導(dǎo)入到 Doris。導(dǎo)入命令同步返回導(dǎo)入結(jié)果。

    [root@CentOS7 data]# curl --location-trusted -u root:000000 -T table1.txt -XPUT http://CentOS7:8030/api/doris/tables1/_stream_load

    3.5.3 Insert

    類似 MySQL 中的 Insert 語句,Doris 提供 INSERT INTO tbl SELECT …; 的方式從 Doris 的表中讀取數(shù)據(jù)并導(dǎo)入到另一張表。或者通過 INSERT INTO tbl VALUES(…); 插入單條數(shù)據(jù)

    mysql> insert into table1 values(5,3,'helen',3);

    3.5.4 Multi load

    用戶通過 HTTP 協(xié)議提交多個(gè)導(dǎo)入作業(yè)。Multi Load 可以保證多個(gè)導(dǎo)入作業(yè)的原子生效

    3.5.5 Routine load

    用戶通過 MySQL 協(xié)議提交例行導(dǎo)入作業(yè),生成一個(gè)常駐線程,不間斷的從數(shù)據(jù)源(如 Kafka)中讀取數(shù)據(jù)并導(dǎo)入到 Doris 中

    3.5.6 數(shù)據(jù)導(dǎo)入場(chǎng)景說明

    用戶在接入 Doris 導(dǎo)入時(shí),一般會(huì)采用程序接入的方式,這樣可以保證數(shù)據(jù)被定期的導(dǎo)入到 Doris 中。下面主要說明了程序接入 Doris 的最佳實(shí)踐。

  • 選擇合適的導(dǎo)入方式:根據(jù)數(shù)據(jù)源所在位置選擇導(dǎo)入方式。例如:如果原始數(shù)據(jù)存放在 HDFS 上,則使用 Broker load 導(dǎo)入。
  • 確定導(dǎo)入方式的協(xié)議:如果選擇了 Broker load 導(dǎo)入方式,則外部系統(tǒng)需要能使用 MySQL 協(xié)議定期提交和查看導(dǎo)入作業(yè)。
  • 確定導(dǎo)入方式的類型:導(dǎo)入方式為同步或異步。比如 Broker load 為異步導(dǎo)入方式,則外部系統(tǒng)在提交創(chuàng)建導(dǎo)入后,必須調(diào)用查看導(dǎo)入命令,根據(jù)查看導(dǎo)入命令的結(jié)果來判斷導(dǎo)入是否成功。
  • 制定 Label 生成策略:Label 生成策略需滿足,每一批次數(shù)據(jù)唯一且固定的原則。這樣 Doris 就可以保證 At-Most-Once。
  • 程序自身保證 At-Least-Once:外部系統(tǒng)需要保證自身的 At-Least-Once,這樣就可以保證導(dǎo)入流程的 Exactly-Once。
    幾種導(dǎo)入方式的比較:
  • 3.5.7 參數(shù)說明

    FE配置:
    stream_load_default_timeout_second
    導(dǎo)入任務(wù)的超時(shí)時(shí)間(以秒為單位),導(dǎo)入任務(wù)在設(shè)定的 timeout 時(shí)間內(nèi)未完成則會(huì)被系統(tǒng)取消,變成 CANCELLED;默認(rèn)的 timeout 時(shí)間為 600 秒。如果導(dǎo)入的源文件無法在規(guī)定時(shí)間內(nèi)完成導(dǎo)入,用戶可以在 stream load 請(qǐng)求中設(shè)置單獨(dú)的超時(shí)時(shí)間。
    BE配置:
    streaming_load_max_mb
    Stream load 的最大導(dǎo)入大小,默認(rèn)為 10G,單位是 MB

    3.6 查詢操作

    3.6.1 數(shù)據(jù)查詢

    3.6.2 數(shù)據(jù)表查詢

    #查詢表的內(nèi)存限制

    mysql> SHOW VARIABLES LIKE "exec_mem_limit";

    exec_mem_limit 的單位是 byte,可以通過 SET 命令改變 exec_mem_limit 的值。如改為 8GB。

    mysql> SET exec_mem_limit = 8589934592;

    3.6.3 查詢超時(shí)

    #默認(rèn)查詢時(shí)間為 300 秒,超時(shí)會(huì)被 Doris 系統(tǒng) cancel 掉

    mysql> SHOW VARIABLES LIKE "%query_timeout%";

    #設(shè)置超時(shí)時(shí)間,單位s

    mysql> SET query_timeout = 60;

    ? 當(dāng)前超時(shí)的檢查間隔為 5 秒,所以小于 5 秒的超時(shí)不會(huì)太準(zhǔn)確。
    ? 以上修改同樣為 session 級(jí)別。可以通過 SET GLOBAL 修改全局有效

    3.6.4 Broadcast/Shuffle Join

    Broadcast(默認(rèn)查詢方式)
    將小表進(jìn)行條件過濾后,將其廣播到大表所在的各個(gè)節(jié)點(diǎn)上,形成一個(gè)內(nèi)存 Hash 表,然后流式讀出大表的數(shù)據(jù)進(jìn)行Hash Join。但是如果當(dāng)小表過濾后的數(shù)據(jù)量無法放入內(nèi)存的話,此時(shí) Join 將無法完成,通常的報(bào)錯(cuò)應(yīng)該是首先造成內(nèi)存超限

    mysql> select sum(table1.pv) from table1 join table2 where table1.siteid = 2;

    #顯示指定使用BroadCast

    mysql> select sum(table1.pv) from table1 join [broadcast] table2 where table1.siteid = 2; Shuffle Join

    也稱作 Partitioned Join。即將小表和大表都按照 Join 的 key 進(jìn)行 Hash,然后進(jìn)行分布式的 Join。這個(gè)對(duì)內(nèi)存的消耗就會(huì)分?jǐn)偟郊旱乃杏?jì)算節(jié)點(diǎn)上

    #顯示指定使用Shuffle Join

    mysql> select sum(table1.pv) from table1 join [shuffle] table2 where table1.siteid = 2;

    3.7 備份與恢復(fù)

    數(shù)據(jù)備份功能只支持版本0.8.2+

    Doris 支持將當(dāng)前數(shù)據(jù)以文件的形式,通過 broker 備份到遠(yuǎn)端存儲(chǔ)系統(tǒng)中。之后可以通過 恢復(fù) 命令,從遠(yuǎn)端存儲(chǔ)系統(tǒng)中將數(shù)據(jù)恢復(fù)到任意 Doris 集群。
    使用該功能,需要部署對(duì)應(yīng)遠(yuǎn)端存儲(chǔ)的 broker。如 BOS、HDFS 等。可以通過 SHOW BROKER; 查看當(dāng)前部署的 broker

    3.7.1 backup備份

    將指定表或分區(qū)的數(shù)據(jù),直接以 Doris 存儲(chǔ)的文件的形式,上傳到遠(yuǎn)端倉庫中進(jìn)行存儲(chǔ)。當(dāng)用戶提交 Backup 請(qǐng)求后,系統(tǒng)內(nèi)部會(huì)做如下操作:
    ? 快照及快照上傳
    快照階段會(huì)對(duì)指定的表或分區(qū)數(shù)據(jù)文件進(jìn)行快照。之后,備份都是對(duì)快照進(jìn)行操作。在快照之后,對(duì)表進(jìn)行的更改、導(dǎo)入等操作都不再影響備份的結(jié)果。快照只是對(duì)當(dāng)前數(shù)據(jù)文件產(chǎn)生一個(gè)硬鏈,耗時(shí)很少。快照完成后,會(huì)開始對(duì)這些快照文件進(jìn)行逐一上傳。快照上傳由各個(gè) Backend 并發(fā)完成。
    ? 元數(shù)據(jù)準(zhǔn)備及上傳
    數(shù)據(jù)文件快照上傳完成后,Frontend 會(huì)首先將對(duì)應(yīng)元數(shù)據(jù)寫成本地文件,然后通過 broker 將本地元數(shù)據(jù)文件上傳到遠(yuǎn)端倉庫。完成最終備份作業(yè)

    3.7.2 restore恢復(fù)

    需要指定一個(gè)遠(yuǎn)端倉庫中已存在的備份,然后將這個(gè)備份的內(nèi)容恢復(fù)到本地集群中。當(dāng)用戶提交 Restore 請(qǐng)求后,系統(tǒng)內(nèi)部會(huì)做如下操作:
    ? 在本地創(chuàng)建對(duì)應(yīng)的元數(shù)據(jù)
    這一步首先會(huì)在本地集群中,創(chuàng)建恢復(fù)對(duì)應(yīng)的表分區(qū)等結(jié)構(gòu)。創(chuàng)建完成后,該表可見,但是不可訪問。
    ? 本地snapshot
    這一步是將上一步創(chuàng)建的表做一個(gè)快照。這其實(shí)是一個(gè)空快照(因?yàn)閯倓?chuàng)建的表是沒有數(shù)據(jù)的),其目的主要是在 Backend 上產(chǎn)生對(duì)應(yīng)的快照目錄,用于之后接收從遠(yuǎn)端倉庫下載的快照文件。
    ? 下載快照
    遠(yuǎn)端倉庫中的快照文件,會(huì)被下載到對(duì)應(yīng)的上一步生成的快照目錄中。這一步由各個(gè) Backend 并發(fā)完成。
    ? 生效快照
    快照下載完成后,我們要將各個(gè)快照映射為當(dāng)前本地表的元數(shù)據(jù)。然后重新加載這些快照,使之生效,完成最終的恢復(fù)作業(yè)

    3.7.3 常用命令

    #REATE REPOSITORY
    創(chuàng)建一個(gè)遠(yuǎn)端倉庫路徑,用于備份或恢復(fù)。該命令需要借助 Broker 進(jìn)程訪問遠(yuǎn)端存儲(chǔ),不同的 Broker 需要提供不同的參數(shù)

    #BACKUP
    執(zhí)行一次備份操作

    #SHOW BACKUP
    查看最近一次backup的執(zhí)行情況

    #SHOW SNAPSHOT
    查看遠(yuǎn)端倉庫存在的備份

    #RESTORE
    執(zhí)行一次恢復(fù)操作

    #SHOW RESTORE
    查看最近一次restore的執(zhí)行情況

    #CANCEL BACKUP
    取消正在執(zhí)行的backup操作

    #CANCEL RESTORE
    取消正在執(zhí)行的restore操作

    #DROP REPOSITORY
    刪除已創(chuàng)建的遠(yuǎn)端倉庫。僅僅是刪除該倉庫在 Doris 中的映射,不會(huì)刪除實(shí)際的倉庫數(shù)據(jù)

    3.8 監(jiān)控和報(bào)警

    Doris 使用 Prometheus 和 Grafana 進(jìn)項(xiàng)監(jiān)控項(xiàng)的采集和展示
    省略。

    4 DORIS應(yīng)用場(chǎng)景

    4.1 DORIS添加KAFKA實(shí)時(shí)數(shù)據(jù)流

    4.1.1 doris訂閱kafka

    使用routine load的方式將kafka中的數(shù)據(jù)實(shí)時(shí)的導(dǎo)入到doris中。
    1、Doris內(nèi)部支持訂閱 Kafka 數(shù)據(jù)流,實(shí)現(xiàn)直接對(duì)接 Kafka:

    CREATE ROUTINE LOAD my_job ON db1.tbl1 COLUMNS DETERMINATED BY ',' COLUMNS (k1,k2,v1,v2,v3 = day(k1)) FROM KAFKA ("kafka_broker_list" = "xxx""kafka_topic" = "topic" )

    2、用戶數(shù)據(jù)源經(jīng) Kafka 消息隊(duì)列收集后,可以依次進(jìn)入到 Doris 中,通過 Doris 做報(bào)表展示和決策分析等工作

    4.1.2 保證數(shù)據(jù)不丟失

    精確記錄 Kafka 消費(fèi)的 Offset,只有在確認(rèn) Kafka 消息成功被 Doris 消費(fèi)時(shí),對(duì)應(yīng)的 Kafka 消息才會(huì)在 Mysql Meta 中被標(biāo)記為 Committed

    4.1.3 保證數(shù)據(jù)不重復(fù)

  • Label 生成策略:Label 生成策略需滿足,每一批次數(shù)據(jù)唯一且固定的原則。這樣 Doris 就可以保證 At-Most-Once
  • 在Doris進(jìn)行去重操作。
  • 4.2 MYSQL+DORIS

    將 Doris偽裝成一個(gè) MySQL 的存儲(chǔ)后端,類似于 MyISAM、InnoDB 一樣。這樣既能夠利用上 MySQL 對(duì)于 SQL 的支持,也能利用上 Doris對(duì)于大數(shù)據(jù)量的支持。由于這里 MySQL 是計(jì)算單點(diǎn),為了減輕 MySQL 的計(jì)算壓力,Doris 應(yīng)用了 MySQL 的 BKA(Batched Key Access)以及 MRR(Multi-Range Read)等機(jī)制盡量將計(jì)算下推到 Doris來完成,從而減輕 MySQL 的計(jì)算壓力
    架構(gòu)圖如下:

    4.3 HDFS+DORIS

    使用broker load的方式將hdfs中的數(shù)據(jù)導(dǎo)入到Doris中。依賴broker。

  • fs-site.xml 把你集群對(duì)應(yīng)的內(nèi)容寫進(jìn)去

  • 添加borker節(jié)點(diǎn)

  • mysql> ALTER SYSTEM ADD BROKER broker1 "hdfs_host:8000";
  • 查看broker
  • mysql> SHOW PROC “/brokers”;
  • Broker load 創(chuàng)建導(dǎo)入語句
  • mysql> LOAD LABEL db1.label1 (DATA INFILE("hdfs://abc.com:8888/user/palo/test/ml/file1")INTO TABLE tbl1COLUMNS TERMINATED BY ","(tmp_c1,tmp_c2)SET(id=tmp_c2,name=tmp_c1),DATA INFILE("hdfs://abc.com:8888/user/palo/test/ml/file2")INTO TABLE tbl2COLUMNS TERMINATED BY ","(col1, col2)where col1 > 1 ) WITH BROKER 'broker' ("username"="user","password"="pass" ) PROPERTIES ("timeout" = "3600" );

    4.4 DORIS在EASTICSEARCH中的應(yīng)用

    1、ES 的優(yōu)點(diǎn)是索引,可支持多列索引,甚至可支持全文語義索引(如 term,match,fuzzy 等);然而其缺點(diǎn)是沒有分布式計(jì)算引擎,不支持 join 等操作
    2、與 ES 相反,Palo 具備豐富的 SQL 計(jì)算能力,以及分布式查詢能力;然而其索引性能較低,不支持全文索引。
    3、Doris 在 ES 開發(fā)的過程中,分別借鑒 ES 和 Palo 的長處,支持了 Elasticsearch 多表 Join 操作,同時(shí)引入 Elasticsearch 的語義搜索功能,擴(kuò)充了 Doris 的查詢能力。

    使用方式:
    第一步:建立一張 ES 的外部表。

    第二步:在 ES 外部表中導(dǎo)入一些數(shù)據(jù):

    第三步:使用和 ES 一樣的搜索語句,進(jìn)行全文檢索查詢:

    4.5 DORIS個(gè)人感受

    從個(gè)人的使用中,我覺得DORIS比較適合實(shí)時(shí)/離線的業(yè)務(wù)數(shù)據(jù)的計(jì)算。

    首先從計(jì)算方面將,Doris兼容sql協(xié)議,讓它能很好的處理業(yè)務(wù)庫中的關(guān)系型數(shù)據(jù),然后它的缺點(diǎn)就在于對(duì)非關(guān)系型數(shù)據(jù)的處理了,因?yàn)閐oris實(shí)際上也是以表作為處理單位的。

    其次說說Doris的存儲(chǔ)。Doris的存儲(chǔ)十分類似于HDFS,分為FE和BE兩個(gè)組件。FE負(fù)責(zé)存儲(chǔ)元數(shù)據(jù),BE負(fù)責(zé)實(shí)際的數(shù)據(jù)存儲(chǔ)。但是從官網(wǎng)的介紹來看,它的功能又沒有HDFS那么強(qiáng)大,至少不能像HDFS那樣創(chuàng)建目錄,這樣就沒法做到數(shù)據(jù)的分層管理,只能是存儲(chǔ)。這個(gè)地方就有點(diǎn)類似于HBASE了。但是又和HBASE有一些不同,HBASE支持的數(shù)據(jù)存儲(chǔ)方式更加靈活,Doris對(duì)數(shù)據(jù)的計(jì)算又更加方便。

    再說說Doris的數(shù)據(jù)導(dǎo)入問題。Doris支持的五種兩類數(shù)據(jù)導(dǎo)入方式,大概就是流式、http方式的文件還有insert into了。方式多種多樣基本能覆蓋kafka、hdfs、mysql等作為數(shù)據(jù)上游。但是從官方的介紹來看,doris的數(shù)據(jù)導(dǎo)入是有一個(gè)弊端的,就是導(dǎo)入數(shù)據(jù)的部分異常,可能會(huì)導(dǎo)致整個(gè)任務(wù)的失敗:

    從以上幾點(diǎn)來看,個(gè)人認(rèn)為DORIS比較合適的場(chǎng)景架構(gòu)是mysql -> sqoop/canal ->kafka -> [hdfs] -> Doris。其中Doris在架構(gòu)中扮演的角色是作為實(shí)時(shí)查詢的計(jì)算引擎。Doris的insert into TableName select […]的導(dǎo)數(shù)據(jù)的方式,可以建立新表專門用來存儲(chǔ)計(jì)算的結(jié)果;
    但是當(dāng)數(shù)據(jù)量超過PB級(jí)別的時(shí)候,官方還是建議使用Hive。

    4.6 DORIS在美團(tuán)點(diǎn)評(píng)的實(shí)踐

    參考鏈接:
    https://blog.bcmeng.com/post/meituan-doris.html

    4.6.1 美團(tuán)外賣Doris實(shí)踐概述

    Apache Doris已經(jīng)在百度,美團(tuán),京東,小米等互聯(lián)網(wǎng)期中中廣泛使用。在這里只簡單介紹下Doris與美團(tuán)外賣的準(zhǔn)實(shí)時(shí)數(shù)倉。
    美團(tuán)外賣Doris準(zhǔn)實(shí)時(shí)數(shù)倉結(jié)構(gòu)圖如下:

    上圖是Doris在美團(tuán)外賣準(zhǔn)實(shí)時(shí)數(shù)倉中應(yīng)用的簡單架構(gòu)。數(shù)據(jù)會(huì)從kafka和hive中進(jìn)入Doris,然后每 15 分鐘會(huì)通過 Doris to Doris ETL 計(jì)算實(shí)時(shí)和離線的同環(huán)比(外賣的特殊業(yè)務(wù)需求)。
    這個(gè)應(yīng)用中主要依賴了 Doris 以下特性:
    ? 同時(shí)支持實(shí)時(shí)和離線數(shù)據(jù)導(dǎo)入。
    ? Doris To Doris ETL, 這個(gè)指的是 Doris insert into select 的功能
    ? 還有一個(gè)是主鍵去重,建模時(shí)用的是 Doris 的 UNIQUE KEY 模型,Doris 的主鍵去重和主鍵更新也是我們用戶廣泛使用的功能。
    另外,帖子中還對(duì)比了Storm實(shí)時(shí)數(shù)倉和Doris準(zhǔn)實(shí)時(shí)數(shù)倉的開發(fā)效率:

    生產(chǎn)模式開發(fā)效率運(yùn)維成本
    Storm實(shí)時(shí)20人日代碼運(yùn)維成本高
    Doris準(zhǔn)實(shí)時(shí)10人日SQL運(yùn)維成本低

    源于Doris對(duì)SQL協(xié)議的兼容,Doris的開發(fā)效率要遠(yuǎn)遠(yuǎn)高于Storm。

    4.6.2 美團(tuán)外賣Doris準(zhǔn)實(shí)時(shí)數(shù)倉平臺(tái)建設(shè)

    美團(tuán)外賣的Doris數(shù)倉建設(shè)大致分兩條線:hive to doris 和 kafka to doris。

    Hive To Doris

    流程示意圖:

    Hive To Doris 是基于 Doris 的 Http mini load 實(shí)現(xiàn)的。首先會(huì)用 Hive 客戶端將 Hive 表數(shù)據(jù)經(jīng)過過濾,Null 值處理,格式轉(zhuǎn)換,Split 后存儲(chǔ)到 HDFS 上,然后多線程從 HDFS 將數(shù)據(jù)拉取到本地,緊接著將數(shù)據(jù)通過 Http 方式導(dǎo)入到 Doris 中。
    Doris HTTP mini Load 對(duì)單次導(dǎo)入文件的大小是有限制的。這里分享這個(gè) Hive 小文件合并過程,是用 Hive 小文件合并解決了大文件 Split 的問題,可以利用 MR 來分布式 Split,讓 Split 過程十分高效:

    這里需要注意的一點(diǎn)是,在極端情況下,有些 ORC 格式存儲(chǔ)的 Hive 表壓縮比很高,導(dǎo)致第一步MR的單個(gè) Mapper 輸出文件大小達(dá)到好幾 G,進(jìn)而無法觸發(fā) Hive 小文件合并過程。 解決方法可以調(diào)大 Doris BE 的mini_load_max_mb參數(shù),或者讓用戶修改 Hive 表存儲(chǔ)格式。

    Kafka To Doris

    流程示意圖:
    ![在這里插入圖片描述](https://img-blog.csdnimg.cn/20200722115856816.png?type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM3MDY3NzUy,size_16,color_FFFFFF,t_70

    圖中是 Doris 的 Stream Load 示意圖,FE 負(fù)責(zé)事務(wù)管理和導(dǎo)入的 Plan 生成,執(zhí)行 Plan 的 BE 會(huì)將實(shí)時(shí)數(shù)據(jù)傳輸?shù)矫啃袛?shù)據(jù)對(duì)應(yīng)的 Tablet 所在的 BE 上,數(shù)據(jù)首先會(huì)以 Skiplist 的數(shù)據(jù)結(jié)構(gòu)保存在內(nèi)存中,等超過一定大小后,會(huì) flush 成列存。
    這里需要注意兩點(diǎn):

  • Doris 的 Stream Load 是基于 HTTP 的。
  • Doris 的 Stream Load 有 Label 機(jī)制,也就是一次導(dǎo)入可以指定一個(gè) Label,Doris 內(nèi)部一個(gè) Label 會(huì)對(duì)應(yīng)一次事務(wù),所以可以保證同一個(gè) Label 的導(dǎo)入只會(huì)成功提交一次。
    由于 Doris 的 Stream Load 當(dāng)時(shí)不支持從 Kafka 直接消費(fèi)數(shù)據(jù),所以原貼作者就在 Doris 的外圍實(shí)現(xiàn)了 Kafka to Doris,和 Druid 的 tranquility 比較類似。和 Druid 的 tranquility 不同的是,該架構(gòu)可以保證 Exactly Once,Exactly Once 即數(shù)據(jù)不丟也不重:

    ? 不丟 是通過 Mysql 記錄 Kafka Offsets 來 保證的,只有確認(rèn) Kafka 的一批數(shù)據(jù)已經(jīng)被 Doris 成功消費(fèi)后,才會(huì)更新 mysql 中 Kafka 的 offsets。
    ? 不重 是通過 Doris 的 label 機(jī)制保證的,前面提到 Doris 內(nèi)部的事務(wù)機(jī)制可以保證同一個(gè) Label 的導(dǎo)入只會(huì)成功提交一次。
  • 5 DORIS FAQS

    5.1 安裝GCC之后版本號(hào)仍然是CENTOS7默認(rèn)的4.8

    修改環(huán)境變量GCC:

    [root@CentOS7 ~]# vi ~/.bash_profile export CC=/usr/local/bin/gcc export CXX=/usr/local/bin/g++

    5.2 安裝MYSQL報(bào)錯(cuò)UNIT MYSQLD.SERVICE COULD NOT BE FOUND

    報(bào)錯(cuò):
    Unit mysqld.service could not be found

    請(qǐng)查找mysql.server然后復(fù)制到/etc/init.d/mysqld

    [root@CentOS7 be]# find ./ -name ‘mysql.server’ [root@CentOS7 be]# cp mysql.server /etc/init.d/mysqld

    5.3 手動(dòng)編譯SH BUILD.SH失敗

    5.3.1 報(bào)錯(cuò)download ora158.tar.gz failed

    使用官方推薦的方式,用docker鏡像編譯

    5.3.2 報(bào)錯(cuò)gcc -V找不到指定的目錄

    開始的時(shí)候安裝的GCC 7.3,發(fā)現(xiàn)版本過高導(dǎo)致gcc -V這個(gè)命令已經(jīng)廢棄了。刪除gcc7.3重新安裝gcc5.5(但是版本一定要在4.8.2以上)

    5.4 部署FE,報(bào)錯(cuò)找不到IMAGE.0

    報(bào)錯(cuò):
    /opt/doris/output/fe/doris-meta/image/image.0 not found

    配置文件的問題,配置文件需要指定并創(chuàng)建meta_dir。詳見FE配置文件2.2.3

    5.5 使用MYSQL連接FE失敗

    報(bào)錯(cuò):

    ERROR 2003 (HY000) Cant’t connect to MySQL server on ‘CentOS7’(111)

    解決方案:
    配置文件中綁定的IP需要帶上網(wǎng)關(guān)
    priority_networks =CentOS7/24

    使用免密登陸
    mysql -h CentOS7 -P 9030 -uroot

    5.6 添加BE失敗

    報(bào)錯(cuò)
    連接FE之后使用Alter語句添加BE失敗:

    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SYSTEM ADD BACKEND 'CentOS7:9050'' at line 1


    失敗原因:
    mysql連接FE失敗,使用正確的連接方式、端口號(hào)連接FE才能創(chuàng)建BE
    [root@CentOS7]# mysql -h CentOS7 -P 9030 -uroot

    界面訪問UI失敗
    http://CentOS7:8030/system

    5.7 BE啟動(dòng)失敗

    報(bào)錯(cuò):

    解決:
    1.修改最大文件句柄數(shù)

    echo "* soft nofile 204800" >> /etc/security/limits.conf echo "* hard nofile 204800" >> /etc/security/limits.confecho "* soft nproc 204800" >> /etc/security/limits.conf echo "* hard nproc 204800 " >> /etc/security/limits.conf

    修改 /etc/sysctl.conf, 加入

    echo fs.file-max = 6553560 >> /etc/sysctl.conf

    2.查看是否修改成功

    cat /etc/security/limits.conf cat /etc/sysctl.conf

    3.重啟

    reboot -h now

    5.8 BE連接失敗

    報(bào)錯(cuò)如下:可以查詢到BE,但是顯示BE連接失敗

    解決:
    在 be/bin/be.pid中有BE的進(jìn)程號(hào),查看進(jìn)程是否啟動(dòng)成功

    總結(jié)

    以上是生活随笔為你收集整理的Apache Doris技术实践的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    天天干,狠狠干 | 97超碰超碰 | 天天综合网国产 | 日韩精品中文字幕在线 | 色是在线视频 | 狠狠躁天天躁 | 欧美另类色图 | a午夜在线 | 久久成| 黄网站色视频 | 亚洲综合欧美日韩狠狠色 | 香蕉视频在线看 | 日日夜夜精品免费视频 | 久久久999免费视频 日韩网站在线 | 黄色com | 成年人视频在线免费观看 | 99久久精品免费看国产免费软件 | 黄色网址中文字幕 | 精品国产免费久久 | 欧美精品资源 | 日韩在线视频免费看 | 日韩av片免费在线观看 | 69精品在线观看 | 99视频一区 | 中文字幕在线免费播放 | 人成在线免费视频 | 久久免费a | 婷婷久久国产 | 国产成人精品一区在线 | 免费久久久久久 | 99久久久久久国产精品 | 香蕉免费 | 五月婷婷六月丁香在线观看 | 97综合在线 | 久久精品久久精品久久精品 | 国产中文字幕三区 | 欧美日韩在线免费观看视频 | 一区av在线播放 | 在线免费色视频 | 精品一区二区三区久久 | 国内外成人在线 | 成人黄色在线 | 亚洲精品在线国产 | 亚洲天堂免费视频 | 久久欧美在线电影 | 国产精品美女久久久久久网站 | 久久日韩精品 | 亚洲精品视频免费 | 91高清视频 | 国产 字幕 制服 中文 在线 | 在线观看一区 | 99久久免费看 | 一本大道久久精品懂色aⅴ 五月婷社区 | 亚洲va男人天堂 | 亚洲成a人片综合在线 | 日韩成人在线一区二区 | 在线看毛片网站 | 午夜精品一区二区三区在线 | 亚洲另类交 | 99久久精品免费看 | 九九综合在线 | 久久热亚洲 | 丁香在线观看完整电影视频 | 在线看v片| 亚洲一区美女视频在线观看免费 | 激情久久一区二区三区 | 香蕉成人在线视频 | 国外成人在线视频网站 | 五月天六月丁香 | 韩国av免费观看 | 9999毛片| 国产成人精品一区二区 | 日韩专区在线观看 | 又黄又爽又刺激的视频 | 久久国产亚洲精品 | 久久色在线播放 | 欧美久久久影院 | www.久久99| 久久免费视频3 | 国产美女永久免费 | 日韩av免费大片 | 国产一区精品在线观看 | 亚洲激情在线 | 91成品人影院 | 国产+日韩欧美 | 69国产精品成人在线播放 | 国产在线a免费观看 | 中文字幕一区二区三区在线播放 | 久久久午夜精品理论片中文字幕 | 五月花丁香婷婷 | 中文字幕a在线 | 99热精品免费观看 | 美女网站在线 | 欧美日韩不卡一区二区 | 欧美日韩另类在线观看 | 四虎在线免费观看 | 天天操天天操天天操天天操天天操天天操 | 超碰97在线资源 | 国产午夜精品一区 | 岛国av在线 | 亚洲精品一区中文字幕乱码 | 久久精品视频免费播放 | 国产精品一区二区在线观看免费 | 久久久久一区二区三区四区 | 视频三区在线 | 国产97碰免费视频 | 日韩av影片在线观看 | 国产区欧美 | 嫩模bbw搡bbbb搡bbbb | 美女搞黄国产视频网站 | 国产香蕉97碰碰碰视频在线观看 | 在线日韩亚洲 | 欧美日韩在线视频免费 | 在线播放av网址 | ,午夜性刺激免费看视频 | 久久九九影视 | 国产精品1区2区3区 久久免费视频7 | 麻豆一二 | 久久视频99 | 日韩视频一区二区三区在线播放免费观看 | 在线观看精品 | 欧美日韩在线视频免费 | 国产高清免费观看 | av片子在线观看 | 成人午夜电影网 | 一级黄色片在线播放 | 欧美激情综合五月色丁香小说 | 国产精品永久免费在线 | 国产精品免费人成网站 | 欧美一级视频在线观看 | 91精品国产乱码在线观看 | 91香蕉国产 | 17videosex性欧美 | 九色激情网 | 又黄又爽又色无遮挡免费 | 国产精品片 | 午夜av大片| 少妇bbbb | 国产在线观看免费观看 | 国产色a在线观看 | 国产精品久久久久9999吃药 | 日本不卡视频 | 99久久婷婷国产综合精品 | 麻豆精品传媒视频 | 色永久免费视频 | 黄色一级在线视频 | 国产精品门事件 | 日本精品在线视频 | 国产精品爽爽久久久久久蜜臀 | 国产精品国产亚洲精品看不卡 | 成人av地址| 国产成人精品av | 四虎亚洲精品 | free. 性欧美.com | 天天天色综合a | 美女在线黄 | 成人免费xxx在线观看 | 亚洲精品88欧美一区二区 | 草樱av| 亚洲成年人在线播放 | 99久久精品国产一区二区成人 | 国产小视频你懂的在线 | 国产精品一二 | 91高清免费观看 | 国产亚洲精品久久久久久移动网络 | 中文字幕人成人 | 久操视频在线观看 | 91麻豆高清视频 | 三级黄色网址 | 久久精品一区二 | 日韩在线精品一区 | 国产伦理一区二区三区 | 国产午夜在线观看视频 | 成年人视频在线免费播放 | 91久久久久久久一区二区 | 91国内产香蕉| 国产日韩欧美在线看 | 国产美女视频免费观看的网站 | 日韩精品一区二区电影 | 91亚洲国产成人 | 在线日韩精品视频 | 超碰在线98 | 97在线观看免费高清完整版在线观看 | 亚洲欧美激情插 | 天天色天天射天天干 | 国产69久久精品成人看 | 69视频永久免费观看 | 色视频国产直接看 | 久久99亚洲精品久久 | 日日色综合 | 超碰人人av| 日韩视频免费 | 92国产精品久久久久首页 | 91精品成人| 欧美亚洲另类在线视频 | 在线观看网站你懂的 | 精品久久久久久久久久久久久久久久 | 天天干夜夜爱 | 久久精品韩国 | 中文字幕文字幕一区二区 | 国产91小视频 | 久草在线免费电影 | 国产精品久久久视频 | 91自拍91 | 国产色视频123区 | 亚洲国产欧美在线看片xxoo | 色婷婷中文 | 亚洲经典视频 | 婷婷播播网 | 成人中文字幕+乱码+中文字幕 | 日韩免费高清在线 | 国产精品视频一二三 | 欧美一区二区在线看 | 夜夜夜影院 | 亚洲精品国产品国语在线 | 麻豆91网站 | 中文字幕乱码日本亚洲一区二区 | 欧美日韩中文另类 | 日本成人中文字幕在线观看 | 亚洲国产成人久久综合 | 国产精品欧美激情在线观看 | 成人小视频在线播放 | 2019天天干天天色 | 天天操天天干天天综合网 | 精品国产乱码久久久久久1区二区 | 午夜免费在线观看 | 免费观看91 | 国产福利中文字幕 | 午夜三级影院 | 一区二区中文字幕在线 | 久久看片 | 国产黄av | 激情欧美一区二区免费视频 | 国产精品欧美久久久久天天影视 | 国产一区欧美二区 | 欧美美女激情18p | 一区二区三区高清不卡 | 日韩午夜视频在线观看 | 色偷偷av男人天堂 | 国产高清不卡一区二区三区 | 在线看成人 | www.黄色片网站 | 久久人人爽人人爽人人片av软件 | 国产一区二区不卡视频 | 免费国产一区二区 | 精品久久久久久一区二区里番 | 黄色av网站在线观看 | 色综合久久中文字幕综合网 | 免费高清在线观看电视网站 | 午夜精品视频在线 | 国产麻豆果冻传媒在线观看 | 欧美久久久久 | 91在线国产观看 | a v在线视频 | 欧美日韩午夜爽爽 | 日韩免费电影网 | 激情文学丁香 | 精品视频成人 | 精品国产亚洲一区二区麻豆 | 欧美做受高潮 | 在线日韩中文字幕 | 插插插色综合 | 永久中文字幕 | 亚洲 综合 专区 | 国产偷国产偷亚洲清高 | 九九交易行官网 | 欧美日韩国产网站 | 日韩欧美久久 | 久久男女视频 | 香蕉免费在线 | 91超碰免费在线 | 在线看av的网址 | 在线 成人 | 五月天天在线 | 久久99中文字幕 | 国产精品黄网站在线观看 | 成人四虎| 玖玖视频免费在线 | 欧美在线视频一区二区三区 | 97品白浆高清久久久久久 | 欧美另类人妖 | 在线看v片成人 | 亚在线播放中文视频 | a级片韩国| 久久精品视频观看 | 欧美大片www | 97超碰在线资源 | 国产成人在线观看 | 999久久精品 | 精品一区二区亚洲 | a精品视频 | 亚洲精品国偷拍自产在线观看 | 在线观看欧美成人 | 国产青青青 | 日本天天色 | 免费av福利| 狠狠色噜噜狠狠狠 | 精品在线播放视频 | 国产高清精| 91中文字幕视频 | 黄色免费视频在线观看 | 国产精品大尺度 | 日韩中文在线字幕 | 99成人免费视频 | 午夜美女视频 | 日韩 精品 一区 国产 麻豆 | 色999在线 | 一区二区三区三区在线 | 看片一区二区三区 | 免费看的黄色 | 91在线播放综合 | 婷婷综合 | 国内外成人在线视频 | 97视频在线免费观看 | 丁香久久激情 | 456免费视频 | 欧美最新另类人妖 | 精品嫩模福利一区二区蜜臀 | 国产精品观看在线亚洲人成网 | 国产在线a不卡 | 日日操天天射 | 91在线视频免费观看 | 在线观看免费观看在线91 | 天天射天天射天天 | 国内精品久久久精品电影院 | 国产欧美综合视频 | 欧美成年人在线视频 | 97视频在线观看播放 | 91久久国产综合精品女同国语 | 天堂va在线高清一区 | 99久久久久成人国产免费 | 欧美日韩国产一二三区 | 五月婷婷在线观看 | 黄色三级av | 国产91精品一区二区绿帽 | 国产午夜精品一区二区三区欧美 | 国产日本在线观看 | 国产精品v a免费视频 | 国产资源精品在线观看 | 91九色在线视频观看 | 亚洲欧美日韩国产 | 九九久久影院 | 日本系列中文字幕 | 视频高清 | 在线观看91久久久久久 | 免费一级黄色 | 亚洲精品久久久久58 | 亚洲精品自在在线观看 | 在线播放精品一区二区三区 | www五月婷婷 | 夜夜躁日日躁狠狠久久av | 青草视频网 | 久久夜色网 | 精品人人爽| 在线黄色观看 | 久久伊人操 | 中文字幕成人一区 | 色噜噜狠狠色综合中国 | 亚洲在线免费视频 | 欧美 亚洲 另类 激情 另类 | 麻豆视频一区 | 99视频在线免费播放 | 超碰97在线资源站 | 激情小说网站亚洲综合网 | av高清一区| 精品一区二区三区四区在线 | 国产黄大片 | 成人久久网 | 欧美激情精品久久久 | 欧美一区二区三区在线看 | 最近中文字幕完整高清 | 人人添人人澡 | 国产精品99久久久久的智能播放 | 久久国内精品99久久6app | 亚洲精品美女在线观看 | 日韩在线高清视频 | 亚洲天堂网站视频 | 久久6精品 | 99在线高清视频在线播放 | 97精品国产97久久久久久粉红 | 久久免费视频观看 | 国产丝袜制服在线 | www.超碰| 亚洲精品99久久久久久 | 国产尤物在线视频 | 婷婷国产一区二区三区 | 99re8这里有精品热视频免费 | 中文字幕精品一区久久久久 | 国产欧美在线一区 | 欧美精品第一 | 香蕉影院在线 | 成人av网站在线观看 | 国产午夜免费视频 | 久久毛片高清国产 | 操操操com | 色综久久| 国产成人精品一区在线 | 日韩在线视频一区 | 久久免费视频5 | av观看久久久 | 天天摸天天干天天操天天射 | 国产日产精品久久久久快鸭 | 四虎永久国产精品 | 97色免费视频| 日韩毛片在线一区二区毛片 | 亚洲乱亚洲乱亚洲 | av免费网| 免费高清男女打扑克视频 | 国产在线观看二区 | 成人久久精品视频 | 尤物一区二区三区 | 伊人狠狠色 | 在线电影 你懂得 | 91av网址 | 国产精品99久久久久的智能播放 | 亚洲2019精品 | 日韩电影中文,亚洲精品乱码 | www在线免费观看 | 亚洲永久精品视频 | 在线最新av | 97操碰 | 91成人免费在线 | 中文乱幕日产无线码1区 | 欧美亚洲国产一卡 | 欧美日韩免费观看一区二区三区 | 久久91网 | 国产黄视频在线观看 | 99欧美精品 | 日韩久久久久久久久久久久 | 久视频在线播放 | 97视频久久久| 中文在线a在线 | 日韩高清在线观看 | 中字幕视频在线永久在线观看免费 | 天天操天天操天天爽 | 在线观看中文字幕视频 | 成人丝袜| 国产精品美女久久久久久 | 91精品系列 | 国产精品免费av | av不卡中文字幕 | 在线不卡中文字幕播放 | 91成人区| 精品视频中文字幕 | 中文字幕二区三区 | 国产精品1000 | 国模一区二区三区四区 | 中文日韩在线视频 | 成年人免费电影 | 亚洲国内精品在线 | 91久久国产自产拍夜夜嗨 | av大全在线播放 | 欧美精品国产精品 | 天天操天天舔天天爽 | 久久国产经典视频 | 天天色中文| 黄色软件在线观看免费 | 精品毛片在线 | 黄色大全在线观看 | 久久黄色免费观看 | 又黄又爽又无遮挡免费的网站 | 婷婷五月在线视频 | 国产精品国产亚洲精品看不卡 | 精品久久久久久久久久岛国gif | 欧美日韩不卡在线 | 四虎国产免费 | 天天综合成人网 | 麻豆国产视频下载 | 日韩免费中文字幕 | 四虎影视8848dvd | 欧美激情第28页 | 久久久国产影视 | 久要激情网 | 97成人精品区在线播放 | 9797在线看片亚洲精品 | 一区二区三区在线电影 | 色91在线视频 | 99色在线观看 | 久久精品国产一区 | 91视频麻豆 | 日韩av在线高清 | 精品免费国产一区二区三区四区 | 麻豆视频91 | 国产视频在线一区二区 | 一区二区三区手机在线观看 | 欧美做受高潮 | 最新日本中文字幕 | 中文字幕二区三区 | 亚洲精品乱码久久久久久 | 国产特级毛片aaaaaaa高清 | 国产在线1区 | 久久看片网 | 亚洲毛片在线观看. | www色| 精品国产_亚洲人成在线 | 久久精品99久久 | 国产精品激情在线观看 | 少妇自拍av| 一区二区激情 | 成人av高清在线 | 成年人视频在线免费 | 永久免费毛片在线观看 | 91成人看片 | 日本中文在线播放 | 午夜视频欧美 | 午夜视频在线瓜伦 | 欧美精品资源 | 免费av福利| 91在线视频观看 | 99久久久国产精品美女 | 夜夜操天天干, | 亚洲综合色网站 | 91在线免费观看国产 | 麻豆视传媒官网免费观看 | 免费欧美高清视频 | 全久久久久久久久久久电影 | 999抗病毒口服液 | 国产v在线观看 | 成人av一区二区兰花在线播放 | 特黄色大片 | 欧美在线一二 | 中文字幕亚洲不卡 | 久久色在线播放 | 中文一区二区三区在线观看 | 天天插一插 | 亚洲成人资源在线观看 | 国产视频资源 | 欧美另类高清 videos | 五月天婷亚洲天综合网精品偷 | 午夜a区| 美女啪啪图片 | 九九爱免费视频 | av久久在线 | 青青河边草观看完整版高清 | 玖玖玖在线观看 | 欧美成人日韩 | 国产一二区精品 | 日本黄色大片免费看 | 91av视频在线观看免费 | 日韩欧美精品免费 | 人人干网| 久久综合九色综合欧美就去吻 | 在线看毛片网站 | 日韩专区av| 精品国产1区二区 | 日韩毛片一区 | 亚洲国产精品va在线看 | 久久黄页 | 久久看片网 | 日本精品一区二区在线观看 | 日韩videos | 波多野结衣在线播放一区 | 久久91久久久久麻豆精品 | 91精品国产欧美一区二区成人 | aaa毛片视频 | 人人要人人澡人人爽人人dvd | 中文字幕免费观看视频 | 亚洲日b视频| 国产色黄网站 | 91精品影视| 国产在线观看你懂得 | 亚洲精选国产 | 国产精品久久久久aaaa九色 | 久操伊人 | 国产精品午夜免费福利视频 | 五月天亚洲精品 | 久久无码av一区二区三区电影网 | 色婷婷骚婷婷 | 99视频| 国产精品网红直播 | 国产视频观看 | 91丨九色丨国产在线 | 久久久久久久久爱 | 日韩,精品电影 | 日本爱爱免费视频 | 国产剧情在线一区 | 日韩中文字幕第一页 | 亚洲a成人v | 日本精品在线看 | 最近中文字幕国语免费av | 精品久久中文 | 91黄色免费网站 | 毛片一区二区 | 香蕉视频在线观看免费 | 91精品免费在线观看 | 国产精品伦一区二区三区视频 | 91看片看淫黄大片 | 人人澡人人爱 | 狠狠色伊人亚洲综合网站野外 | 国产精品免费在线播放 | 91麻豆精品国产 | 成年人在线免费视频观看 | 久久久999| 国产精品美女久久久久久2018 | 色综合久久久久久久 | 欧美久久成人 | 婷婷av电影 | 午夜视频在线观看一区二区三区 | 狠狠色狠狠色综合日日小说 | 色综合亚洲精品激情狠狠 | 婷婷色av| 最新真实国产在线视频 | 99免费在线观看视频 | 国产精品乱码久久久久久1区2区 | 精品久久免费看 | 91亚洲精品久久久久图片蜜桃 | 免费成人结看片 | 国产精品ⅴa有声小说 | 久草网首页 | 国产二区电影 | 日韩精品三区四区 | 国产精品久久久久久久av电影 | 日韩欧美综合 | 婷婷六月网 | 色婷av | 二区精品视频 | 日韩精品五月天 | 六月色 | 欧美日韩在线精品一区二区 | 97视频在线观看视频免费视频 | 中文国产字幕在线观看 | 国产成人专区 | 色在线国产 | 看毛片网站 | 亚洲精品国产日韩 | 久久精品视频在线 | 久久久网站| 精品国产一区二区三区噜噜噜 | 久久99精品久久久久婷婷 | 天天操天天干天天爽 | 中文字幕在线日本 | 高清国产一区 | 99久久99久久精品国产片果冰 | 久久久久久久久久久电影 | 波多野结衣在线播放一区 | 久久精品小视频 | 国产专区视频在线 | 日韩sese| 天天爱天天干天天爽 | 亚洲永久精品在线观看 | 麻豆精品传媒视频 | 天天操天天射天天插 | 国产精品高清在线观看 | 在线视频免费观看 | 亚洲精品中文字幕在线观看 | 日韩av在线资源 | 欧美国产一区二区 | 91热这里只有精品 | 日韩在线观看a | japanesexxxhd奶水| 日韩精品在线观看av | 在线黄色毛片 | 国产高清视频在线 | 日本不卡久久 | 中文字幕一区二区三区四区在线视频 | 在线观看视频在线观看 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 韩日视频在线 | 日韩在线视频看看 | 国产四虎在线 | 午夜久久视频 | 久久国产精品影片 | 91天堂影院 | 亚洲免费成人 | 亚洲综合小说电影qvod | 亚洲精品久久久蜜桃直播 | 久久亚洲欧美日韩精品专区 | 激情开心网站 | 国产精品18久久久久久久网站 | 天天综合中文 | av黄色大片 | 国产亚洲一区二区三区 | 毛片精品免费在线观看 | 人人网人人爽 | 国产精品成人品 | 黄色一区二区在线观看 | 中中文字幕av在线 | 久草a视频 | 亚洲高清在线精品 | 日韩中文字幕亚洲一区二区va在线 | 91黄色在线视频 | 久久久91精品国产 | 亚洲激情视频在线 | 色综合网| 欧美国产视频在线 | 日韩在线免费观看视频 | 一区精品在线 | 99热这里有 | 国产日韩欧美在线播放 | 国产亚洲婷婷免费 | 国产精在线 | 国产精品一区久久久久 | 9i看片成人免费看片 | 成人小视频在线播放 | 欧美精品一区二区在线观看 | 婷婷av在线 | 国产精品1区2区在线观看 | 视频一区二区精品 | 在线免费观看黄色小说 | 日韩国产欧美在线视频 | 天天天天天天干 | 日本中文字幕免费观看 | 久久精品91久久久久久再现 | 天堂在线成人 | 日韩在线观看中文字幕 | 成人xxxx | 又粗又长又大又爽又黄少妇毛片 | 国产精品综合在线 | 人人草网站 | 国产高清亚洲 | 在线看污网站 | 久久久久久久网站 | 黄色av网站在线观看免费 | 色综合久久五月 | 亚洲综合视频在线播放 | 国产精品嫩草影院9 | 久久综合五月婷婷 | 中文字幕色网站 | 热久久最新地址 | 91社区国产高清 | www.精选视频.com | 999久久久久久久久6666 | 色噜噜噜 | 天天透天天插 | 男女啪啪免费网站 | 亚洲欧美经典 | 亚洲精品啊啊啊 | 青春草视频在线播放 | 欧美a性 | 五月天婷婷在线播放 | 视频国产一区二区三区 | 激情久久五月 | 欧美精品视 | 激情网五月天 | 日韩av免费一区 | 九九热在线精品 | 免费黄色av电影 | 久久久久久久久影视 | 免费看三级黄色片 | 国产免费叼嘿网站免费 | 天天草天天操 | 日韩激情一二三区 | 久久国产精品99国产精 | 一级片免费视频 | avhd高清在线谜片 | 亚洲精品国 | www黄色av| 人人爽人人爽人人片av | av手机版 | 日韩欧美极品 | 免费看黄的视频 | 天天做天天爱天天综合网 | 欧美精品久久久久 | 日韩a在线播放 | 国产亚洲久一区二区 | 中文字幕在线视频第一页 | 天天爱天天草 | 人人爱夜夜操 | 69xx视频 | 成年人黄色大片在线 | 亚洲精区二区三区四区麻豆 | 中文字幕在线影院 | 亚洲成人一区 | 97在线视频观看 | 亚洲欧美视频在线播放 | 亚洲国产精品传媒在线观看 | 在线观看成人一级片 | 伊人久久婷婷 | 99中文视频在线 | 亚洲在线精品视频 | 久久精品xxx| 黄色大片日本 | 免费黄色激情视频 | 亚洲国产97在线精品一区 | 日韩精品视频免费看 | 97超碰免费在线 | 激情网五月婷婷 | 超薄丝袜一二三区 | 日韩中文字幕亚洲一区二区va在线 | 亚洲一区精品二人人爽久久 | av免费电影在线 | 久久论理 | 精品一区二区av | 欧美日韩色婷婷 | 国产精品99久久免费观看 | 2023亚洲精品国偷拍自产在线 | 国产精品9999久久久久仙踪林 | 中文字幕在线视频免费播放 | 高清国产在线一区 | 91欧美国产| 91视频在线看 | 毛片区| 久久国产精品久久精品 | 亚洲视频精选 | 欧美另类美少妇69xxxx | 9999国产精品 | 亚洲欧美婷婷六月色综合 | av色综合网 | 久久成人资源 | 亚洲黄色免费电影 | 中文字幕一区二区在线观看 | 中文国产在线观看 | 亚洲最新av在线网站 | 久久福利综合 | 成人av视屏 | 国产高清久久久久 | 国产一级h| 在线99 | 欧美日本一区 | 99精品国产一区二区三区麻豆 | 黄色免费网站 | 九九热有精品 | 国产精品自在线拍国产 | 婷婷久久精品 | 日韩欧美视频免费在线观看 | 激情欧美日韩一区二区 | 国产精品一区二区三区在线播放 | 丝袜美女视频网站 | 日日夜夜骑 | 色www免费视频 | 欧美国产一区在线 | 色婷婷亚洲综合 | 免费观看一区二区 | 青青草国产免费 | 国产xvideos免费视频播放 | 91人人爽人人爽人人精88v | 久久免费影院 | 2021国产精品视频 | 丁香六月伊人 | 国产91九色蝌蚪 | 丰满少妇对白在线偷拍 | 91黄视频在线 | av电影一区二区 | 五月天丁香 | 精品不卡av | 在线亚洲天堂网 | 天天拍天天操 | 波多野结衣视频一区二区 | 国产视频在线观看一区 | 成人三级网址 | 久亚洲精品| 久久免费福利视频 | 黄色三级网站在线观看 | 在线看国产日韩 | 日韩国产高清在线 | 黄色av免费电影 | av网站手机在线观看 | 一区二区在线不卡 | 视频在线观看入口黄最新永久免费国产 | 国产一区二区影院 | 狠狠干夜夜爽 | 午夜精品一区二区三区在线视频 | 久草久草视频 | 天天操狠狠操网站 | 国产成人精品一区二区三区免费 | 毛片网在线播放 | 91天堂素人约啪 | www.成人精品 | 在线成人中文字幕 | 99在线视频观看 | 97在线视频观看 | 久久久久欠精品国产毛片国产毛生 | 天天操夜夜干 | 日韩欧美在线视频一区二区三区 | 91精品国产高清自在线观看 | 麻豆免费在线播放 | 亚洲精品国产精品国自产观看 | 国产亚洲成人精品 | 色综合天天综合 | 日日综合网 | 成年人免费看 | 精品欧美日韩 | 99久久久国产精品免费观看 | 特级毛片在线 | 亚洲精选视频在线 | 99久久精品国产一区二区成人 | 成人三级视频 | 人人爽久久涩噜噜噜网站 | 五月天中文字幕mv在线 | 欧美精品久久久久久久久免 | 在线观看a视频 | 深爱五月激情网 | 色婷婷狠狠五月综合天色拍 | 亚洲国产999| 看片网站黄色 | 亚洲一区在线看 | 91成人蝌蚪 | 亚洲免费观看视频 | 成人黄色免费在线观看 | 国产精品久久久久久久久久不蜜月 | 国产 欧美 在线 | 国产精品视频99 | 国产美女视频免费观看的网站 | 高潮久久久久久久久 | 高清不卡一区二区在线 | 免费看国产a | 精精国产xxxx视频在线播放 | 免费视频黄色 | 中文字幕资源网在线观看 | 男女免费视频观看 | 国产成人精品网站 | 午夜三级大片 | 欧美一级看片 | 狠狠色综合网站久久久久久久 | 国产打女人屁股调教97 | av网站播放 | 免费精品| 中文字幕在线资源 | 国产一区二区精品 | 一区二区三区国产欧美 | 91丨九色丨国产女 | 成人午夜电影免费在线观看 | 亚洲欧洲日韩 | 三级在线国产 | 天堂在线v| 日本久久综合视频 | 五月天天色 | 天天干天天干天天干天天干天天干天天干 | 日韩久久激情 | 欧美福利精品 | 日韩一二三区不卡 | 日日夜夜av | 蜜臀av性久久久久av蜜臀妖精 | 日韩精品一区二区三区在线播放 | 国产精品国产三级在线专区 | 首页中文字幕 | 国产精品一区二区三区四区在线观看 | 国产一级a毛片视频爆浆 | 亚洲成av人片在线观看香蕉 | 国产日产精品久久久久快鸭 | 国产精品区在线观看 | 黄色片免费在线 | 69国产成人综合久久精品欧美 | 麻豆视频在线免费观看 | 国产色视频网站 | 免费观看国产精品视频 | 日色在线视频 | 在线观看网站av | 综合网色 | 在线免费视 | 不卡视频一区二区三区 | 国产成人1区 | 人人艹视频 | 免费大片av | 亚洲不卡123 | 成人高清在线观看 | 久久综合之合合综合久久 | 2020天天干夜夜爽 | 日韩在线视频一区 | 日日夜夜精品视频 | 一级黄色av | 91香蕉视频色版 | 少妇按摩av| 色狠狠久久av五月综合 | 91亚洲夫妻 | 成人小视频免费在线观看 | 播五月综合 | 91大神精品视频在线观看 | 精品一区精品二区高清 | 黄色三级免费观看 | 日本久久久亚洲精品 | 国内精品久久久久国产 | 日韩3区 | 成人在线播放视频 | 91免费网 | 超碰人人av| 国产亚洲精品久久久久久大师 | 18国产精品白浆在线观看免费 | 久久天天躁狠狠躁亚洲综合公司 | 国产精品一区二区久久久 | 日日爱影视 | 香蕉视频免费在线播放 | 午夜色站| 久久久久久高清 | 91av手机在线| 亚洲综合色丁香婷婷六月图片 | 久久久视屏 | 在线免费观看黄色大片 | 伊人资源视频在线 | 亚洲欧美日韩国产一区二区三区 | 在线看毛片网站 | 91丨九色丨蝌蚪丨对白 | 中文字幕文字幕一区二区 | 精品99在线| 日韩影视精品 | 亚洲电影图片小说 | av 一区 二区 久久 | www.色就是色 | 亚洲欧美视频网站 | 91亚洲影院 | 久久精品www人人爽人人 | 午夜色影院 | 欧美激情精品久久久 | 国产精品女视频 | 久久久亚洲电影 | 国产亚洲精品久久久久久移动网络 | 日韩精品中文字幕在线播放 | 贫乳av女优大全 |