作者: 康凯森
日期: 2018-01-14
分类: OLAP
Palo是百度开源的一个OLAP系统,FE是用Java开发,用古老的ant进行编译;BE是用C++开发,用CMake编译。本文主要讲述如何在Mac上构建Palo的代码阅读环境。本文的面向读者主要是Java开发者。(我工作后一直不屑于写这种和环境相关的文章,因为没啥内涵,不过考虑到本文有可能会节省一些对Palo感兴趣的Java开发者搞环境的时间,所以就写了)
1 安装Clion, 直接从官网下载安装即可。
2 最好安装下Xcode,在mac上即使我们不使用Xcode开发,安装Xcode后也可以免去一些开发环境上的麻烦。
3 使用Homebrew依次安装[email protected] ant cmake byacc flex automake libtool binutils-devel bison thrift openssl
,其中bison安装完成后需要执行brew link bison --force
,openssl安装完成后需要执行ln -s /usr/local/Cellar/openssl/1.0.2n/include/openssl /usr/local/include/openssl
4 修改be/CMakeLists.txt,删除以下代码,因为palo默认只支持ubuntu,centos,fedora操作系统。
-string(TOLOWER ${LINUX_VERSION} LINUX_VERSION_LOWER)
-message(STATUS "${LINUX_VERSION_LOWER}")
-
-if(DEFINED ENV{CLANG_BASE_FLAGS})
- set(CLANG_BASE_FLAGS
- $ENV{CLANG_BASE_FLAGS})
-elseif(${LINUX_VERSION_LOWER} MATCHES "ubuntu")
- set(CLANG_BASE_FLAGS
- "-I/usr/include/c++/5/"
- "-I/usr/include/x86_64-linux-gnu/c++/5/")
-elseif(${LINUX_VERSION_LOWER} MATCHES "centos")
- set(CLANG_BASE_FLAGS
- "-I/usr/include/c++/4.8.5/"
- "-I/usr/include/c++/4.8.5/x86_64-redhat-linux/")
-elseif(${LINUX_VERSION_LOWER} MATCHES "fedora")
- set(CLANG_BASE_FLAGS
- "-I/usr/include/c++/7/"
- "-I/usr/include/c++/7/x86_64-redhat-linux/")
-else()
- message(FATAL_ERROR "Currently not support system ${LINUX_VERSION}")
-endif()
5 修改 thirdparty/build-thirdparty.sh
6 thirdparty/vars.sh 中将glog的版本从0.3.3改为0.3.4,因为0.3.3在mac编译有bug,0.3.4修复了,报错信息为fatal error: 'ext/slist' file not found
。
7 thirdparty/vars.sh中将curl的版本从7.54.0改为7.56.0,7.54.0版本编译时会有问题,报错信息类似configure: error: Could not find 10.5 to 10.12 SDK.
8 编译遇到 src/thrift/transport/TSSLSocket.cpp:33:10: fatal error: 'openssl/err.h' file not found
类似错误时,先确保已安装openssl,然后执行ln -s /usr/local/Cellar/openssl/1.0.2n/include/openssl /usr/local/include/openssl
即可。
9 编译遇到 configure: error: C compiler cannot create executables
时,执行xcode-select --install即可。
10 编译遇到 Bison version 2.5 or higher must be installed on the system!
时,执行brew install bison;brew link bison --force
即可。
11 编译遇到 The source directory "/home/adam" does not appear to contain CMakeLists.txt
, 参考第5条调整mkdir,rm, cp命令参数顺序即可。
12 参考https://github.com/baidu/palo/wiki/Palo-Install 在Palo的源码目录依次执行
sh thirdparty/download-thirdparty.sh
sh thirdparty/build-thirdparty.sh
sh build.sh
13 用Clion打开palo的BE项目,右击CMakeLists.txt,执行Reload Cmake Project。
如下图,当你的代码文件都变成亮色,可以查看子类,就说明你的BE代码阅读环境已经搭建完成。
1 直接将FE代码用IDEA打开。
2 将thirdparty下的java-libraries.tar.gz解压,并添加到FE的classpath中。
3 到gensrc目录下执行make命令,会生成thrift,SqlParser相关的java代码,将生成的代码也加入到FE的classpath中。
按道理到此FE的Java项目就可以编译,测试了,但是我在跑测试时发现生成的SqlParser.java文件有些问题,不能测试。不过我暂时还不会进行Palo的开发,这个问题并不着急解决,现在阅读代码已经是足够了。