以下是基于 Windows 10 + CentOS 环境通过 IntelliJ IDEA 搭建 Doris FE 开发环境的完整指南,整合多份部署文档的关键步骤和避坑要点:
• 操作步骤:
更新系统包:
yum groupinstall -y "Development Tools"
yum install -y automake bison flex boost-devel libevent-devel openssl-devel python3-devel
yum install -y autoconf libtool cmake ncurses-devel lzo-devel zlib-devel gcc gcc-c++
# protobuf待确认版本,我用默认的yum安装的版本是protoc --version:libprotoc 3.12.3
# 生成的代码少org.apache.doris.proto包,怀疑是protoc的版本低,需要手动编译安装3.24.3(有难度)
# yum install protobuf-compiler -y
yum install maven git g++ make -y
# 采坑01:编译过程少包:clang
yum install clang -y
# 采坑02:如果是内网离线环境,编译过程少包,外网手动下载:
wget https://doris-thirdparty-repo.bj.bcebos.com/thirdparty/aws-crt-cpp-1.11.119.tar.gz
#将上面下载好的包放入aws-sdk-cpp-1.11.119.tar.gz,md5sum查看重新打包后的值更新到${doris_home}/thirdparty/var.sh,手动修改${doris_home}/thirdparty/download-thirdparty.sh,大概365行一下代码:
#if wget --no-check-certificate -q https://doris-thirdparty-repo.bj.bcebos.com/thirdparty/aws-crt-cpp-1.11.119.tar.gz -O aws-crt-cpp-1.11.119.tar.gz; then
# 改成如下,因为手动下载并打包了,直接true调过:
if true; then
# 采坑03:修改build-thirdparty.sh的739行,std::aligned_alloc未找到,强制使用 C 风格 aligned_alloc,修改 Boost 头文件或添加宏定义:
vim ${doris_home}/thirdparty/build-thirdparty.sh
./b2 -q link=static runtime-link=static -j "${PARALLEL}" \
--without-mpi --without-graph --without-graph_parallel --without-python \
cxxflags="-std=c++17 -g -I${TP_INCLUDE_DIR} -L${TP_LIB_DIR}" define=BOOST_ASIO_DISABLE_STD_ALIGNED_ALLOC install
# 采坑04:/bin/ld: cannot find -lstdc++
# 检查符号链接有效性,确认 /usr/lib 或 /usr/lib64 下的 libstdc++.so 链接正确:
# 查找库文件路径
find /usr -name "libstdc++.so*"
ln -sf /usr/lib64/libstdc++.so.6 /usr/lib/libstdc++.so
# 还少包:libstdc++-devel
yum install libstdc++-devel libstdc++-static -y
or apt-get install g++ libstdc++6
# 采坑05:libsystemd 未找到
yum install systemd-devel
or apt-get install libsystemd-dev
# 采坑06:编译grpc报错两个gz包的hash值不匹配
vim ${doris_home}/thirdparty//src/grpc-1.54.3/CMakeLists.txt
# 382行,391行,对应一个文件,都改了就行
# 还有一个目录不存在,不知道原因,先手动创建
mkdir ${doris_home}/thridparty/src/grpc-1.54.3/third_party/opencensus-proto/src
# 采坑07(暂时没过去):arrow/adapters/orc/adapter.cc:28:10: fatal error: 'filesystem' file not found
# 在 CMake 命令中添加参数:cmake ... -DCMAKE_CXX_STANDARD=17 -DCMAKE_CXX_STANDARD_REQUIRED=ON
vim build-thirdparty.sh
# 1045行,加:-DCMAKE_CXX_STANDARD=17 -DCMAKE_CXX_STANDARD_REQUIRED=ON
yum install orc-devel
# 采坑08:根据报错修改hash码
vim ${doris_home}/thirdparty/src/CRoaring-2.1.2/cmake/CPM.cmake
# 采坑09:
# 采坑10:
# 采坑11:
# 采坑12:
• Java 版本要求:
• Doris FE 2.x 版本需 JDK 8(推荐 openjdk-8-jdk);
• Doris FE ≥3.0 版本需 JDK 17(推荐 openjdk-17-jdk)。
如果仅进行fe开发而没有编译过thirdparty,则需要安装thrift,并将thrift 复制或者连接到 thirdparty/installed/bin 目录下
安装 thrift 0.16.0 版本 (注意:Doris 0.15 - 1.2 版本基于 thrift 0.13.0 构建, 最新代码使用 thrift 0.16.0 构建)
wget https://archive.apache.org/dist/thrift/0.16.0/thrift-0.16.0.tar.gz
tar zxvf thrift-0.16.0.tar.gz
cd thrift-0.16.0
./configure --without-tests
make
make install
# protoc的安装见下面:解决依赖与编译问题
# doris thirdparty的src中也有protobuf的包,版本是21.11
wget https://github.com/protocolbuffers/protobuf/releases/download/v3.24.3/protobuf-3.24.3.tar.gz
tar zxvf protobuf-3.24.3.tar.gz
cd protobuf-3.24.3
./configure --prefix=/usr/local
# make这一步时间会很长,我将近半个小时多
make
make install
# 安装完成后,验证版本:protoc --version
libprotoc 3.12.3
• 源码获取:
git clone https://github.com/apache/doris.git
• IDEA 配置:
File → Open → 选择 doris/fe 目录。File → Project Structure → Project SDK → 选择 WSL 中的 JDK 路径(如 /usr/lib/jvm/java-8-openjdk-amd64)。• 关键操作:
sh generated-source.sh
• 关键操作:
sh generated-source.sh
采坑:InternalService.java大小4.59M超过了idea单文件大小 可以通过增加文件大小限制,使得 IDEA 能够解析更大的文件。 打开 idea.properties 文件: 在 IntelliJ IDEA 中,进入 Help > Edit Custom Properties。 如果还没有 idea.properties 文件,会提示创建,选择 Yes 创建文件。 添加或修改文件大小限制: 在打开的 idea.properties 文件中,添加以下配置项,将文件大小限制增加到 10 MB(或更大,根据需要调整): idea.max.intellisense.filesize=10000 其中,10000 表示文件大小限制为 10 MB,可以根据需求进一步调整。
• 修改 fe/conf/fe.conf:
# 绑定 WSL2 虚拟网卡 IP(通过 `ip addr show eth0` 查看)
priority_networks = 172.28.0.0/24
# 元数据存储路径(避免权限问题)
meta_dir = /home/your_user/doris-meta
# 启用调试模式
debug_points = FE_DEBUG
• 运行配置:
Run → Edit Configurations → 添加 Application。org.apache.doris.PaloFe。-Dlog4j.configurationFile=file:conf/fe.conf -Djava.library.path=/usr/local/lib
fe 子模块路径(如 /home/your_user/doris/fe)。• 启动命令:
./bin/start_fe.sh --daemon # 或通过 IDEA 直接运行
• 验证方式:
http://localhost:8030,使用默认账号 root(密码为空)登录管理界面。mysql -h 127.0.0.1 -P 9030 -uroot
• 端口冲突:检查 8030(Web UI)、9030(MySQL 协议端口)是否被占用。
• 元数据损坏:删除 meta_dir 目录并重新初始化 FE。
• 依赖缺失:在 WSL 中执行 ldd fe/lib/*.so 检查动态链接库完整性。
• IDEA 远程调试参数:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
• 在 IDEA 中创建 Remote JVM Debug 配置,端口填写 5005。
• 在 fe 模块的 src/test 目录下,右键选择 Run 'All Tests',需提前启动本地 Zookeeper 模拟集群环境。
• 清理开发环境:
# 停止 FE 进程
./bin/stop_fe.sh
# 删除元数据和日志
rm -rf doris-meta/ fe/log/
通过以上步骤,您可在 Windows + WSL2 环境下高效进行 Doris FE 的二次开发与调试。如需扩展为多节点集群,可参考 Doris 官方集群部署文档 。