目标:对doris2.1.11版本进行编译,搭建开发环境
系统环境:编译服务器系统Centos7.9 (远程服务器),开发系统Windows10
步骤参考:官网
使用 Docker 开发镜像编译(推荐) - Apache Doris
FE 开发环境搭建 - IntelliJ IDEA - Apache Doris
Doris BE 开发调试环境 -- clion - Apache Doris
问题:官网介绍步骤是可以顺利编译的,但是be的调试环境有问题的
1 Docker编译需要解决ssh连接的问题,已经解决,可以参考我写过的文章
2 ssh连接成功了,但是官方镜像中ldb-toolchain的gdb是有问题的
3 在容器中使用ssh会有其他莫名问题
针对以上问题调整编译与开发环境搭建方式
1 官方编译环境
参考的是doris编译环境Dockerfile,源码目录docker/compilation/Dockerfile
按照这个Dockerfile上的顺序,在centos服务器中执行,需要执行的内容如下
# Switch repos to point to to vault.centos.org because CentOS 7 is EOL
RUN sed -i \
-e 's/^mirrorlist/#mirrorlist/' \
-e 's/^#baseurl/baseurl/' \
-e 's/mirror\.centos\.org/vault.centos.org/' \
/etc/yum.repos.d/*.repo
# install epel repo for ccache
yum install epel-release -y && yum install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm -y && yum clean all && yum makecache
install dependencies
yum install -y byacc patch automake libtool perf vim make which file ncurses-devel gettext-devel unzip bzip2 zip util-linux \
wget git python2 bison java-1.8.0-openjdk-devel
# clean cache
yum clean all
# install maven 3.6.3
mkdir -p /usr/share/maven /usr/share/maven/ref \
&& wget -q -O /tmp/apache-maven.tar.gz https://doris-thirdparty-1308700295.cos.ap-beijing.myqcloud.com/tools/apache-maven-3.6.3-bin.tar.gz \
&& tar -xzf /tmp/apache-maven.tar.gz -C /usr/share/maven --strip-components=1 \
&& rm -f /tmp/apache-maven.tar.gz \
&& ln -s /usr/share/maven/bin/mvn /usr/bin/mvn
# install nodejs
wget https://doris-thirdparty-1308700295.cos.ap-beijing.myqcloud.com/tools/node-v12.13.0-linux-x64.tar.gz \
-q -O /tmp/node-v12.13.0-linux-x64.tar.gz \
&& cd /tmp/ && tar -xf node-v12.13.0-linux-x64.tar.gz \
&& cp -r node-v12.13.0-linux-x64/* /usr/local/ \
&& rm /tmp/node-v12.13.0-linux-x64.tar.gz && rm -rf node-v12.13.0-linux-x64
# install ldb-toolchain
# 用0.27版本替换掉官方选的0.17
wget https://github.com/amosbird/ldb-toolchain_gen/releases/download/v0.27/ldb-toolchain_gen.sh \
-q -O /tmp/ldb_toolchain_gen.sh \
&& sh /tmp/ldb_toolchain_gen.sh /opt/ldb-toolchain/ \
&& rm /tmp/ldb_toolchain_gen.sh
# install ccache
wget https://doris-community-bj-1308700295.cos.ap-beijing.myqcloud.com/tools/ccache-4.8.tar.gz \
-q -O /tmp/ccache-4.8.tar.gz \
cd /tmp/ && tar xzf ccache-4.8.tar.gz \
cd ccache-4.8 \
cmake -B _build -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_BUILD_TYPE=Release . \
cmake --build _build --config Release -j 4 \
cp _build/ccache /opt/ldb-toolchain/bin/
# disable auto enable ccache
# and resolve curl error setting certificate verfiy location error
rm -f /etc/profile.d/ccache.* \
cp /etc/pki/tls/certs/ca-bundle.crt /etc/ssl/certs/ca-certificates.crt
2 安装第三方包
安装第三方包,使用镜像中的第三方包
# 启动官方容器
docker run -dit \
--name t1 \
--hostname doris \
apache/doris:build-env-for-2.1 \
/usr/sbin/init
# 进入容器内部
docker exec -it t1 bash
# 进入容器中第三方包所在路径
cd /var/local
# 压缩所有第三方包
tar -czvf thirdparty.tar.gz thirdparty
# 将第三方包从容器复制到服务器上
# 在服务器中执行,不是容器中
docker cp t1:/var/local/thirdparty.tar.gz /opt
# 解压第三方包
cd /opt
tar -xvf thirdparty.tar.gz
3 配置环境变量
# 在/etc/profile文件末尾添加
export JAVA_HOME="/usr/lib/jvm/java-1.8.0"
export MAVEN_HOME="/usr/share/maven"
export REPOSITORY_URL="https://doris-thirdparty-repo.bj.bcebos.com/thirdparty"
export PATH="$JAVA_HOME/bin:$MAVEN_HOME:bin:/opt/ldb-toolchain/bin/:/opt/thirdparty/installed/bin/:$PATH"
export DORIS_THIRDPARTY="/opt/thirdparty"
# 加载变量
source /etc/profile
4 修改maven镜像,配置阿里云镜像
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd">
<localRepository>/opt/m2</localRepository>
<mirrors>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/public </url>
</mirror>
</mirrors>
</settings>
5 配置docker镜像,如果下载镜像文件慢
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://hub-mirror.c.163.com"
]
}
6 编译源码
# 1 下载源码到centos服务器
略
# 2 进入doris源码路径下,例如为/opt/doris
cd /opt/doris
# 3 环境准备
sh build.sh --clean
# 4 编译fe
sh build.sh --fe
# 5 编译be
sh build.sh --be
# 编译完成以后,有一个output目录,这个目录下的be和fe就是两个的安装路径
# 如何配置参考官网部署手册
7 源码编译完成以后,压缩相关文件,进行调试
# 1 压缩maven依赖包
cd /opt
tar -czvf m2.tar.gz m2
# 2 压缩fe
tar -czvf fe.tar.gz doris/fe
# 3 压缩be
tar -czvf be-src.tar.gz doris/be/src
# 4 压缩gensrc
tar -czvf gensrc.tar.gz doris/genstc
8 Windows环境环境
安装jdk8,略
安装maven,略,服务器上的m2依赖包解压,放入这个环境目录下
安装idea,略
安装clion,略
解压上个步骤fe包和genstc包
9 fe调试环境,可参考官网,正确导入代码,只有一个地方需要调整
在idea中直接打开fe项目,在idea中将fe-core/target/generated-sorces右击->Mark Diretory as -> Generated Sorces Root
10 be调试环境,不建议参考官网
将be的源码复制到doris目录下,用be-src.tar.gz中的代码,替换掉源码中的src目录
在centos服务器上,在/opt/doris/env.sh代码开头添加两行
source /etc/profile
export DORIS_HOME=/opt/doris
配置clion-Toolchains

配置CMake

其中CMake options为
-G Ninja -DCMAKE_MAKE_PROGRAM=/opt/ldb-toolchain/bin/ninja -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_BUILD_TYPE=Debug -DMAKE_TEST=OFF -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DWITH_MYSQL=OFF -DWITH_LZO=OFF -DUSE_LIBCPP=OFF -DBUILD_META_TOOL=OFF -DSTRIP_DEBUG_INFO=OFF -DUSE_DWARF=OFF -DUSE_MEM_TRACKER=ON -DUSE_JEMALLOC=ON -DSTRICT_MEMORY_USE=OFF -DUSE_AVX2=ON -DGLIBC_COMPATIBILITY=ON -DENABLE_PCH=OFF
其中Environment为
DORIS_HOME=/opt/doris;DORIS_JAVA_HOME=/usr/lib/jvm/java-1.8.0;DORIS_THIRDPARTY=/opt/thirdparty;DORIS_TOOLCHAIN=clang;JAVA_HOME=/usr/lib/jvm/java-1.8.0
服务器上代码同步目录为/opt/doris_release,将gensrc目录同步到该目录下
cp -r /opt/doris/gensrc /opt/doris_release/
配置Deployment


11 以上步骤代码调试环境配置已完成,如何修改、启动代码,略。