在单机模式下安装HBase
一、安装JDK https://blog.csdn.net/y472360651/article/details/78751859
二、从官网下在相应版本的安装包http://archive.apache.org/dist/hbase/ 可选择 stable/ 版的,这里选择的是
hbase-1.4.8-bin.tar.gz 还有一个 hbase-1.4.8-src.tar.gz,两者区别如下:
bin代表二进制可执行,src代表源代码文件。src的拿到之后要编译一下。
hbase-1.4.8-bin.tar.gz是直接编译好的,直接安装就行。
hbase-1.4.8-src.tar.gz是源代码,需要编译hbase环境进行编译,然后再安装使用。
三、 解压
tar -zxvf hbase-1.4.8-bin.tar.gz
四、移动至/usr/local/HBase
目录当中
mv hadoop-1.4.8 /usr/local/hbase
五、进入/usr/local/HBase/conf目录,使用vi编辑器,打开hbase-env.sh文件,修改Java环境变量JAVA_HOME的值和pid存放位置(根据自己jdk版本和路径更改):
export JAVA_HOME=/usr/local/jdk1.8.0_151
export PATH=$PATH:$JAVA_HOME/bin
添加Hbase环境变量:
export HBASE_HOME=/usr/local/hbase
export PATH=$PATH:$HBASE_HOME/bin
使用source~/.bashrc让配置立即生效
六:进入/usr/local/HBase/conf目录,使用vi编辑器,打开hbase-site.xml文件。这是HBase的主要配置文件,你只需要在HBase和Zookeeper写入数据的本地文件系统上指定目录即可。将<property>标签粘贴到标签下<configuration>下:
可自己更改到想要的路径
<configuration>
<property>
<name>hbase.rootdir</name>
<value>file:///home/hbase/rootdir</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/hbase/zookeeper</value>
</property>
</configuration>
七、进入/usr/local/hbase/bin
目录,输入以下命令启动HBase:
./start-hbase.sh //启动
./stop-hbase.sh //停止
Thrift 安装
一、安装centos需要的扩展
yum install -y automake libtool flex bison pkgconfig gcc-c++ libevent-devel zlib-devel python-devel ruby-devel openssl-devel
二、安装boost,本地源码安装最安全
wget http://sourceforge.net/projects/boost/files/boost/1.63.0/boost_1_63_0.tar.gz
tar -xvf boost_1_63_0.tar.gz
cd boost_1_63_0
./bootstrap.sh
./b2 install
三、安装Thrift
0.11.0版本下载地址:http://mirrors.hust.edu.cn/apache/thrift/0.11.0/thrift-0.11.0.tar.gz
解压编译:
tar -zxvf thrift-0.11.0.tar.gz
cd thrift-0.11.0
./configure --with-cpp --with-boost --with-python --without-csharp --with-java --without-erlang --without-perl --with-php --without-php_extension --without-ruby --without-haskell --without-go
make
make install
在Master中Hbase安装目录下的bin目录启动thrift服务:
./hbase-daemon.sh start thrift
PHP通过Thrift访问Hbase
Hbase通过thrift这个跨语言的RPC框架提供多语言的调用,Hbase有两套thrift接口(thrift1和thrift2),但是它们并不兼容
1、访问官网http://thrift.apache.org/download,下载
thrift-0.11.0.exe (windows下生成接口rpc工具,thrift-0.11.0.exe改名thrift.exe,保存在相应位置,如E:\app\thrift.exe)
thrift-0.11.0.tar.gz(thrift相关库,保存在相应位置,如E:\app\thrift-0.11.0)
2、访问hbase官网(http://archive.apache.org/dist/hbase/),下载相应的Hbase版本,如:stable/hbase-1.4.8-src.tar.gz
解压保存在E:\app\hbase-1.4.8
3、生成php接口代码
输入cmd命令,切换到E:\app,可生成thrift和thrift2两种接口文件,自行选择
使用如下命令生成thrift php接口代码:
thrift -gen php hbase-1.4.8\hbase-thrift\src\main\resources\org\apache\hadoop\hbase\thrift\hbase.thrift
使用如下命令生成thrift2 php接口代码:
thrift -gen php hbase-1.4.8\hbase-thrift\src\main\resources\org\apache\hadoop\hbase\thrift2\hbase.thrift
以thrift接口文件为例, 其会生成在E:\app\gen-php\Hbase文件夹下:
thrift php接口文件包含:Hbase.php,Types.php
4、要通过thrift调用hbase,需要先启动hbase的接口服务
$HBASE_HOME/bin/hbase-daemon.sh start thrift //启动 根据hbase-daemon.sh的位置执行命名
$HBASE_HOME/bin/hbase-daemon.sh stop thrift //停止
5、php脚本库操作Hbase,以thrift接口文件为例
首先解压得到的thrift 相关库,找到php的相关库,thrift-0.11.0/lib/php/下,里面文件如下:
将php文件夹复制到自己的web目录下,如:C:\phpStudy\PHPTutorial\WWW\php thrift php接口文件
可在C:\phpStudy\PHPTutorial\WWW\php\src文件夹下建立packages文件夹,将生成的接口文件夹Hbase复制到其中
使用php脚本测试:
<?php
$GLOBALS['THRIFT_ROOT'] = './php/lib';
require_once $GLOBALS['THRIFT_ROOT'].'/Thrift/ClassLoader/ThriftClassLoader.php';
use Thrift\ClassLoader\ThriftClassLoader;
$loader = new ThriftClassLoader();
$loader->registerNamespace('Thrift','./php/lib');
$loader->register();
require_once './php/src/packages/Hbase/Hbase.php';
require_once './php/src/packages/Hbase/Types.php';
use Thrift\Protocol\TBinaryProtocol;
use Thrift\Transport\TBufferedTransport;
use Thrift\Transport\TSocket;
//连接Hbase
$host = '12.12.125.26';
$port = 9090;
$socket = new TSocket($host, $port);
$socket->setSendTimeout(10000); // Ten seconds (too long for production, but this is just a demo ;)
$socket->setRecvTimeout(20000); // Twenty seconds
$transport = new TBufferedTransport($socket);
$protocol = new TBinaryProtocol($transport);
$client = new Hbase\HbaseClient($protocol);
$transport->open();
//获取表列的数据
$tableName = 'test';
$row_key = 'test_row';
$col_name = array("test_cf:column1");
$attributes= array();
$res_array = $client->getRowsWithColumns($tableName, $row_key, $col_name, $attributes);
echo var_dump($res_array)."<br>";
//关闭连接
$transport->close();
?>
接口函数在生成的thrift php接口文件Hbase.php里面有,如果版本不一样,接口函数也可能不一样,可以直接看相应的源代码。