Apache Doris編譯安裝記錄
一、概述
Apache Doris是一個現代化的MPP分析型數據庫產品。僅需亞秒級響應時間即可獲得查詢結果,有效地支持實時數據分析。Apache Doris的分布式架構非常簡潔,易於運維,並且可以支持10PB以上的超大數據集。
百度有提供編譯好的程序包,考慮到不具備最新版本特性,故單獨基於master分支代碼進行編譯打包。
百度編譯好的Doris包下載頁面:http://palo.baidu.com/docs/下載專區/預編譯版本下載
Doris官方編譯參考:
http://doris.apache.org/master/zh-CN/installing/compilation.html
編譯環境使用官方推薦及提供的docker編譯環境(build-env-1.3)來編譯打包
默認使用JDK11編譯,則運行環境也需要安裝使用相同JDK版本。
注意:版本區分CPU 支持 avx2 指令版本和不支持版本。
二、編譯打包
2.1.環境准備
[root@dbserver ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@dbserver ~]# yum -y install maven git docker-ce
[root@dbserver ~]# systemctl start docker
[root@dbserver ~]# systemctl enable docker
2.2.通過GIT下載Doris代碼
[root@dbserver ~]# mkdir -p /usr/local/src/doris/
[root@dbserver ~]# cd /usr/local/src/doris
[root@dbserver doris]# git clone https://github.com/apache/incubator-doris.git
切換central,可加快FE編譯速度
把central換為 https://maven.aliyun.com/repository/central
vi /usr/local/src/doris/incubator-doris/fe/pom.xml
<repository>
<id>central</id>
<name>central maven repo https</name>
<!--<url>https://repo.maven.apache.org/maven2</url>-->
<url>https://maven.aliyun.com/repository/central</url>
</repository>
2.3.拉取docker編譯環境鏡像
[root@dbserver doris]# docker pull apachedoris/doris-dev:build-env-1.3
[root@dbserver doris]# docker images
2.4.啟動編譯環境
這里掛載源碼目錄以及m2目錄
[root@dbserver doris]# docker run -it -v /root/.m2:/root/.m2 -v /usr/local/src/doris/incubator-doris/:/usr/local/src/doris/incubator-doris/ --privileged=true apachedoris/doris-dev:build-env-1.3
2.5.進入容器進行編譯
[root@dbserver doris]# docker container ls
#進入容器
[root@dbserver doris]# docker exec -it 3f5c bash
#切換到編譯目錄
[root@3f5c88f541df ~]# cd /usr/local/src/doris/incubator-doris
#編譯生成doris,編譯后be和fe安裝包在生成的output/目錄下
[root@3f5c88f541df incubator-doris]# sh build.sh
2.6 編譯問題解決
2.6.1.parallel_hashmap/phmap.h: No such file or directory 問題解決
[root@dbserver ~]# mkdir -p /usr/local/src/parallel-hashmap/
[root@dbserver ~]# cd /usr/local/src/parallel-hashmap/
[root@dbserver parallel-hashmap]# wget https://github.com/greg7mdp/parallel-hashmap/archive/refs/tags/1.33.tar.gz
[root@dbserver parallel-hashmap]# tar xvf 1.33.tar.gz
[root@dbserver parallel-hashmap]# cp -fR /usr/local/src/parallel-hashmap/parallel-hashmap-1.33/parallel_hashmap /usr/local/src/doris/incubator-doris/be/src/
2.6.2. Illegal instruction (core dumped) 錯誤問題
BE無法啟動,會提示“ Illegal instruction (core dumped) ”錯誤信息
原因可能是服務器環境不支持avx2指令集(如果是虛擬機環境,可能存在此問題)
通過“cat /proc/cpuinfo|grep avx2”檢查確認下,如果無內容返回,那就是不支持avx2指令集
解決辦法,編譯時關閉avx2支持
[root@3f5c88f541df incubator-doris]# USE_AVX2=OFF ./build.sh
三、部署
3.1.環境准備
[root@dbserver ~]# yum install gcc-c++ libstdc++-static ant cmake byacc flex automake libtool binutils-devel bison ncurses-devel java-11-openjdk-devel.x86_64 mysql-community-client.x86_64 unixODBC.x86_64 unixODBC-devel.x86_64
#注意,這里安裝mysql-community-client.x86_64僅是需要使用mysql命令操作doris,無需啟動mysql服務,也無需安裝mysql完整服務
[root@dbserver ~]# ulimit -n 65536;
[root@dbserver ~]# vi /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
* soft nproc 131072
* hard nproc 131072
環境配置
vi /etc/profile
export JAVA_HOME=/usr/lib/jvm/java-11
export DORIS_HOME=/usr/local/doris/be
source /etc/profile
可通過 alternatives --config java 切換JDK版本
3.2.拷貝編譯包到安裝目錄
cp -fR /usr/local/src/doris/incubator-doris/output /usr/local/
mv /usr/local/src/doris/incubator-doris/output /usr/local/doris
3.3.修改存儲目錄(可選)
[root@dbserver ~]# mkdir -p /doris_data/{storage,doris-meta}
[root@dbserver ~]# cd /usr/local/doris
[root@dbserver doris]# vi be/conf/be.conf
# storage_root_path = ${DORIS_HOME}/storage
storage_root_path = /doris_data/storage
[root@dbserver doris]# vi fe/conf/fe.conf
# meta_dir = ${DORIS_HOME}/doris-meta
meta_dir = /doris_data/doris-meta
3.4.設置網絡環境
#查看本機環境配置
[root@dbserver doris]# ip -a
[root@dbserver doris]# vi fe/conf/fe.conf
priority_networks = 192.168.1.100/24;
[root@dbserver doris]# vi be/conf/be.conf
priority_networks = 192.168.1.100/24;
3.5.啟動FE
[root@dbserver doris]# sh fe/bin/start_fe.sh --daemon
[root@dbserver doris]# cat fe/log/fe.out
在 FE 中添加所有 BE 節點
[root@dbserver doris]# mysql -h192.168.1.100 -P9030 -uroot
mysql> set password = password('Root#123');
mysql> alter system add backend "192.168.1.100:9050";
mysql> show proc "/frontends";
mysql> show proc "/backends";
mysql> show proc "/brokers";
3.6.啟動BE
[root@dbserver doris]# sh be/bin/start_be.sh --daemon
[root@dbserver doris]# cat be/log/be.INFO
3.7.創建數據庫和用戶
mysql> create database test;
mysql> create user developer@'%' identified by "Developer#123";
mysql> create user bi_user@'%' identified by "Bi_user#123";
mysql> grant Admin_priv on *.* to 'developer'@'%';
mysql> grant select_priv on test.* to 'bi_user'@'%';
3.8.訪問WEB管理平台
http://ip:8030/
使用數據庫賬號和密碼登錄
3.9.集群部署
擴容詳細參考官方文檔: http://doris.apache.org/master/zh-CN/installing/install-deploy.html#集群部署
把新增BE節點加到BE集群方式: alter system add backend "192.168.1.101:9050";
把新增FE節點加到FE集群方式: alter system add follower "192.168.1.101:9010"; 或 alter system add observer "192.168.1.101:9010";
3.10.版本升級
如果是小版本升級,可直接更新 fe/lib/palo-fe.jar 及be/lib內容即可,如果是大版本升級則建議整體更新
3.11.外部表支持
# yum install unixODBC.x86_64 unixODBC-devel.x86_64 -y
#https://dev.mysql.com/downloads/connector/odbc/
# rpm -ivh mysql-connector-odbc-8.0.25-1.el7.x86_64.rpm
# myodbc-installer -d -l
3.12.fe.conf其他常用參數說明
- lower_case_table_names=1
表名大小寫敏感性設置,該變量兼容MySQL。需在集群初始化時通過fe.conf 指定 lower_case_table_names=
1進行配置,集群初始化完成后無法通過set
語句修改該變量,也無法通過重啟、升級集群修改該變量。
- dynamic_partition_enable = true
啟用動態分區