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
启用动态分区