kudu编译及自定义版本升级

目的

由于kudu目前属于孵化版本,跟踪slack有一些很值得去提升性能的patch,希望可以自定义编译kudu工程,然后发布到集群环境中(kudu集群是通过cloudera manager parcels安装的)。

编译环境选择

kudu c++工程编译,切记与环境关系很大,如果部署环境是centos6,则在centos6上编译。我在unbuntu上编译后,发布到centos环境里,各种异常各种缺包。

编译步骤

以centos为例:
1.安装必要的libraries

$ sudo yum install gcc gcc-c++ autoconf automake libtool \
  boost-static boost-devel cyrus-sasl-devel \
  cyrus-sasl-plain patch pkgconfig make rsync vim-common gdb git

2.如果centos版本低于7.0,安装toolset,下载不了手动下载一下。

$ DTLS_RPM=rhscl-devtoolset-3-epel-6-x86_64.noarch.rpm
$ DTLS_RPM_URL=https://www.softwarecollections.org/en/scls/rhscl/devtoolset-3/epel-6-x86_64/download/${DTLS_RPM}
$ wget ${DTLS_RPM_URL} -O ${DTLS_RPM}
$ sudo yum install -y scl-utils ${DTLS_RPM}
$ sudo yum install -y devtoolset-3-toolchain

3.可选项,安装gem、ruby-devel、ascidoctor。

$ sudo yum install gem ruby-devel
$ sudo gem install asciidoctor

4.下载kudu工程,最新版本建议使用cloudera kudu git

$ git clone https://github.com/apache/incubator-kudu kudu

5.安装第三方必要的包,很耗时

$ build-support/enable_devtoolset.sh thirdparty/build-if-necessary.sh

6.cmake构建makefile文件,然后make编译工程,若cmake剔除test,加入参数-DNO_TESTS=1

$ cd kudu
$ mkdir -p build/release 
$ cd build/release ../../build-support/enable_devtoolset.sh \ ../../thirdparty/installed/bin/cmake \ -DCMAKE_BUILD_TYPE=release \ ../.. 
$ make -j4

7.目录结构

..bin
..CMakeCache.txt
..CMakeFiles
..cmake_install.cmake
..CTestTetFile.cmake
..lib
..Makefile
..src

发布方式

1.生成parcels文件,通过cloudera manager自动分发和编译,未完成,不清楚parcels文件如何构建,参考parcel文件构建
2.手动替换相关文件
优先停止kudu所有服务。
cloudera manager 安装kudu directory是/opt/cloudera/parcels/KUDU,软链至相应版本的kudu。目录结构如下

..bin--部分可执行文件,最终调用的是lib/kudu/bin
..lib
....kudu
......bin--自编译执行文件目录
......sbin--自编译执行文件目录
......www
...
..lib64
..meta--parsels包的metadata文件目录
..sbin--部分可执行文件,最终调用的是lib/kudu/sbin

替换lib/kudu/bin 及lib/kudu/sbin下的相应文件,从自编译的..bin目录下获取。
替换git上下载的www目录
替换lib64下的libkudu_client.so.0.1.0,从自编译的build/release/lib/exported下获取。

启动

cloudera manager上直接启动

参考

kudu官方build from source

你可能感兴趣的:(kudu)