python操作hbase 远程连接 - Go语言中文社区

python操作hbase 远程连接


更多内容请访问我的个人博客

目的

用python操作hbase。
这里是在linux上搭建的是一个测试环境,所以hbase是单机版本安装,安装thrift是为了支持python操作hbase。
网上也有类似教程,但是坑也不少,这里记录我的安装和使用过程。

我的linux安装习惯

我linux安装的习惯,是会在工具目录下(例如tools),建立build和src两个文件。src文件放压缩包,源码等,build是安装目录。所以这里我的默认目录就是tools。
而且,大家工作中都是使用公司服务器,一般没有linux的root权限的。
所以这里全部是无root权限下的安装。

python

首先这里我们假设你已经安装好了python,如果没有可以安装anaconda,这时一个python集成环境(for python初学者)

thrift安装

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

注意这里是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>

启动hbase的thrift的rpc

我们的目的是用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已经有啦

python第三方库

首先当然要

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()

执行这个脚本,终于可以啦。。。。

python远程连接hbase

环境也是这样搭建,连接的时候ip和port换成远程hbase就可以了。

tips

python操作hbase,还是建议使用happybase第三方包

pip install happybase

这个happbase封装了thrift,使得操作更简单,并且有很好的api可以查看:
http://happybase.readthedocs.io/en/latest/index.html


更多内容请访问我的个人博客

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/TENLIU2099/article/details/78288912
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-01 18:27:44
  • 阅读 ( 1436 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢