Hadoop---安装thrift

来源:互联网 发布:淘宝买家退货率高后果 编辑:程序博客网 时间:2024/06/05 05:17

因为主要参照shine_forever的文章利用python访问Hbase(Thrift模块安装与测试),所以把类型设为转载,并对原作者表示感谢。

关于Thrift的介绍请看文章最后的第一个参考文献。

对比我的和参考文章的安装过程,其中的/usr/local/python2.7/lib/python2.7/site-packages/对应为我的/usr/local/lib/python2.7/site-packages/
其中的/usr/lib/python2.7/site-packages/对应为我的/usr/lib/python2.7/site-packages/

python版本为2.7.3
说明,python2.7.3与thrift结合没问题!

1)下载并安装thrift

>sudo tar fvxz thrift-0.9.3.tar.gz>cd thrift-0.9.3>sudo ./configure >sudo make>sudo make install

2)让thrift支持hbase
执行以下命令:

thrift --gen py /usr/hbase-0.94.11/src/main/resources/org/apache/hadoop/hbase/thrift/Hbase.thrift

注意我的hbase安装在/usr下。
会在当前目前下创建一个目录,目录名称为:gen-py

[hadoop@node1 ~]$ lltotal 7056-rw-rw-r-- 1 hadoop hadoop    3045 Oct 14 13:55 access_log2.txt-rw-r--r-- 1 hadoop hadoop 7118627 Feb  1  2012 access_log.txt-rw-rw-r-- 1 hadoop hadoop    3500 Oct 22 10:17 derby.log**drwxrwxr-x 3 hadoop hadoop    4096 Oct 24 15:28 gen-py**-rw-rw-r-- 1 hadoop hadoop    3551 Oct 13 11:21 pig_1413170429087.loggen-py目录结构如下:[hadoop@node1 ~]$ tree gen-py/gen-py/|-- __init__.py`-- hbase    |-- Hbase-remote    |-- Hbase.py    |-- __init__.py    |-- constants.py    `-- ttypes.py1 directory, 6 files

3)把gen-py目录复制到python相关目录中:

sudo cp -r gen-py/hbase/   /usr/local/lib/python2.7/site-packages/.

4)让python可以import thrift模块:

sudo ln -s /usr/lib/python2.7/site-packages/thrift* /usr/local/lib/python2.7/site-packages/.  //注意这与上面是一行sudo ls -l /usr/local/lib/python2.7/site-packages/total 12drwxr-xr-x 2 root root 4096 Oct 24 15:32 hbase-rw-r--r-- 1 root root  119 Oct 24 11:30 READMElrwxrwxrwx 1 root root   39 Oct 24 15:50 thrift -> /usr/lib/python2.7/site-packages/thriftlrwxrwxrwx 1 root root   60 Oct 24 15:50 thrift-0.9.0-py2.7.egg-info -> /usr/lib/python2.7/site-packages/thrift-0.9.0-py2.7.egg-info

5)使用python通过thrift连接HBase测试

1、启动thrift【需提前启动Hadoop和HBase】

[hadoop@lenovo ~]$ hbase thrift -p 9090 start打开另一个终端>jps可以发现多了一个ThriftServer

2 编写python脚本,查看hbase中有哪些表:

创建testThrift.py文件,并chmod a+x testThrift.py

#! /usr/bin/env python#coding=utf-8import sys#Hbase.thrift生成的py文件放在这里,此处与原文不同sys.path.append('/usr/local/lib/python2.7/site-packages')from thrift import Thriftfrom thrift.transport import TSocketfrom thrift.transport import TTransportfrom thrift.protocol import TBinaryProtocolfrom hbase import Hbase#如ColumnDescriptor 等在hbase.ttypes中定义from hbase.ttypes import *# Make socket#此处可以修改地址和端口transport = TSocket.TSocket('172.16.41.26', 9090)# Buffering is critical. Raw sockets are very slow# 还可以用TFramedTransport,也是高效传输方式transport = TTransport.TBufferedTransport(transport)# Wrap in a protocol#传输协议和传输过程是分离的,可以支持多协议protocol = TBinaryProtocol.TBinaryProtocol(transport)#客户端代表一个用户client = Hbase.Client(protocol)#打开连接transport.open()#打印表名print(client.getTableNames())
>./testThrift.py[]

参考文献:
讲如何安装Thrift的How-to: Use the HBase Thrift Interface, Part 1
讲如何写python使用Thrift的How-to: Use the HBase Thrift Interface, Part 2: Inserting/Getting Rows
别人的安装过程利用python访问Hbase(Thrift模块安装与测试)

0 0
原创粉丝点击