首先编译,完了之后分别对BE和FE进行部署,可以参考官方文档。
编译完了之后需要把output内部的文件拷贝FE、BE的部署文件到指定节点。
拉取Docker镜像
docker pull apache/incubator-doris:build-env-ldb-toolchain-latest
这里的docker,应该是打包机的作用。
启动并进入容器
完了之后启动容器并进入容器。同时做好磁盘的映射关系。
第一个v是本地的m2地址和容器内部的映射,以防每次容器重启编译时出现下载依赖包;
第二个v是Doris 挂载本地 Doris 源码目录的方式运行镜像,这样编译的产出二进制文件会存储在宿主机中,不会因为镜像退出而消失。
$ docker run -it \-v /your/local/.m2:/root/.m2 \-v /your/local/incubator-doris-DORIS-x.x.x-release/:/root/incubator-doris-DORIS-x.x.x-release/ \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文件夹里的be和fe分别复制到一个地方,然后在启动be和fe容器的时候,映射到该目录上。
并且,在启动容器的时候,端口映射要做一下,不然后面再做就没那么方便了,可能需要DNAT的技术了。
在生产环境中,BE和FE尽量在不同的机器中吗?
一个机器可以安装多个BE,但是只能安装一个FE
FE部署
拷贝 FE 部署文件到指定节点
即将源码编译生成的 output 下的 fe 文件夹拷贝到 FE 的节点指定部署路径下
配置FE
- 配置文件为 conf/fe.conf。其中注意:meta_dir:元数据存放位置。默认在 fe/doris-meta/ 下。需手动创建该目录。
- 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
