MAC IntelliJ IDEA搭建Doris Fe

目录

版本信息

安装环境依赖

拉取源码

[下载 Doris 编译依赖](#下载 Doris 编译依赖)

修改系统最大文件句柄数

[编译 Doris](#编译 Doris)

[配置 Debug 环境](#配置 Debug 环境)

[生成 FE 代码](#生成 FE 代码)

FE模块代码导入

[配置 Debug FE](#配置 Debug FE)

[启动 FE](#启动 FE)

报错问题


版本信息

本次安装的doris版本信息为doris-2.1.0-rc11

IntelliJ IDEA 配置jdk17、maven3.6.3

安装环境依赖

brew install automake autoconf libtool pkg-config texinfo coreutils gnu-getopt \
python@3 cmake ninja ccache bison byacc gettext wget pcre maven llvm@16 openjdk@17 npm

注意事项

使用 brew 安装的 jdk 版本为 17,因为在 macOS上arm64 版本的 brew 默认没有 8 版本的 jdk, Doris目前 只支持 jdk8 和 jdk17 两个版本。

设置环境变量

#llvm 
export PATH="/opt/homebrew/opt/llvm/bin:$PATH"

# bison
export PATH = "/opt/homebrew/opt/bison/bin:$PATH"

# texinfo
export PATH = "/opt/homebrew/opt/texinfo/bin:$PATH"

# python: 
ln -s -f /opt/homebrew/bin/python3 /opt/homebrew/bin/python

拉取源码

# cd到拉取doris源码的目录
cd ~

#创建DorisDev文件夹
mkdir DorisDev

# cd到DorisDev文件夹中
cd DorisDev

# 拉取doris源码
git clone https://github.com/apache/doris.git

设置环境变量

export DORIS_HOME=~/DorisDev/doris
export PATH=$DORIS_HOME/bin:$PATH

下载 Doris 编译依赖

# cd到doris源码根目录下的thirdparty文件夹
cd ~/DorisDev/doris/thirdparty

# Intel 芯片
curl -L https://github.com/apache/doris-thirdparty/releases/download/automation/doris-thirdparty-prebuilt-darwin-x86_64.tar.xz \
    -o - | tar -Jxf -

# Apple Silicon 芯片
curl -L https://github.com/apache/doris-thirdparty/releases/download/automation/doris-thirdparty-prebuilt-darwin-arm64.tar.xz \
    -o - | tar -Jxf -

# 保证protoc和thrift能够正常运行
cd installed/bin

./protoc --version
./thrift --version

注意事项

运行 protoc thrift 的时候可能会遇到 无法打开,因为无法验证开发者 的问题,可以到前往 安全性与隐私 。点按 通用 面板中的 仍要打开 按钮,以确认打算打开该二进制。

修改系统最大文件句柄数

# bash
echo 'ulimit -n 65536' >>~/.bashrc
    
# zsh
echo 'ulimit -n 65536' >>~/.zshrc

编译 Doris

# cd到doris源码根目录
cd ~/DorisDev/doris

#执行编译脚本(--fe表示build Frontend and Spark DPP application. Default ON.)
sh build.sh --fe

配置 Debug 环境

# 编译doris成功后,在~/DorisDev/doris目录下会生成一个output文件夹,将编译好的包cp出来
cp -r output ../doris-run
    
# 配置FE的conf/fe.conf,IP替换成当前安装doris fe的主机ip地址
priority_networks = IP/24

注意事项

上面cp -r output ../doris-run操作后,会将fe文件夹拷贝到~/doris-run目录下,~/doris-run/fe这个路径会在下面配置DORIS_HOME环境变量时使用。

生成 FE 代码

cd到源码根目录下执行 sh generated-source.sh 等待显示 Done 就可以了

# cd到doris源码根目录
cd ~/DorisDev/doris

#执行生成FE代码脚本
sh generated-source.sh

拷贝 help-resource.zip

# 进入doris/docs目录,执行以下命令
cd doris/docs
sh build_help_zip.sh
cp -r build/help-resource.zip ../fe/fe-core/target/classes

FE模块代码导入

使用IDEA工具导入FE模块,注意这里我们不要直接打开doris源码根目录,而是打开doris源码根目录下的fe目录

配置 Debug FE

点击Edit Configurations

配置环境变量

环境变量的DORIS_HOME的值为~/doris-run/fe目录,注意~/doris-run/fe目录路径为 "配置 Debug 环境" 步骤中的实际路径。

启动 FE

报错问题

**问题1:**本次安装的doris版本为doris-2.1.0-rc11,加载maven报错,无法下载org.apache.doris:je,可以将fe-core模块下pom.xml中的org.apache.doris:je注释掉,同时引入com.sleepycat:je依赖。

<dependency>
    <groupId>com.sleepycat</groupId>
    <artifactId>je</artifactId>
    <version>18.3.12</version>
</dependency>

问题2: 启动时如果报compile编译错误,可以检查jdk配置,本次部署使用jdk17。

打开File -> Project Structure

添加JDK17

选择本地JDK17

配置上面引入的JDK17

打开settings

将 Build,Execution,Deployment -> Compiler -> Java Compiler 版本设置为17

打开maven配置文件setting.xml

修改setting.xml中的JDK版本

<profile>
  <id>jdk-17</id>
  <activation>
    <activeByDefault>true</activeByDefault>
    <jdk>17</jdk>
  </activation>
  <properties>
    <maven.compiler.source>17</maven.compiler.source>
    <maven.compiler.target>17</maven.compiler.target>
    <maven.compiler.compilerVersion>17</maven.compiler.compilerVersion>
  </properties>
</profile>

**问题3:**启动时可能提示堆空间不足。需要调整 Build,Execution,Deployment -> Compiler 中 shared build process heap size 的大小,这里设置为1700。

**问题4:**本次安装的doris版本为doris-2.1.0-rc11,启动报错定位到SqlParser类,将方法do_action()中第三个参数类型Stack的泛型去掉。

相关推荐
【D'accumulation】21 分钟前
典型的MVC设计模式:使用JSP和JavaBean相结合的方式来动态生成网页内容典型的MVC设计模式
java·设计模式·mvc
试行35 分钟前
Android实现自定义下拉列表绑定数据
android·java
茜茜西西CeCe41 分钟前
移动技术开发:简单计算器界面
java·gitee·安卓·android-studio·移动技术开发·原生安卓开发
救救孩子把1 小时前
Java基础之IO流
java·开发语言
小菜yh1 小时前
关于Redis
java·数据库·spring boot·redis·spring·缓存
宇卿.1 小时前
Java键盘输入语句
java·开发语言
浅念同学1 小时前
算法.图论-并查集上
java·算法·图论
立志成为coding大牛的菜鸟.1 小时前
力扣1143-最长公共子序列(Java详细题解)
java·算法·leetcode
鱼跃鹰飞1 小时前
Leetcode面试经典150题-130.被围绕的区域
java·算法·leetcode·面试·职场和发展·深度优先
爱上语文2 小时前
Springboot的三层架构
java·开发语言·spring boot·后端·spring