You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by yi...@apache.org on 2022/07/20 11:03:35 UTC
[doris] branch master updated: [docs] Fe build idea doc (#10996)
This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new a607c30ad4 [docs] Fe build idea doc (#10996)
a607c30ad4 is described below
commit a607c30ad4e4d1d8af512cf3994cec358de22451
Author: AlexYue <yj...@qq.com>
AuthorDate: Wed Jul 20 19:03:29 2022 +0800
[docs] Fe build idea doc (#10996)
* [doc](fe): enhance the fe-idea-dev
* [doc](fe)add solution for m1 mac compile error
Co-authored-by: jackwener <ja...@gmail.com>
---
docs/en/developer/developer-guide/fe-idea-dev.md | 181 ++++++++-------------
.../zh-CN/developer/developer-guide/fe-idea-dev.md | 179 ++++++++------------
2 files changed, 136 insertions(+), 224 deletions(-)
diff --git a/docs/en/developer/developer-guide/fe-idea-dev.md b/docs/en/developer/developer-guide/fe-idea-dev.md
index 8b217e3e36..83931d75be 100644
--- a/docs/en/developer/developer-guide/fe-idea-dev.md
+++ b/docs/en/developer/developer-guide/fe-idea-dev.md
@@ -28,64 +28,86 @@ under the License.
## 1. Environmental Preparation
-* Git
* JDK1.8+
* IntelliJ IDEA
* Maven (Optional, IDEA shipped embedded Maven3)
-1. Git clone codebase from https://github.com/apache/incubator-doris.git
+Git clone codebase from https://github.com/apache/incubator-doris.git
+Use IntelliJ IDEA to open the code `FE` directory
-2. Use IntelliJ IDEA to open the code root directory
+### Thrift
+If your are only interested in FE module, and for some reason you can't or don't want to compile full thirdparty libraries,
-3. If your are only interested in FE module, and for some reason you can't or don't want to compile full thirdparty libraries,
- the minimum tool required for FE module is `thrift`, so you can manually install `thrift` and copy or create a link of
- the executable `thrift` command to `./thirdparty/installed/bin`.
- ```
- Doris build against `thrift` 0.13.0 ( note : `Doris` 0.15 and later version build against `thrift` 0.13.0 , the previous version is still `thrift` 0.9.3)
-
- Windows:
- 1. Download:`http://archive.apache.org/dist/thrift/0.13.0/thrift-0.13.0.exe`
- 2. Copy:copy the file to `./thirdparty/installed/bin`
-
- MacOS:
- 1. Download:`brew install thrift@0.13.0`
- 2. Establish soft connection:
- `mkdir -p ./thirdparty/installed/bin`
- # For ARM macOS
- `ln -s /opt/homebrew/Cellar/thrift@0.13.0/0.13.0/bin/thrift ./thirdparty/installed/bin/thrift`
- # For Intel macOS
- `ln -s /usr/local/Cellar/thrift@0.13.0/0.13.0/bin/thrift ./thirdparty/installed/bin/thrift`
-
- Note:The error that the version cannot be found may be reported when MacOS execute `brew install thrift@0.13.0`. The solution is execute at the terminal as follows:
- 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`
- Reference link: `https://gist.github.com/tonydeng/02e571f273d6cce4230dc8d5f394493c`
- ```
-
-4. Go to `./fe` folder and run the following maven command to generate sources.
-
- ```
- mvn generate-sources
- ```
-
- If fails, run following command.
+the minimum tool required for FE module is `thrift`, so you can manually install `thrift` and copy or create a link of the executable `thrift` command to `./thirdparty/installed/bin`.
+
+```
+Doris build against `thrift` 0.13.0 ( note : `Doris` 0.15 and later version build against `thrift` 0.13.0 , the previous version is still `thrift` 0.9.3)
+
+Windows:
+ 1. Download:`http://archive.apache.org/dist/thrift/0.13.0/thrift-0.13.0.exe`
+ 2. Copy:copy the file to `./thirdparty/installed/bin`
- ```
- mvn clean install -DskipTests
- ```
+MacOS:
+ 1. Download:`brew install thrift@0.13.0`
+ 2. Establish soft connection:
+ `mkdir -p ./thirdparty/installed/bin`
+ # For ARM macOS
+ `ln -s /opt/homebrew/Cellar/thrift@0.13.0/0.13.0/bin/thrift ./thirdparty/installed/bin/thrift`
+ # For Intel macOS
+ `ln -s /usr/local/Cellar/thrift@0.13.0/0.13.0/bin/thrift ./thirdparty/installed/bin/thrift`
- You can also use IDE embedded GUI tools to run maven command to generate sources
+Note:The error that the version cannot be found may be reported when MacOS execute `brew install thrift@0.13.0`. The solution is execute at the terminal as follows:
+ 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`
+Reference link: `https://gist.github.com/tonydeng/02e571f273d6cce4230dc8d5f394493c`
+```
+
+### generate sources
+
+Go to `./fe` folder and run the following maven command to generate sources.
+
+```
+mvn generate-sources
+```
+
+If fails, run following command.
+
+```
+mvn clean install -DskipTests
+```
+
+You can also use IDE embedded GUI tools to run maven command to generate sources
![](/images/gen_code.png)
If you are developing on the OS which lack of support to run `shell script` and `make` such as Windows, a workround here
is generate codes in Linux and copy them back. Using Docker should also be an option.
-5. If a help document has not been generated, go to the docs directory and run`sh build_help_zip.sh`,
- Then copy help-resource.zip from build to fe/fe-core/target/classes
+#### arm mac compile failed
+
+An error would occur if you generated sources using maven on arm mac. Detailed error messages are as follows.
+
+```
+[ERROR] Failed to execute goal org.xolstice.maven.plugins:protobuf-maven-plugin:0.6.1:compile (grpc-build) on project apm-network: Unable to resolve artifact: Missing:
+[ERROR] 1) com.google.protobuf:protoc:exe:osx-aarch_64:3.14.0
+[ERROR] 1 required artifact is missing.
+```
+
+Since protobuf v3.14.0 and protoc-gen-grpc-java v1.30.0 don't come up with osx-aarch_64 version, given the advice by [grpc_community], you'd better manually download the corresponding osx_x86 version and then translate them by Rosseta2.
+
+1. open `doris/fe/fe-core/pom.xml`
+2. change `<protocArtifact>com.google.protobuf:protoc:${protobuf.version}</protocArtifact>` to `<protocArtifact>com.google.protobuf:protoc:3.14.0:exe:osx-x86_64</protocArtifact>`
+3. change `<pluginArtifact>io.grpc:protoc-gen-grpc-java:${grpc.version}</pluginArtifact>` to `<pluginArtifact>io.grpc:protoc-gen-grpc-java:1.30.0:exe:osx-x86_64</pluginArtifact>`
+4. open terminal and paste `softwareupdate --install-rosetta`
+
+### help document
+
+If a help document has not been generated, go to the docs directory and run `sh build_help_zip.sh`,
+
+Then copy help-resource.zip from build to fe/fe-core/target/classes
## 2. Debug
@@ -99,80 +121,9 @@ is generate codes in Linux and copy them back. Using Docker should also be an op
## 3. Custom FE configuration
-Copy below content into `conf/fe.conf` and tune it to fit your environment(Note: If developed using`Mac`, since`docker for Mac`does not support`Host`mode,`be`needs to be exposed using`-p` and `fe.conf` `priority_networks` configured to be accessible within the container, such as WIFI Ip).
+Copy below content into `conf/fe.conf` and tune it to fit your environment
-```
-# 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
-
-```
+(Note: If developed using`Mac`, since`docker for Mac`does not support`Host`mode,`be`needs to be exposed using`-p` and `fe.conf` `priority_networks` configured to be accessible within the container, such as WIFI Ip).
## 4. Setting Environment Variables
diff --git a/docs/zh-CN/developer/developer-guide/fe-idea-dev.md b/docs/zh-CN/developer/developer-guide/fe-idea-dev.md
index 0877b069bd..4f10443c40 100644
--- a/docs/zh-CN/developer/developer-guide/fe-idea-dev.md
+++ b/docs/zh-CN/developer/developer-guide/fe-idea-dev.md
@@ -28,47 +28,61 @@ under the License.
## 1.环境准备
-JDK1.8+, IntelliJ IDEA
+从 https://github.com/apache/incubator-doris.git 下载源码到本地
-1. 从 https://github.com/apache/incubator-doris.git 下载源码到本地
+安装 JDK1.8+ ,使用 IntelliJ IDEA 打开 FE.
-2. 使用IntelliJ IDEA 打开代码根目录
+### thrift
-3. 如果仅进行fe开发而没有编译过thirdparty,则需要安装thrift,并将thrift 复制或者连接到 `thirdparty/installed/bin` 目录下
+如果仅进行fe开发而没有编译过thirdparty,则需要安装thrift,并将thrift 复制或者连接到 `thirdparty/installed/bin` 目录下
- 安装 `thrift` 0.13.0 版本(注意:`Doris` 0.15 和最新的版本基于 `thrift` 0.13.0 构建, 之前的版本依然使用`thrift` 0.9.3 构建)
+安装 `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`
+#### Windows 下载
-4. 如果是Mac 或者 Linux 环境 可以通过 如下命令生成自动生成代码:
+1. 下载:`http://archive.apache.org/dist/thrift/0.13.0/thrift-0.13.0.exe`
+2. 拷贝:将文件拷贝至 `./thirdparty/installed/bin`
- ```
- cd fe
- mvn generate-sources
- ```
+#### MacOS 下载
- 如果出现错误,则执行:
+下载:`brew install thrift@0.13.0`
- ```
- cd fe && mvn clean install -DskipTests
- ```
+注: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`
+
+#### 建立软链接
+
+位于 Doris **根**目录下
+
+`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`
+
+### 自动生成代码:
+
+如果是Mac 或者 Linux 环境 可以通过 如下命令生成
+
+```
+cd fe
+mvn generate-sources
+```
+
+如果出现错误,则执行:
+
+```
+cd fe && mvn clean install -DskipTests
+```
或者通过图形界面运行 maven 命令生成
@@ -76,8 +90,28 @@ JDK1.8+, IntelliJ IDEA
如果使用windows环境可能会有make命令和sh脚本无法执行的情况 可以通过拷贝linux上的 `fe/fe-core/target/generated-sources` 目录拷贝到相应的目录的方式实现,也可以通过docker 镜像挂载本地目录之后,在docker 内部生成自动生成代码,可以参照编译一节
-5. 如果还未生成过help文档,需要跳转到docs目录,执行`sh build_help_zip.sh`,
- 然后将build中的help-resource.zip拷贝到fe/fe-core/target/classes中
+#### arm mac compile failed
+
+如果在m1 mac上进行自动生成代码会出现如下错误
+
+```
+[ERROR] Failed to execute goal org.xolstice.maven.plugins:protobuf-maven-plugin:0.6.1:compile (grpc-build) on project apm-network: Unable to resolve artifact: Missing:
+[ERROR] 1) com.google.protobuf:protoc:exe:osx-aarch_64:3.14.0
+[ERROR] 1 required artifact is missing.
+```
+
+ptotobuf3.14.0和protoc-gen-grpc-java1.30.0没有aarch64的版本,根据[grpc社区issue](https://github.com/grpc/grpc-java/issues/7690)的建议下载x86版本并使用rosetta转译
+
+1. 打开`doris/fe/fe-core/pom.xml`
+2. 将`<protocArtifact>com.google.protobuf:protoc:${protobuf.version}</protocArtifact>`修改成`<protocArtifact>com.google.protobuf:protoc:3.14.0:exe:osx-x86_64</protocArtifact>`
+3. 将`<pluginArtifact>io.grpc:protoc-gen-grpc-java:${grpc.version}</pluginArtifact>`修改成`<pluginArtifact>io.grpc:protoc-gen-grpc-java:1.30.0:exe:osx-x86_64</pluginArtifact>`
+4. 打开终端输入`softwareupdate --install-rosetta`
+
+### help文档
+
+如果还未生成过help文档,需要跳转到docs目录,执行`sh build_help_zip.sh`,
+
+然后将build中的help-resource.zip拷贝到fe/fe-core/target/classes中
## 2.调试
@@ -91,82 +125,9 @@ JDK1.8+, IntelliJ IDEA
## 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
-
-```
-
+配置在 `conf/fe.conf`,你可以根据自己的需要进行修改
+(注意:如果使用`Mac`开发,由于`docker for Mac`不支持`Host`模式,需要使用`-p`方式暴露`be`端口,同时`fe.conf`的`priority_networks`配置为容器内可访问的Ip,例如WIFI的Ip)
## 4.设置环境变量
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org