For Mac M1, the default is python3 instead of python. When FE compiles, there will be an error that python cannot be found. This PR complements this part of the description.
202 lines
7.2 KiB
Markdown
202 lines
7.2 KiB
Markdown
---
|
|
{
|
|
"title": "FE 开发环境搭建 - IntelliJ IDEA",
|
|
"language": "zh-CN"
|
|
}
|
|
---
|
|
|
|
<!--
|
|
Licensed to the Apache Software Foundation (ASF) under one
|
|
or more contributor license agreements. See the NOTICE file
|
|
distributed with this work for additional information
|
|
regarding copyright ownership. The ASF licenses this file
|
|
to you under the Apache License, Version 2.0 (the
|
|
"License"); you may not use this file except in compliance
|
|
with the License. You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing,
|
|
software distributed under the License is distributed on an
|
|
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
KIND, either express or implied. See the License for the
|
|
specific language governing permissions and limitations
|
|
under the License.
|
|
-->
|
|
|
|
# 使用 IntelliJ IDEA 搭建 FE 开发环境
|
|
|
|
## 1.环境准备
|
|
|
|
JDK1.8+, IntelliJ IDEA
|
|
|
|
1. 从 https://github.com/apache/doris.git 下载源码到本地
|
|
|
|
2. 使用IntelliJ IDEA 打开代码根目录
|
|
|
|
3. 如果仅进行fe开发而没有编译过thirdparty,则需要安装thrift,并将thrift 复制或者连接到 `thirdparty/installed/bin` 目录下
|
|
|
|
安装 `thrift` 0.13.0 版本(注意:`Doris` 0.15 和最新的版本基于 `thrift` 0.13.0 构建, 之前的版本依然使用`thrift` 0.9.3 构建)
|
|
|
|
Windows:
|
|
1. 下载:`http://archive.apache.org/dist/thrift/0.13.0/thrift-0.13.0.exe`
|
|
2. 拷贝:将文件拷贝至 `./thirdparty/installed/bin`
|
|
|
|
MacOS:
|
|
1. 下载:`brew install thrift@0.13.0`
|
|
2. 建立软链接:
|
|
`mkdir -p ./thirdparty/installed/bin`
|
|
# ARM架构macOS
|
|
`ln -s /opt/homebrew/Cellar/thrift@0.13.0/0.13.0/bin/thrift ./thirdparty/installed/bin/thrift`
|
|
# Intel架构macOS
|
|
`ln -s /usr/local/Cellar/thrift@0.13.0/0.13.0/bin/thrift ./thirdparty/installed/bin/thrift`
|
|
|
|
注:MacOS执行 `brew install thrift@0.13.0` 可能会报找不到版本的错误,解决方法如下,在终端执行:
|
|
1. `brew tap-new $USER/local-tap`
|
|
2. `brew extract --version='0.13.0' thrift $USER/local-tap`
|
|
3. `brew install thrift@0.13.0`
|
|
参考链接: `https://gist.github.com/tonydeng/02e571f273d6cce4230dc8d5f394493c`
|
|
|
|
4. 如果是Mac 或者 Linux 环境 可以通过 如下命令自动生成代码:
|
|
|
|
```
|
|
cd fe
|
|
mvn generate-sources
|
|
```
|
|
|
|
如果出现错误,则执行:
|
|
|
|
```
|
|
cd fe && mvn clean install -DskipTests
|
|
|
|
```
|
|
|
|
如果是mac m1版,则执行:
|
|
|
|
```
|
|
cd fe && mvn clean install -DskipTests -Dos.arch=x86_64
|
|
|
|
```
|
|
|
|
或者通过图形界面运行 maven 命令生成
|
|
|
|

|
|
|
|
如果使用windows环境可能会有make命令和sh脚本无法执行的情况 可以通过拷贝linux上的 `fe/fe-core/target/generated-sources` 目录拷贝到相应的目录的方式实现,也可以通过docker 镜像挂载本地目录之后,在docker 内部生成自动生成代码,可以参照编译一节
|
|
|
|
5. 如果是 mac m1 版,可能会找不到 python,则创建一个 python3 到 python 的软链:
|
|
|
|
```
|
|
ln -s /usr/bin/python3 /usr/bin/python
|
|
```
|
|
|
|
|
|
6. 如果还未生成过help文档,需要跳转到docs目录,执行`sh build_help_zip.sh`,
|
|
然后将build中的help-resource.zip拷贝到fe/fe-core/target/classes中
|
|
|
|
## 2.调试
|
|
|
|
1. 用idea导入fe工程
|
|
|
|
2. 在fe目录下创建下面红框标出的目录(在新版本中该目录可能存在,如存在则跳过,否则创建)
|
|
|
|

|
|
|
|
3. 编译`ui`项目,将 `ui/dist/`目录中的文件拷贝到`webroot`中(如果你不需要看`Doris` UI,这一步可以跳过)
|
|
|
|
## 3.配置conf/fe.conf
|
|
|
|
下面是我自己的配置,你可以根据自己的需要进行修改(注意:如果使用`Mac`开发,由于`docker for Mac`不支持`Host`模式,需要使用`-p`方式暴露`be`端口,同时`fe.conf`的`priority_networks`配置为容器内可访问的Ip,例如WIFI的Ip)
|
|
|
|
```
|
|
# Licensed to the Apache Software Foundation (ASF) under one
|
|
# or more contributor license agreements. See the NOTICE file
|
|
# distributed with this work for additional information
|
|
# regarding copyright ownership. The ASF licenses this file
|
|
# to you under the Apache License, Version 2.0 (the
|
|
# "License"); you may not use this file except in compliance
|
|
# with the License. You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing,
|
|
# software distributed under the License is distributed on an
|
|
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
# KIND, either express or implied. See the License for the
|
|
# specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
#####################################################################
|
|
## The uppercase properties are read and exported by bin/start_fe.sh.
|
|
## To see all Frontend configurations,
|
|
## see fe/src/org/apache/doris/common/Config.java
|
|
#####################################################################
|
|
|
|
# the output dir of stderr and stdout
|
|
LOG_DIR = ${DORIS_HOME}/log
|
|
|
|
DATE = `date +%Y%m%d-%H%M%S`
|
|
JAVA_OPTS="-Xmx2048m -XX:+UseMembar -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -Xloggc:$DORIS_HOME/log/fe.gc.log.$DATE"
|
|
|
|
# For jdk 9+, this JAVA_OPTS will be used as default JVM options
|
|
JAVA_OPTS_FOR_JDK_9="-Xmx4096m -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -Xlog:gc*:$DORIS_HOME/log/fe.gc.log.$DATE:time"
|
|
|
|
##
|
|
## the lowercase properties are read by main program.
|
|
##
|
|
|
|
# INFO, WARN, ERROR, FATAL
|
|
sys_log_level = INFO
|
|
|
|
# store metadata, create it if it is not exist.
|
|
# Default value is ${DORIS_HOME}/doris-meta
|
|
# meta_dir = ${DORIS_HOME}/doris-meta
|
|
|
|
http_port = 8030
|
|
rpc_port = 9020
|
|
query_port = 9030
|
|
edit_log_port = 9010
|
|
mysql_service_nio_enabled = true
|
|
|
|
# Choose one if there are more than one ip except loopback address.
|
|
# Note that there should at most one ip match this list.
|
|
# If no ip match this rule, will choose one randomly.
|
|
# use CIDR format, e.g. 10.10.10.0/24
|
|
# Default value is empty.
|
|
# priority_networks = 10.10.10.0/24;192.168.0.0/16
|
|
|
|
# Advanced configurations
|
|
# log_roll_size_mb = 1024
|
|
# sys_log_dir = ${DORIS_HOME}/log
|
|
# sys_log_roll_num = 10
|
|
# sys_log_verbose_modules =
|
|
# audit_log_dir = ${DORIS_HOME}/log
|
|
# audit_log_modules = slow_query, query
|
|
# audit_log_roll_num = 10
|
|
# meta_delay_toleration_second = 10
|
|
# qe_max_connection = 1024
|
|
# max_conn_per_user = 100
|
|
# qe_query_timeout_second = 300
|
|
# qe_slow_log_ms = 5000
|
|
|
|
```
|
|
|
|
|
|
|
|
## 4.设置环境变量
|
|
|
|
在IDEA中设置运行环境变量
|
|
|
|

|
|
|
|
## 5.配置options
|
|
|
|
由于部分依赖使用了`provided`,idea需要做下特殊配置,在`Run/Debug Configurations`设置中点击右侧`Modify options`,勾选`Add dependencies with "provided" scope to classpath`选项
|
|
|
|

|
|
|
|
## 6.启动fe
|
|
|
|
下面你就可以愉快的启动,调试你的FE了
|
|
|