首先编译,完了之后分别对BE和FE进行部署,可以参考官方文档。

编译完了之后需要把output内部的文件拷贝FE、BE的部署文件到指定节点。

拉取Docker镜像

docker pull apache/incubator-doris:build-env-ldb-toolchain-latest

这里的docker,应该是打包机的作用。

启动并进入容器

完了之后启动容器并进入容器。同时做好磁盘的映射关系。

第一个v是本地的m2地址和容器内部的映射,以防每次容器重启编译时出现下载依赖包;
第二个v是Doris 挂载本地 Doris 源码目录的方式运行镜像,这样编译的产出二进制文件会存储在宿主机中,不会因为镜像退出而消失。

  1. $ docker run -it \
  2. -v /your/local/.m2:/root/.m2 \
  3. -v /your/local/incubator-doris-DORIS-x.x.x-release/:/root/incubator-doris-DORIS-x.x.x-release/ \
  4. apache/incubator-doris:build-env-ldb-toolchain-latest

此时的run -it就是进入到该容器的内部了。

例如

docker run -it \
-v /root/.m2:/root/.m2 \
-v /opt/soft/incubator-doris-DORIS-1.0.0-release/:/root/incubator-doris-DORIS-1.0.0-release/ \
apache/incubator-doris:build-env-ldb-toolchain-latest

下载并解压

此时已经是进入到docker容器内了,可以先cd到release的目录然后执行下载解压和编译,这样编译的结果在宿主机就能看到了。

wget https://dist.apache.org/repos/dist/dev/incubator/doris/xxx.tar.gz

例如
wget [https://dist.apache.org/repos/dist/dev/incubator/doris/doris-manager/1.0.0/apache-doris-incubating-manager-src-1.0.0-rc03.tar.gz](https://dist.apache.org/repos/dist/dev/incubator/doris/doris-manager/1.0.0/apache-doris-incubating-manager-src-1.0.0-rc03.tar.gz)

编译

参考官方手册即可

http://www.manongjc.com/detail/23-fnnliyyfyigcocz.html

出现的报错

make[1]: execvp: /root/incubator-doris-DORIS-0.13.0-release/incubator-doris/gensrc/script/gen_build_version.sh: Permission denied

给这个文件加一个x权限chmod + x /root/incubator-doris-DORIS-0.13.0-release/incubator-doris/gensrc/script/gen_build_version.sh

编译完成后,编译后的文件会在output文件夹内。

部署

参考一个文章

我这里的做法是,把第一个编译的镜像保留不动,编译出来的output文件夹里的be和fe分别复制到一个地方,然后在启动be和fe容器的时候,映射到该目录上。

并且,在启动容器的时候,端口映射要做一下,不然后面再做就没那么方便了,可能需要DNAT的技术了。

在生产环境中,BE和FE尽量在不同的机器中吗?

一个机器可以安装多个BE,但是只能安装一个FE
image.png

FE部署

拷贝 FE 部署文件到指定节点
即将源码编译生成的 output 下的 fe 文件夹拷贝到 FE 的节点指定部署路径下

配置FE

  1. 配置文件为 conf/fe.conf。其中注意:meta_dir:元数据存放位置。默认在 fe/doris-meta/ 下。需手动创建该目录。
  2. fe.conf 中 JAVA_OPTS 默认 java 最大堆内存为 4GB,建议生产环境调整至 8G 以上。

启动FE

sh bin/start_fe.sh —daemon
FE进程启动进入后台执行。日志默认

BE部署

拷贝 BE 部署文件到所有要部署 BE 的节点将源码编译生成的 output 下的 be 文件夹拷贝到 BE 的节点的指定部署路径下。

配置BE

修改 be/conf/be.conf。主要是配置 storage_root_path:数据存放目录。默认在be/storage下,需要手动创建该目录。多个路径之间使用 ; 分隔(最后一个目录后不要加 ;)

在 FE 中添加所有 BE 节点

其实FE部署好之后,可以通过mysql客户端进行连接了FE了
./mysql-client -h host -P port -uroot
这里的host是FE节点的ip,可以通过在FE容器中安装net-tools查看其ip信息,port 为 fe/conf/fe.conf 中的 query_port;默认使用 root 账户,无密码登录。

登录MySQL后,执行以下命令来添加每一个 BE:
ALTER SYSTEM ADD BACKEND "host:port";
其中 host 为 BE 所在节点 ip;port 为 be/conf/be.conf 中的 heartbeat_service_port。

启动 BE

sh bin/start_be.sh —daemon

检查状态

还是在mysql客户端内部执行命令
SHOW PROC '/backends' \G
image.png