Doris源码编译与开发环境搭建

目标:对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 以上步骤代码调试环境配置已完成,如何修改、启动代码,略。

相关推荐
阿里云大数据AI技术1 天前
一站式构建 AI 数据处理 Pipeline:DataWorks Notebook + MaxCompute MaxFrame 快速入门指南
大数据·人工智能
阿里云大数据AI技术1 天前
StarRocks + Paimon: 构建 Lakehouse Native 数据引擎
大数据·人工智能
下海fallsea1 天前
韩国零食正在占领俄罗斯
大数据·人工智能
武汉唯众智创1 天前
全国职业院校技能大赛大数据应用开发实训室建设方案
大数据·国赛·大数据应用开发·大数据实训室·全国职业院校技能大赛·大数据应用开发实训室·大数据应用开发实验室
媒体人8881 天前
E-E-A-T²增强框架:AI时代GEO生成式引擎优化的信任破局之道
大数据·人工智能·搜索引擎·生成式引擎优化·geo优化
Albert Edison1 天前
【Git】分支管理
大数据·git·elasticsearch
山峰哥1 天前
SQL优化中的索引策略与Explain分析实战
大数据·汇编·数据库·sql·编辑器
T06205141 天前
【数据集】上市公司研发投入与专利数据-dta+xlsx(2007-2024年)
大数据
B站计算机毕业设计之家1 天前
大数据毕业设计:基于python图书数据分析可视化系统 书籍大屏 爬虫 清洗 可视化 当当网书籍数据分析 Django框架 图书推荐 大数据
大数据·爬虫·python·机器学习·自然语言处理·数据分析·课程设计