本文基于Doris1.2.4.1版本部署,其他版本不同之处还请见谅
注意:在Doris官网下载时,记得查询自己的服务器cpu核心架构,下载合适的架构才能运行
Doris在安装部署时,可以使用官方提供的前后端和依赖包进行安装,同时可以自行编译,此处介绍使用官方脚本:
没什么难度,按照[Doris官方教程](快速开始 - Apache Doris)启动即可,可能个别机器会出现启动失败的问题,建议去github的issue中查看
我们进入到 apache-doris-x.x.x/be
目录
cd apache-doris-x.x.x/be
修改 BE 配置文件 conf/be.conf
,这里我们主要修改两个参数:priority_networks
及 storage_root
,如果你需要更多优化配置,请参考 BE 参数配置说明,进行调整。
priority_networks=172.23.16.0/24
注意:
这个参数我们在安装的时候是必须要配置的,特别是当一台机器拥有多个IP地址的时候,我们要为 BE 指定唯一的IP地址。
Be配置时必须注意一下,这个地址后面绝对不能加分号,否则在启动be的start.sh时会以下下错误:
(core dumped) ${LIMIT:+${LIMIT}} "${DORIS_HOME}/lib/doris_be" "$@" 2>&1 < /d
storage_root_path=/path/your/data_dir
注意:
- 默认目录在 BE安装目录的 storage 目录下。
- BE 配置的存储目录必须先创建好
注意:
由于从 1.2 版本开始支持 Java UDF 函数,BE 依赖于 Java 环境。所以要预先配置 JAVA_HOME
环境变量,也可以在 start_be.sh
启动脚本第一行添加 export JAVA_HOME=your_java_home_path
来添加环境变量。
安装 Java UDF 函数,因为从1.2 版本开始支持Java UDF 函数,需要从官网下载 Java UDF 函数的 JAR 包(所谓的官网就在下载路径中的dependencies的tar包中,名称是:java-udf-jar-with-dependencies.jar,一直没找到,此处来自本人的咒骂)放到 BE 的 lib 目录下,否则可能会启动失败,如下报错:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/doris/udf/JniUtil
Caused by: java.lang.ClassNotFoundException: org.apache.doris.udf.JniUtil
at java.net.URLClassLoader.findClass(URLClassLoader.java:387)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
WARNING: Logging before InitGoogleLogging() is written to STDERR
W0530 12:47:01.236318 3087945 doris_main.cpp:382] Failed to initialize JNI: [INTERNAL_ERROR]Failed to find JniUtil class.
在 BE 安装目录下执行下面的命令,来完成 BE 的启动。
./bin/start_be.sh --daemon
在此之前建议将mysql链接到全局命令,否则每次需要去mysql路径下执行,很麻烦:
ln -sf xxx命令路径 /usr/bin/xxx
通过MySQL 客户端连接到 FE 之后执行下面的 SQL,将 BE 添加到集群中
ALTER SYSTEM ADD BACKEND "be_host_ip:heartbeat_service_port";
be.conf
里的 priority_networks
匹配be.conf
里的 heartbeat_service_port
匹配,默认是 9050
。你可以在 MySQL 命令行下执行下面的命令查看 BE 的运行状态。
SHOW BACKENDS\G
示例:
mysql> SHOW BACKENDS\G
*************************** 1. row ***************************
BackendId: 10003
Cluster: default_cluster
IP: 172.21.32.5
HeartbeatPort: 9050
BePort: 9060
HttpPort: 8040
BrpcPort: 8060
LastStartTime: 2022-08-16 15:31:37
LastHeartbeat: 2022-08-17 13:33:17
Alive: true
SystemDecommissioned: false
ClusterDecommissioned: false
TabletNum: 170
DataUsedCapacity: 985.787 KB
AvailCapacity: 782.729 GB
TotalCapacity: 984.180 GB
UsedPct: 20.47 %
MaxDiskUsedPct: 20.47 %
Tag: {"location" : "default"}
ErrMsg:
Version: 1.1.2-rc03-ca55ac2
Status: {"lastSuccessReportTabletsTime":"2022-08-17 13:33:05","lastStreamLoadTime":-1,"isQueryDisabled":false,"isLoadDisabled":false}
1 row in set (0.01 sec)
Doris BE 的停止可以通过下面的命令完成
./bin/stop_be.sh
首先按照官方的安装,进行初始化,类似我这样的小白可能会有以下疑问:
安装完成后,使用本服务器的对外地址访问:8030端口即可看到相关内容
等待学习后,更新;
docker pull apache/doris:build-env-ldb-toolchain-latest`
docker run -it apache/doris:build-env-ldb-toolchain-latest
建议以挂载本地 Doris 源码目录的方式运行镜像,这样编译的产出二进制文件会存储在宿主机中,不会因为镜像退出而消失。
同时,建议同时将镜像中 maven 的 .m2
目录挂载到宿主机目录,以防止每次启动镜像编译时,重复下载 maven 的依赖库。
docker run -it
-v /your/local/.m2:/root/.m2
-v /your/local/doris-DORIS-x.x.x-release/:/root/doris-DORIS-x.x.x-release/ apache/doris:build-env-ldb-toolchain-latest
解释(以上地址自行配置):
第一个**-v**,本地服务器maven的.m2地址,** : **后为docker内部地址
第二个**-v**,本地源码的地址,,** : **后为docker内部地址
apache/doris:build-env-ldb-toolchain-latest,为docker的TAG名称
以下是我的配置:
docker run -it -v /root/.m2:/root/.m2 -v /home/doris/doris/:/root/doris/ apache/doris:build-env-ldb-toolchain-latest
3、编译 Doris
先通过以下命令查看编译机器是否支持avx2指令集
cat /proc/cpuinfo | grep avx2
不支持则使用以下命令进行编译
$ USE_AVX2=0 sh build.sh
如果支持,可不加 USE_AVX2=0 ,直接进行编译
$ sh build.sh
编译完成后,产出文件在 output/
目录中。
注意:
如果你是第一次使用
build-env-for-0.15.0
或之后的版本,第一次编译的时候要使用如下命令:
sh build.sh --clean --be --fe
这是因为 build-env-for-0.15.0 版本镜像升级了 thrift(0.9 -> 0.13),需要通过 --clean 命令强制使用新版本的 thrift 生成代码文件,否则会出现不兼容的代码。
编译完成后,产出文件在 output/
目录中。
1、运行build.sh脚本中的github包无法下载
使用加速方式下载好,随后修改build.sh文件(注释以下下函数调用):
#update_submodule "be/src/apache-orc" "apache-orc" "https://github.com/apache/doris-thirdparty/archive/refs/heads/orc.tar.gz"
#update_submodule "be/src/clucene" "clucene" "https://github.com/apache/doris-thirdparty/archive/refs/heads/clucene.tar.gz"
tar -zxvf doris-thirdparty-orc.tar.gz -C /home/doris/doris/be/src/apache-orc --strip-components=1
rm doris-thirdparty-orc.tar.gz
tar -zxvf doris-thirdparty-clucene.tar.gz -C /home/doris/doris/be/src/clucene --strip-components=1
rm doris-thirdparty-clucene.tar.gz
本人在编译时,出现编译前端报错的问题,暂时未解决,查找方案后更新;