Python开发HBase程序

原理:
除了Java之外,最常见的访问HBase的方法是通过Thrift。Thrift是一种语言和一套生成代码的工具。Thrift是一种描 述对象和服务的界面定义语言(Interface Definition Language)。它提供了一种网络协议,使用这些对象和服务定义的进程之间基于这种网络协议彼此进行通信。Thrift根据你描述的界面定义语言生成 你喜欢的语言的代码。使用这种代码,你可以编写应用,通过Thrift提供的通用语言和其他应用系统进行通信。HBase随机预装了描述服 务层和对象集合的Thrift IDL。HBase也提供了实现接口的服务。本实验将生成Thrift客户端函数库,然后利用客户端函数库通过Python访问HBase,这种方式完全 脱离了Java和JVM。同样,可以通过其他语言使用同样的方式来访问HBase,如PHP,go。

软件版本:
hadoop2.2.0(参见 hadoop2.2.0测试环境搭建
hbase0.96.0 (参见 Hbase0.96.0 +hadoop2.2.0安装

实验环境:
hadoop1 192.168.100.171(hadoop master、secondaryname、zookeeper、hbase HMaster)
hadoop2 192.168.100.172(zookeeper、hbase HRegion、Hive Shell)
hadoop3 192.168.100.173(hadoop slave、zookeeper、hbase HRegion)
hadoop4 192.168.100.174(hadoop slave、zookeeper、hbase HRegion)
hadoop5 192.168.100.175(hadoop slave、zookeeper、hbase HRegion)
dataserver 192.168.100.141(Hive metastore、MySQL Server、Oracle)

准备工作:
本次测试在dataserver进行
下载thrift0.9.1至/mnt/mydisk/soft/program/thrift-0.9.1.tar.gz
下载hbase0.96.0源码至/mnt/mydisk/soft/hadoop/hbase/hbase-0.96.0-src.tar.gz

1:安装thrift0.9.1
[root@dataserver app]# sudo yum install automake libtool flex bison pkgconfig gcc-c++ boost-devel libevent-devel zlib-devel python-devel ruby-devel
[root@dataserver app]# tar zxf /mnt/mydisk/soft/program/thrift-0.9.1.tar.gz
[root@dataserver app]# cd thrift-0.9.1
[root@dataserver thrift-0.9.1]# ./configure
**************************************************************************************
Python开发HBase程序 - mmicky - mmicky 的博客
 注意安装thrift安装上要使用Python库,如果要使用其他语言就安装上相应的语言库
**************************************************************************************
[root@dataserver thrift-0.9.1]# make
**************************************************************************************
Python开发HBase程序 - mmicky - mmicky 的博客
 注意如果要编译C++库的话,会出现上面的错误,原因是编译文件路径有问题,可以将已经编译的test/cpp/*.o复制到test/cpp/.libs后,继续编译就可以了。当然不怕麻烦的话,可以修改一下编译文件。
[root@dataserver thrift-0.9.1] cd test/cpp
[root@dataserver cpp]# cp *.o .libs/
**************************************************************************************
[root@dataserver thrift-0.9.1]# make install
[root@dataserver thrift-0.9.1]# thrift --version

2:安装HBase源代码
[root@dataserver hbase]# cd /app/hadoop
[root@dataserver hadoop]# tar /mnt/mydisk/soft/hadoop/hbase/hbase-0.96.0-src.tar.gz
[root@dataserver hadoop]# mv hbase-0.96.0 hbase096_src

3:建立python项目目录以及使用的Hbase库和thrift库
[root@dataserver hadoop]# mkdir -p /app/myprom/python/hbase
[root@dataserver hadoop]# cd hbase096_src/hbase-thrift/src/main/resources/org/apache/hadoop/hbase/thrift
[root@dataserver thrift]# thrift -gen py Hbase.thrift
[root@dataserver thrift]# cd gen-py
[root@dataserver gen-py]# cp -r * /app/myprom/python/hbase/
[root@dataserver thrift]# cd /app
[root@dataserver app]# easy_install thrift==0.9.1
[root@dataserver thrift2]# cd /usr/lib64/python2.6/site-packages
[root@dataserver site-packages]# cp -r thrift /app/myprom/python/hbase/
[root@dataserver site-packages]# cd /app/myprom/python/hbase
这样,项目要使用的库建立好了
Python开发HBase程序 - mmicky - mmicky 的博客
 
4:启动hadoop2.2.0、zookeeper3.4.5、HBase0.96.0
使用bin/hbase-deamon.sh start thrift 启动HBase thrift服务

5:编写python程序,使用thrift访问HBase0.96.0
编写程序前,先切换到python项目目录/app/myprom/python/hbase
[root@dataserver hbase]# python
>>> from thrift.transport import TSocket
>>> from thrift.protocol import TBinaryProtocol
>>> from hbase import Hbase
>>> transport=TSocket.TSocket("hadoop1",9090)
>>> protocol=TBinaryProtocol.TBinaryProtocol(transport)
>>> client=Hbase.Client(protocol)
>>> transport.open()
>>> client.getTableNames()
>>> client.getTableRegions("wordcount")
>>> client.getColumnDescriptors("wordcount")
Python开发HBase程序 - mmicky - mmicky 的博客
 
6:TIPS
A:HBase0.96.0还提供了thrift2(app/hadoop/hbase096_src/hbase-thrift/src/main/resources/org/apache/hadoop/hbase/thrift2)接口,对HBase的操作有所变化,基本原理一样。下面是python代码:
>>> from thrift.transport import TSocket
>>> from thrift.protocol import TBinaryProtocol
>>> from hbase import THBaseService
>>> transport=TSocket.TSocket("hadoop1",9090)
>>> protocol=TBinaryProtocol.TBinaryProtocol(transport)
>>> client=THBaseService.Client(protocol)
>>> transport.open()
1.1 HBase环境配置: 1. 安装Java环境 HBase是基于Java开发的,因此需要先安装Java环境,可以从官网上下载JDK安装包进行安装。 2. 下载并解压HBase安装包 从官网上下载HBase安装包,解压到指定目录。 3. 配置HBase环境变量 在系统环境变量中添加HBase的bin目录路径,使得在命令行中可以直接使用HBase命令。 4. 修改HBase配置文件 在HBase的conf目录下找到hbase-site.xml文件,修改其中的hbase.rootdir、hbase.zookeeper.quorum、hbase.zookeeper.property.dataDir等属性,配置HBase的根目录、Zookeeper的地址和数据存储目录等。 5. 启动HBase 在命令行中输入start-hbase.sh(Linux/MacOS)或start-hbase.bat(Windows)启动HBase。 1.2 HBase表操作: 1. 创建表 在HBase shell中使用create命令创建表,指定表名和列族。 2. 插入数据 使用put命令插入数据,指定表名、行键、列族、列和值。 3. 查询数据 使用get命令查询数据,指定表名、行键、列族和列,可以获取指定单元格的值。 4. 删除数据 使用delete命令删除数据,指定表名、行键、列族和列,可以删除指定单元格的数据。 5. 删除表 使用disable命令先禁用表,然后使用drop命令删除表,也可以直接使用deleteall命令删除表及其所有数据。 1.3 Python访问HBase: 1. 安装happybase模块 使用pip命令安装happybase模块,该模块提供了Python访问HBase的API。 2. 创建连接 使用happybase模块中的Connection函数创建连接,指定Zookeeper的地址和端口号。 3. 创建表 使用create_table函数创建表,指定表名和列族等信息。 4. 插入数据 使用table.put函数插入数据,指定行键、列族、列和值等信息。 5. 查询数据 使用table.row函数查询指定行的数据,使用table.scan函数扫描整个表的数据。 6. 删除数据 使用table.delete函数删除指定行或指定单元格的数据。 7. 关闭连接 在程序结束时使用close函数关闭连接。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值