社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
用python操作hbase。
这里是在linux上搭建的是一个测试环境,所以hbase是单机版本安装,安装thrift是为了支持python操作hbase。
网上也有类似教程,但是坑也不少,这里记录我的安装和使用过程。
我linux安装的习惯,是会在工具目录下(例如tools),建立build和src两个文件。src文件放压缩包,源码等,build是安装目录。所以这里我的默认目录就是tools。
而且,大家工作中都是使用公司服务器,一般没有linux的root权限的。
所以这里全部是无root权限下的安装。
首先这里我们假设你已经安装好了python,如果没有可以安装anaconda,这时一个python集成环境(for python初学者)
cd src
wget http://mirror.bit.edu.cn/apache/thrift/0.10.0/thrift-0.10.0.tar.gz
tar -xvf thrift-0.10.0.tar.gz
cd thrift-0.10.0
./configure -prefix=/home/rd/lijia/MyInstall/build/thrift
make && make install
在configure时可能会报错:
configure: error: Bison version 2.5 or higher must be installed on the system!
那就先按照一个版本较高的bison。
或是缺少其他依赖,逐个下载安装即可,这里都不在讲。
直到configure不在报错。
安装之后,看看你的build文件夹下会有thrift文件
然后设置一下环境变量,在你的bashrc文件中添加
#thrift
export THRIFT_HOME=/XX/build/thrift
export PATH=$THRIFT_HOME/bin:$PATH
source一下。然后执行
thrift -version
Thrift version 0.10.0
就说明thrift安装成功啦。
注意这里是hbase的单机版安装
下载页面:http://mirror.bit.edu.cn/apache/hbase/stable/
其中:
这里我们下载这两个文件
其中bin文件不需要安装即可直接使用,而src文件在设置python的支持的时候会用到。
我linux上安装的习惯,在某个文件下会有两个文件src和build
下载解压:
cd src
wget http://mirror.bit.edu.cn/apache/hbase/stable/hbase-1.2.6-src.tar.gz
wget http://mirror.bit.edu.cn/apache/hbase/stable/hbase-1.2.6-bin.tar.gz
tar -xvf hbase-1.2.6-bin.tar.gz -C ../build/
tar -xvf hbase-1.2.6-src.tar.gz
这时build和src文件夹下分别有hbase-1.2.6文件。
接着获取你的$JAVA_HOME,复制路径。我的是
$echo $JAVA_HOME
/XX/build/jdk1.8.0_65
然后进入build文件夹下的hbase,打开conf文件夹下hbase-env.sh文件
cd ../build/hbase-1.2.6/
vim conf/hbase-env.sh
在这个文件中添加你的$JAVA_HOME
export JAVA_HOME=/XX/build/jdk1.8.0_65
然后打开conf下hbase-sit.xml文件,在之间添加(我们的是单机版hbase哦)
vim conf/hbase-site.xml
添加内容如下:
<property>
<name>hbase.rootdir</name>
<value>/XX/build/hbase-1.2.6/data</value>
</property>
然后可以配置环境变量,把hbase加到你的bashrc文件。
启动hbase
start-hbase.sh
hbase安装并启动了。我们验证一下:
执行hbase shell
$hbase shell
2017-10-17 17:01:44,598 WARN [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 1.2.6, rUnknown, Mon May 29 02:25:32 CDT 2017
hbase(main):001:0> list
TABLE
0 row(s) in 0.2220 seconds
=> []
hbase(main):002:0>
我们的目的是用python操作hbase。所以工作还没完成。
hbase-daemon.sh start thrift
看一下log,是否启动成功
我遇到过这样的错误:
org.apache.thrift.transport.TTransportException: Could not create ServerSocket on address /0.0.0.0:9090.
这是因为默认的9090端口被占用啦
那我们换一个端口启动:
hbase-daemon.sh start thrift -p 9091
问题就解决啦
查看一下:
jps
31491 Main
37335 Jps
32857 HMaster
37071 ThriftServer
可以看到thriftServer已经有啦
首先当然要
pip install thrift
然后记得我们之前下载的hbase-1.2.6-src.tar.gz文件吗,我们已经解压在src中了
cd src/hbase-1.2.6
find . -name Hbase.thrift
找到这个文件Hbase.thrift
cd ./hbase-thrift/src/main/resources/org/apache/hadoop/hbase/thrift
thrift --gen py Hbase.thrift
会看到文件下下多出一个文件
gen-py
然后我们找到python的第三方库的安装位置
我的是:/XX/anaconda2/lib/python2.7/site-packages
执行:
cp -r gen-py/hbase/ /XX/anaconda2/lib/python2.7/site-packages/
至此。就可以使用python操作hbase了。
我们写一个python脚本测试一下吧
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import sys
from thrift import Thrift
from thrift.transport import TSocket, TTransport
from thrift.protocol import TBinaryProtocol,TCompactProtocol
from hbase import Hbase
reload(sys)
sys.setdefaultencoding('utf8')
transport=TTransport.TBufferedTransport(TSocket.TSocket('localhost', 9091) )
protocol = TBinaryProtocol.TBinaryProtocol(transport)
client = Hbase.Client(protocol)
transport.open()
print "------"
print client.getTableNames()
执行这个脚本,终于可以啦。。。。
环境也是这样搭建,连接的时候ip和port换成远程hbase就可以了。
python操作hbase,还是建议使用happybase第三方包
pip install happybase
这个happbase封装了thrift,使得操作更简单,并且有很好的api可以查看:
http://happybase.readthedocs.io/en/latest/index.html
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!