本文档主要介绍如何通过源码编译 Doris及flink-doris
这里默认已经安装好了Docker
编译flink-doris 需要先编译Doris,官方说明
注意:
doris源码目录extension/flink-doris-connector/ 这里的flink-doris源码与 GitHub 上下载的 flink-doris 源码似乎有点区别。编译时候注意一下
doris GitHub地址:GitHub - apache/incubator-doris: Apache Doris(Incubating) is an MPP-based interactive SQL data warehousing for reporting and analysis.
doris-flink GitHub 地址:GitHub - apache/incubator-doris-flink-connector: Flink Connector for Apache Doris(incubating)
doris 官网文档:编译 | Apache Doris
1、下载Docker 镜像
先去官网查看版本
拉取最新版本
docker pull apache/incubator-doris:build-env-ldb-toolchain-latest
可以拉取指定版本
docker pull apache/incubator-doris:build-env-for-0.15.0
注意:
镜像下载完成:
docker images
用命令查看是否已经下载好。
这时不要着急运行镜像,这个镜像是编译doris的一个环境,还需要编译的源码。
2、下载源码
先在本地下载源码
1.Doris
先进入本地目录
cd /root/doris
$ wget https://dist.apache.org/repos/dist/dev/incubator/doris/xxx.tar.gz
or
$ git clone https://github.com/apache/incubator-doris.git
如果下载的是压缩包,对下载的源码进行解压
tar -zxf xxx.tar.gz
2.flink-doris-connector
现在Doris 源码目录下 查找 extension/flink-doris-connector/ 源码目录,如果有该目录说明有fink-doris的源码了,如果没有,需要下载源码,从GitHub上下面,放到该目录,目的是后面挂载的时候这个源码也可以进入docker
3、运行镜像
建议以挂载本地 Doris 源码目录的方式运行镜像,这样编译的产出二进制文件会存储在宿主机中,不会因为镜像退出而消失。
同时,建议同时将镜像中 maven 的 .m2 目录挂载到宿主机目录,以防止每次启动镜像编译时,重复下载 maven 的依赖库
本地目录要考虑磁盘空间,最好用磁盘空间大一点的目录
$ docker run -it -v /your/local/.m2:/root/.m2 -v /your/local/incubator-doris-DORIS-x.x.x-release/:/root/incubator-doris-DORIS-x.x.x-release/ apache/incubator-doris:build-env-ldb-toolchain-latest
例如
docker run -it -v /root/.m2:/root/.m2 -v /opt/software/doris/apache-doris-0.15.0-incubating-src:/opt/software/doris/apache-doris-0.15.0-incubating-src apache/incubator-doris:build-env-for-0.15.0
执行完命令后,启动镜像后,你应该已经处于容器内
4、编译Doris
进入到容器内源码目录
执行下面命令
sh build.sh
注意:
如果你是第一次使用 build-env-for-0.15.0 或之后的版本,第一次编译的时候要使用如下命令:
sh build.sh --clean --be --fe --ui
这是因为 build-env-for-0.15.0 版本镜像升级了 thrift(0.9 -> 0.13),需要通过 --clean 命令强制使用新版本的 thrift 生成代码文件,否则会出现不兼容的代码。
编译完成后,产出文件在 output/ 目录中。
5、更改flink 版本 修改成 13.5
当前在容器内操作
进入flink-doris源码目录,修改pom.xml文件
<properties>
<scala.version>2.12</scala.version>
<flink.version>1.13.5</flink.version>
<libthrift.version>0.13.0</libthrift.version>
<arrow.version>5.0.0</arrow.version>
<maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
<maven-javadoc-plugin.version>3.3.0</maven-javadoc-plugin.version>
<maven-source-plugin.version>3.2.1</maven-source-plugin.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<doris.home>${basedir}/../../</doris.home>
修改flink对应版本号,scala对应版本号
6、要将jdk 切回到1.8(docker容器里面操作)
切换到 JDK 8:
$ alternatives --set java java-1.8.0-openjdk.x86_64
$ alternatives --set javac java-1.8.0-openjdk.x86_64
$ export JAVA_HOME=/usr/lib/jvm/java-1.8.0
7、编译 :doris-flink
在flink-doris源码目录下有 build.sh 脚本
执行命令
sh build.sh
编译成功后,会在 output/ 目录下生成文件 doris-flink-1.0.0-SNAPSHOT.jar
8、备注
- doris FE 要在配置中配置启用http v2
- Scala版本目前只支持2.12.x版本
conf/fe.conf
enable_http_server_v2 = true
编译doris 报错
解决方案
修改一个路径
vi fe/pom.xml change
https://repo.spring.io/plugins-release/
修改为
https://repository.cloudera.com/artifactory/ext-release-local
参考网址:扩展功能 - Flink Doris Connector - 《Apache Doris v0.15 中文文档》 - 书栈网 · BookStack