centos 编译hbase。
一、安装工具的下载以及源代码下载
1. sudo yum -y groupinstall "Development Tools"
2. sudo yum -y install automake libtool flex bison pkgconfig gcc-c++ boost-devel libevent-devel python-devel ruby-devel zlib-devel openssl-devel
3. wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz
4. wget http://ftp.gnu.org/gnu/bison/bison-3.5.2.tar.gz
5. wget https://dl.bintray.com/boostorg/release/1.72.0/source/boost_1_72_0.tar.gz
6. wget https://github.com/libevent/libevent/releases/tag/release-2.1.11-stable/libevent-2.1.11-stable.tar.gz
7. wget https://dist.apache.org/repos/dist/release/thrift/0.13.0/thrift-0.13.0.tar.gz
8. wget http://archive.apache.org/dist/hbase/2.2.3/hbase-2.2.3-src.tar.gz
二、编译
1.安装autoconf
(1)tar xvf autoconf-2.69.tar.gz
(2)cd ./autoconf-2.69/
(3)./configure --prefix=/usr
(4)make
(5)make install
2. 安装bison
(1)tar xvf bison-3.5.2.tar.gz
(2)cd ./bison-3.5.2/
(3)./configure --prefix=/usr
(4)make
(5)make install
3. 安装libevent
(1)tar xvf libevent-2.1.11-stable.tar.gz
(2)cd ./libevent-2.1.11-stable/
(3)./configure --prefix=/usr/local/libevent
(4)make && make install
4. 安装boost
(1)tar xvf boost_1_72_0.tar.gz
(2)cd ./boost_1_72_0/
(3)./bootstrap.sh --prefix=/usr/local/boost
(4)./b2
(5)./b2 install
5. 安装thrift
(1)cp /usr/local/boost/lib/libboost_unit_test_framework.a /usr/local/lib64/libboost_unit_test_framework.a
(2)cp /usr/local/boost/lib/libboost_unit_test_framework.a /usr/lib64/libboost_unit_test_framework.a
(3)tar xvf thrift-0.13.0.tar.gz
(4)cd ./thrift-0.13.0/
(5)./configure --libdir=/usr/lib --with-cpp --with-boost=/usr/local/boost --with-libevent=/usr/local/libevent --without-python --without-java
(6)make && make install
6. 生成接口文件(thrift2)
(1)tar xvf hbase-2.2.3-src.tar.gz
(2)cd ./hbase-2.2.3/
(3)thrift --gen cpp ./hbase-thrift/src/main/resources/org/apache/hadoop/hbase/thrift2/hbase.thrift
(4)将生成的gen-cpp目录拷贝到工程文件即可使用。
三、hbase运行环境配置(下面使用的是thrift2,hbase-example下使用的是thrift的库,会报错类似于找不到函数方法等错误)
1. jdk配置
https://www.cnblogs.com/ztone/p/10591748.html
2. 关闭防火墙
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
3. 书写代码。注意配置路径
代码见cpp文件夹中的DemoClient.cpp。(见资源。。。。)
g++编译命令: g++ -DHAVE_NETINET_IN_H -o DemoClient -I${BOOST_INCLUDE} -I${THRIFT_DIR} -I./gen-cpp -L${LIB_EVENT} -I${INCLUDE_EVENT} -L${LIB_THRIFT} -L${THRIFT_BIN} -L${LIB_DIR} -L${BOOST_LIB_DIR} -Iboost_thread-gcc-mt DemoClient.cpp ${GEN_SRC} -std=c++11 -lthrift -lthrift-0.13.0 -lthriftz -lthriftz-0.13.0 -lthriftnb-0.13.0 -lthriftnb -levent_openssl -levent_core -levent -levent_pthreads -levent_extra
4. 注意启动连接网络。
5. 启动(重新打开官网编译好的hbase,上述无法编译生成thrift2(需要java来编译,麻烦,没必要),官网默认有,直接用)
start_hbash.sh //启动hbase
hbase-daemon.sh start thrift2 //启动thrift2
6. 启动客户端程序。
./DemoClient master(域名) 9090(端口)