使用 Intellj IDEA 搭建 FE 开发环境

1.环境准备

JDK1.8+ , Intellj IDEA

  1. https://github.com/apache/incubator-doris.git 下载源码到本地

  2. 使用Intellj IDEA 打开代码根目录

  3. 如果仅进行fe开发而没有编译过thirdparty,则需要安装thrift,并将thrift 复制或者连接到 thirdparty/installed/bin 目录下

    1. 安装 thrift 0.9.3 版本。

      MacOS: brew install https://gist.githubusercontent.com/chrislusf/8b4e7c19551ba220232f037b43c0eaf3/raw/01465b867b8ef9af7c7c3fa830c83666c825122d/thrift.rb

      Windows: http://archive.apache.org/dist/thrift/0.9.3/thrift-0.9.3.exe

  4. 如果是Mac 或者 Linux 环境 可以通过 如下命令生成自动生成代码:

    1. cd fe
    2. mvn generate-sources

    如果出现错误,请先执行:

    1. cd fe && mvn install -DskipTests

或者通过图形界面运行运行maven 命令生成

FE 开发环境搭建 - Intellj IDEA - 图1

如果使用windows环境可能会有make命令和sh脚本无法执行的情况 可以通过拷贝linux上的 fe/fe-core/target/generated-sources 目录拷贝到相应的目录的方式实现,也可以通过docker 镜像挂载本地目录之后,在docker 内部生成自动生成代码,可以参照编译一节

2.调试

1. 用idea导入fe工程;

2.在fe目录下创建下面红框标出的目录,并将webroot里的内容拷贝进去

FE 开发环境搭建 - Intellj IDEA - 图2

3.配置conf/fe.conf

下面是我自己的配置,你可以根据自己的需要进行修改

  1. # Licensed to the Apache Software Foundation (ASF) under one
  2. # or more contributor license agreements. See the NOTICE file
  3. # distributed with this work for additional information
  4. # regarding copyright ownership. The ASF licenses this file
  5. # to you under the Apache License, Version 2.0 (the
  6. # "License"); you may not use this file except in compliance
  7. # with the License. You may obtain a copy of the License at
  8. #
  9. # http://www.apache.org/licenses/LICENSE-2.0
  10. #
  11. # Unless required by applicable law or agreed to in writing,
  12. # software distributed under the License is distributed on an
  13. # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  14. # KIND, either express or implied. See the License for the
  15. # specific language governing permissions and limitations
  16. # under the License.
  17. #####################################################################
  18. ## The uppercase properties are read and exported by bin/start_fe.sh.
  19. ## To see all Frontend configurations,
  20. ## see fe/src/org/apache/doris/common/Config.java
  21. #####################################################################
  22. # the output dir of stderr and stdout
  23. LOG_DIR = ${DORIS_HOME}/log
  24. DATE = `date +%Y%m%d-%H%M%S`
  25. 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"
  26. # For jdk 9+, this JAVA_OPTS will be used as default JVM options
  27. 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"
  28. ##
  29. ## the lowercase properties are read by main program.
  30. ##
  31. # INFO, WARN, ERROR, FATAL
  32. sys_log_level = INFO
  33. # store metadata, create it if it is not exist.
  34. # Default value is ${DORIS_HOME}/doris-meta
  35. # meta_dir = ${DORIS_HOME}/doris-meta
  36. http_port = 8030
  37. rpc_port = 9020
  38. query_port = 9030
  39. edit_log_port = 9010
  40. mysql_service_nio_enabled = true
  41. # Choose one if there are more than one ip except loopback address.
  42. # Note that there should at most one ip match this list.
  43. # If no ip match this rule, will choose one randomly.
  44. # use CIDR format, e.g. 10.10.10.0/24
  45. # Default value is empty.
  46. # priority_networks = 10.10.10.0/24;192.168.0.0/16
  47. # Advanced configurations
  48. # log_roll_size_mb = 1024
  49. # sys_log_dir = ${DORIS_HOME}/log
  50. # sys_log_roll_num = 10
  51. # sys_log_verbose_modules =
  52. # audit_log_dir = ${DORIS_HOME}/log
  53. # audit_log_modules = slow_query, query
  54. # audit_log_roll_num = 10
  55. # meta_delay_toleration_second = 10
  56. # qe_max_connection = 1024
  57. # max_conn_per_user = 100
  58. # qe_query_timeout_second = 300
  59. # qe_slow_log_ms = 5000

4.设置环境变量

在IDEA中设置运行环境变量

FE 开发环境搭建 - Intellj IDEA - 图3

5.启动fe

下面你就可以愉快的启动,调试你的FE了