Apache Doris技术实践
文章目錄
- 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的軟硬件需求
| CentOS/Ubuntu | 7.1及以上/16.04及以上 |
| Java | 1.8及以上 |
| GCC | 4.8.2及以上 |
| cmake | |
| python | 2.7及以上 |
測(cè)試環(huán)境
| FrontEnd | 8核+ | 8G+ | 10GB+ | 千兆網(wǎng)卡 | 1 |
| BackEnd | 8核+ | 16G+ | 50GB+ | 千兆網(wǎng)卡 | 1-3 |
生產(chǎn)環(huán)境
| FrontEnd | 16核+ | 64G+ | 100GB+ | 萬兆網(wǎng)卡 | 1-5 |
| BackEnd | 16核+ | 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 混部,需注意資源競爭問題,并保證元數(shù)據(jù)目錄和數(shù)據(jù)目錄分屬不同磁盤
1.4 Doris各個(gè)實(shí)例通信網(wǎng)絡(luò)端口
| BE | be_port | 9060 | FE --> BE | BE 上 thrift server 的端口,用于接收來自 FE 的請(qǐng)求 |
| BE | webserver_port | 8040 | BE <–> BE | BE 上的 http server 的端口 |
| BE | heartbeat_service_port | 9050 | FE --> BE | BE 上心跳服務(wù)端口(thrift),用于接收來自 FE 的心跳 |
| BE | brpc_port | 8060 | FE<–>BE, BE <–> BE | BE 上的 brpc 端口,用于 BE 之間通訊 |
| FE | http_port | 8030 | FE <–> FE,用戶 | FE 上的 http server 端口 |
| FE | rpc_port | 9020 | BE --> FE, FE <–> FE | FE 上的 thrift server 端口 |
| FE | query_port | 9030 | 用戶 | FE 上的 mysql server 端口 |
| FE | edit_log_port | 9010 | FE <–> FE | FE 上的 bdbje 之間通信用的端口 |
| Broker | broker_ipc_port | 8000 | FE --> Broker, BE --> Broker | Broker 上的 thrift server,用于接收請(qǐng)求 |
1.5 中間件版本選取
| CentOS | CentOS-7-x86_64-DVD-2003.iso |
| Java | 1.8.0_121 |
| Maven | 3.5.4 |
| Doris | 0.12.0 |
| cMake | 2.8.12.2 |
| python | 2.7.5 |
| gcc | 5.5.0 |
| docker | 18.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=02.關(guān)閉swap
[root@CentOS7 opt]# echo"vm.swappiness = 0">> /etc/sysctl.conf [root@CentOS7 opt]# swapoff -a3.檢查swap關(guān)閉
2.1.4 HostName設(shè)置
[root@CentOS7]# hostname -s CentOS72.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:$PATH2.添加環(huán)境變量,刷新文件使其生效
[hadoop@hadoop04~]$ /etc/profile.d/jdk.sh3.查閱是否安裝成功
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 bzip23.進(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 install5.查看安裝結(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.ce2.安裝完成之后查看docker版本
3.啟動(dòng)docker
4.設(shè)置開機(jī)自啟
[root@CentOS7opt]# systemctl enable docker2.1.8 安裝mysql
查看初始密碼:
[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使用查詢到的初始密碼登陸客戶端
[root@CentOS7 package]# mysql -uroot-pMabbdrdTaRv0Gywq修改密碼:
mysql> SET PASSWORD=PASSWORD('000000');2.2 Doris安裝
2.2.1 環(huán)境檢查
2.2.2 Doris編譯
網(wǎng)上有很多教程指導(dǎo)Doris的編譯,眾多的信息反而讓人摸不清頭腦,這里使用官網(wǎng)推薦的模擬docker鏡像的鏡像的方式編譯Doris
官方鏈接
docker run -it apachedoris/doris-dev:build-env-1.2
見到這張圖就說明編譯成功了
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
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)
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ū)建表
這個(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ū)建表
這個(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 查看表
3.3.7 分區(qū)
在0.12.0版本中添加了臨時(shí)分區(qū)的功能。只有分區(qū)表能建臨時(shí)分區(qū),歸屬于某一分區(qū)表
#添加臨時(shí)分區(qū)
#可以通過 ALTER TABLE ADD TEMPORARY PARTITION 語句對(duì)一個(gè)表添加臨時(shí)分區(qū)
#刪除臨時(shí)分區(qū)
#可以通過 ALTER TABLE DROP TEMPORARY PARTITION 語句刪除一個(gè)表的臨時(shí)分區(qū)
#替換分區(qū)
#可以通過 ALTER TABLE DROP TEMPORARY PARTITION 語句刪除一個(gè)表的臨時(shí)分區(qū)
3.3.8 表結(jié)構(gòu)變更
類似于mysql
? 增加列
? 刪除列
? 修改列類型
? 改變列順序
#增加列
#查看修改
mysql> SHOW ALTER TABLE COLUMN;#取消正在執(zhí)行的作業(yè)
CANCEL ALTER TABLE COLUMN FROM table13.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_load3.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)入方式的比較:
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)存超限
#顯示指定使用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:
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ù)
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)
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ā)效率:
| 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
流程示意圖:
責(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 當(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/mysqld5.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失敗:
失敗原因:
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ù)
修改 /etc/sysctl.conf, 加入
echo fs.file-max = 6553560 >> /etc/sysctl.conf2.查看是否修改成功
cat /etc/security/limits.conf cat /etc/sysctl.conf3.重啟
reboot -h now5.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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么是高防CDN防护
- 下一篇: 华硕主板win10 使用固态硬盘,机