HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。
Hbase有多种访问接口,python访问hbase是通过thrift gateway来实现的。
利用thrift序列化技术,支持C++,PHP,Python等多种语言,本质最终是编译成MapReduce Job来处理HBase表数据,适合做数据统计。
thrift 是facebook开发并开源的一个二进制通讯中间件,通过thrift,我们可以充分利用各个语言的优势,编写高效的代码。
下载地址:http://mirrors.hust.edu.cn/apache/thrift/0.9.3/thrift-0.9.3.tar.gz
我是在ubuntu15.10版本上安装的Thrift,安装时候遇到两个问题在这也稍微描述一下,供参考。
a) 在执行【./configure】命令时候,编译出错,错误提示为:
no acceptable C compiler found in $PATH
解决方式:
安装gcc即可
sudo apt-get install gcc
b) 同样是在执行【./configure】命令时候出错,错误提示为:
No targets specified and no makefile found
解决方式:
第一. update最新版本系统软件
sudo apt-get update
第二. 编译缺失关联软件
sudo apt-get install gcc build-essential
编译执行完毕之后,再执行【./configure】 && 【make】&&【make install】命令就可以安装成功了。
注:ubuntu版本过低也会安装失败
Hbase版本为:1.1.5
下载地址:http://mirrors.cnnic.cn/apache/hbase/stable/hbase-1.1.5-src.tar.gz
解压下载来的【hbase-1.1.5-src.tar.gz】
执行生成python文件的命令:
Sudo thrift –gen py /home/Ubuntu/Downloads/hbase-1.1.5/hbase-thrift/src/main/r/thrift/Hbase.thrift
执行成功后会在当前目录下生成【gen-py】目录,其中包含了python版本的HBase包
gen-py目录的目录结构为:
主要文件介绍如下:
【Hbase.py】中定义了一些HbaseClient可以使用的方法
【ttypes.py】中定义了HbaseClient传输的数据类型
将生成的HBase包放入项目代码或者放入Python环境的依赖包目录中即可调用。
在装有HBase的服务器上先启动Thrift
进入HBase安装目录:【/tools/hd/hbase/bin】
执行命令:
./hbase-daemon.sh start thrift
若不指定端口,则用默认端口:9090
创建hbase表:
import Hbase
from ttypes import *
from thrift.transport import TSocket
from django.conf import settings
def client_conn():
transport = TSocket.TSocket(settings.HBASE_HOST_IP, settings.HBASE_HOST_PORT)
transport = TTransport.TBufferedTransport(transport)
protocol = TBinaryProtocol.TBinaryProtocol(transport)
client = Hbase.Client(protocol)
transport.open()
return client
def get_all_tables():
client = client_conn()
table_names = client.getTableNames()
print table_names
if __name__=="__main__":
get_all_tables()