kudu 1.7 源碼安裝
一. 安裝環境依賴
yum install autoconf automake cyrus-sasl-devel cyrus-sasl-gssapi \
cyrus-sasl-plain flex gcc gcc-c++ gdb \
krb5-server krb5-workstation libtool make openssl-devel patch \
pkgconfig redhat-lsb-core rsync unzip vim-common which
二.安裝開發以下工具
DTLS_RPM=rhscl-devtoolset-3-epel-6-x86_64-1-2.noarch.rpm
DTLS_RPM_URL=https://www.softwarecollections.org/repos/rhscl/devtoolset-3/epel-6-x86_64/noarch/${DTLS_RPM}wget ${DTLS_RPM_URL} -O ${DTLS_RPM}
yum install -y scl-utils ${DTLS_RPM}
yum install -y devtoolset-3-toolchain
三.安裝額外的軟件和文檔構建工具
yum install doxygen gem graphviz ruby-devel zlib-devel
四.下載kudu源碼
https://archive.apache.org/dist/kudu/1.7.1/apache-kudu-1.7.1.tar.gz
tar -zxf apache-kudu-1.7.1.tar.gz
cd apache-kudu-1.7.1
五.構建第三方平臺需要的環境
build-support/enable_devtoolset.sh thirdparty/build-if-necessary.sh
這個步驟會下載相關的依賴包,會花費比較長的時間4小時左右(具體和網速有關)
六.構建kudu
使用上述相關的工具進行構建,構建的時候需要新建一個臨時目錄來保存輸出結果,注意:不能使用kudu源碼目錄
mkdir -p build/release
cd build/release
../../build-support/enable_devtoolset.sh \
../../thirdparty/installed/common/bin/cmake \
-DCMAKE_BUILD_TYPE=release \
../..
如果出現問題:
Version mismatch error. This is libtool 2.4.6, but definition of this LT_INIT comes from libtool 2.2.6b.
(可能是你之前裝的和現在裝的衝突,本次就是anaconda的和yum安裝的衝突)
yum remove -y autoconf
conda install -c anaconda autoconf
conda install -c anaconda automake (這個也要安裝)
繼續執行(花了幾十分鐘)
../../build-support/enable_devtoolset.sh \
../../thirdparty/installed/common/bin/cmake \
-DCMAKE_BUILD_TYPE=release \
../..
make -j4(將近一個小時)
七.構建文檔(可選)
make docs
八. 編譯後的將需要的文件整理到新建的文件夾
目錄結構:
其中:bin是服務程序目錄,conf是配置文件目錄,www是web後臺相關的js、圖片、css文件目錄。
九.安裝
Node2、node3的kudu配置(kudu程序根目錄是:/opt/kudu)
修改vim conf/master.gflagfile
--master_addresses=node2,node3
--fs_data_dirs=/opt/data/kudu/data
--fs_metadata_dir=/opt/data/kudu/metedata
--fs_wal_dir=/opt/data/kudu/wal
--log_dir=/opt/data/kudu/logs
--webserver_doc_root=/opt/kudu/www
修改vim conf/tserver.gflagfile
--fs_data_dirs=/opt/data/kudu_tserver/data--fs_metadata_dir=/opt/data/kudu_tserver/metedata--fs_wal_dir=/opt/data/kudu_tserver/wal--log_dir=/opt/data/kudu_tserver/logs--tserver_master_addrs=node2:7051,node3:7051
創建master需要的目錄:
mkdir -p /opt/data/kudu/data /opt/data/kudu/metedata /opt/data/kudu/metedata /opt/data/kudu/wal /opt/data/kudu/logs
創建tserver需要的目錄:
mkdir -p /opt/data/kudu_tserver/data /opt/data/kudu_tserver/metedata /opt/data/kudu_tserver/metedata /opt/data/kudu_tserver/wal /opt/data/kudu_tserver/logs
分別開啓node2、node3的服務
先開啓master服務
./kudu-master --flagfile=../conf/master.gflagfile
報錯:
./kudu-master: error while loading shared libraries: libsasl2.so.3: cannot open shared object file: No such file or directory
[root@node2 bin]# find / -name libsasl*
/usr/lib64/libsasl2.so.2.0.23
/usr/lib64/libsasl2.so
/usr/lib64/libsasl2.so.2
/usr/lib64/sasl2/libsasldb.so
/usr/lib64/sasl2/libsasldb.so.2.0.23
/usr/lib64/sasl2/libsasldb.so.2
確實沒有,下載libsasl2.so.3放到/usr/lib64/目錄
Chmod 777 libsasl2.so.3
再次開啓
./kudu-master --flagfile=../conf/master.gflagfile
報錯:
[root@node2 bin]# ./kudu-master --flagfile=../conf/master.gflagfile
./kudu-master: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./kudu-master)
./kudu-master: /lib64/libc.so.6: version `GLIBC_2.15' not found (required by ./kudu-master)
./kudu-master: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by ./kudu-master)
./kudu-master: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by ./kudu-master)
./kudu-master: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.5' not found (required by ./kudu-master)
./kudu-master: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by ./kudu-master)
./kudu-master: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.19' not found (required by ./kudu-master)
./kudu-master: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.17' not found (required by ./kudu-master)
./kudu-master: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /usr/lib64/libsasl2.so.3)
./kudu-master: /lib64/libc.so.6: version `GLIBC_2.15' not found (required by /usr/lib64/libsasl2.so.3)
[root@node2 bin]# strings /lib64/libc.so.6 |grep GLIBC_
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12
GLIBC_PRIVATE
最新的纔是2.12,沒有2.14
下載glibc軟件,並且升級
wget http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz
wget http://ftp.gnu.org/gnu/glibc/glibc-ports-2.14.tar.gz
tar -xvf glibc-2.14.tar.gz
tar -xvf glibc-ports-2.14.tar.gz
mv glibc-ports-2.14 glibc-2.14/ports
mkdir glibc-2.14/build
cd glibc-2.14/build
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
make
make install
運行再次報錯:
[root@node2 bin]# ./kudu-master --flagfile=../conf/master.gflagfile
./kudu-master: /lib64/libc.so.6: version `GLIBC_2.15' not found (required by ./kudu-master)
./kudu-master: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by ./kudu-master)
./kudu-master: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by ./kudu-master)
./kudu-master: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.5' not found (required by ./kudu-master)
./kudu-master: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by ./kudu-master)
./kudu-master: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.19' not found (required by ./kudu-master)
./kudu-master: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.17' not found (required by ./kudu-master)
./kudu-master: /lib64/libc.so.6: version `GLIBC_2.15' not found (required by /usr/lib64/libsasl2.so.3)
可以看見沒有GLIBCXX_3.4.13往上的
解決
##下載gcc最新版
wget http://ftp.gnu.org/gnu/gcc/gcc-4.8.1/gcc-4.8.1.tar.gz
然後解壓到文件夾
tar -xvzf gcc-4.8.1.tar.gz
進入解壓縮之後的目錄
cd gcc-4.8.1
然後執行下面的運行
./contrib/download_prerequisites
再返回上一層,建立build_gcc_4.8.1目錄,這個目錄和gcc-4.8.1平行
cd ..
mkdir build_gcc_4.8.1
進入剛建立的目錄,並執行編譯過程
cd build_gcc_4.8.1
../gcc-4.8.1/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
make -j23
make install
再次開啓
[root@node2 bin]# ./kudu-master --flagfile=../conf/master.gflagfile
報錯:
./kudu-master: /lib64/libc.so.6: version `GLIBC_2.15' not found (required by ./kudu-master)
./kudu-master: /lib64/libc.so.6: version `GLIBC_2.15' not found (required by /usr/lib64/libsasl2.so.3)
解決:
wget http://ftp.gnu.org/gnu/glibc/glibc-2.15.tar.gz
wget http://ftp.gnu.org/gnu/glibc/glibc-ports-2.15.tar.gz
tar -xvf glibc-2.15.tar.gz
tar -xvf glibc-ports-2.15.tar.gz
mv glibc-ports-2.15 glibc-2.15/ports
mkdir glibc-2.15/build
cd glibc-2.15/build
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
make
make install
查看結果,ok
[root@node2 build]# strings /lib64/libc.so.6 |grep GLIBC_
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12
GLIBC_2.13
GLIBC_2.14
GLIBC_2.15
GLIBC_PRIVATE
再次運行master:
[root@node2 bin]# ./kudu-master --flagfile=../conf/master.gflagfile
WARNING: Logging before InitGoogleLogging() is written to STDERR
F1122 17:58:20.281831 15935 init.cc:84] Check failed: _s.ok() Bad status: Not implemented: The CPU on this system (Intel(R) Xeon(R) CPU E5405 @ 2.00GHz) does not support the SSE4.2 instruction set which is required for running Kudu. If you are running inside a VM, you may need to enable SSE4.2 pass-through.
*** Check failure stack trace: ***
Aborted (core dumped)
安裝了兩天,還這樣,心累,不玩了
參考文章:https://www.cnblogs.com/chengjunhao/p/9070945.html