zoukankan      html  css  js  c++  java
  • ambari安装集群下python连接hbase之安装thrift

    简介:  

      python连接hbase是需要通过thrift连进行连接的,ambari安装的服务中貌似没有自带安装hbase的thrift,我是看配置hbase的配置名称里面没有thrift,cdh版本的就有,所以我就自己安装了thrift。

    一、thrift安装:

    1、下载thrift依赖的东西 

    yum install automake libtool flex bison pkgconfig gcc-c++ boost-devel libevent-devel zlib-devel python-devel ruby-devel openssl-devel

    2、安装boost_1_53_0.tar.gz

    [root@master ~]# wget http://sourceforge.net/projects/boost/files/boost/1.53.0/boost_1_53_0.tar.gz
    [root@master ~]# tar xvf boost_1_53_0.tar.gz
    [root@master ~]# cd boost_1_53_0
    [root@master boost_1_53_0]# ./bootstrap.sh
    [root@master boost_1_53_0]# ./b2 install
    [root@master boost_1_53_0]# cp /usr/local/lib/libboost_unit_test_framework.a /usr/lib64/
    [root@master boost_1_53_0]# make
    [root@master boost_1_53_0]# make install

    3、下载最新版本thrift,网址:http://thrift.apache.org
     
    4、移动到默认安装目录,并解压

    [root@master ~]# mv thrift-0.11.0.tar.gz /usr/local
    [root@master ~]# cd /usr/local
    [root@master local]# tar -zxvf thrift-0.11.0.tar.gz
    [root@master local]# mv thrift-0.11.0 thrift
    [root@master local]# cd thrift
    [root@master local]# ./configure --libdir=/usr/lib --without-java --without-python --without-c_glib
    [root@master local]# make
    [root@master local]# make install

     二、启动thrift

    1、找到hbase的bin执行文件夹,我执行的位置是ambari默认安装的文件夹下面/usr/hdp/2.6.3.0-235/hbase/bin

    2、启动thrift,默认端口是9090

    [root@master ~]# cd /usr/hdp/2.6.3.0-235/hbase/bin
    [root@master bin]# bin/hbase-daemon.sh start thrift

    三、使用python连接hbase

    1、安装python依赖包

    pip install thrift
    pip install hbase-thrift

    2、demo程序

    from thrift import Thrift
    from thrift.transport import TSocket
    from thrift.transport import TTransport
    from thrift.protocol import TBinaryProtocol
    
    from hbase import Hbase
    from hbase.ttypes import *
    
    transport = TSocket.TSocket('localhost', 9090)
    
    transport = TTransport.TBufferedTransport(transport)
    protocol = TBinaryProtocol.TBinaryProtocol(transport)
    
    client = Hbase.Client(protocol)
    transport.open()
    
    contents = ColumnDescriptor(name='cf:', maxVersions=1)
    # client.deleteTable('test')
    client.createTable('test', [contents])
    
    print client.getTableNames()
    
    # insert data
    transport.open()
    
    row = 'row-key1'
    
    mutations = [Mutation(column="cf:a", value="1")]
    client.mutateRow('test', row, mutations)
    
    # get one row
    tableName = 'test'
    rowKey = 'row-key1'
    
    result = client.getRow(tableName, rowKey)
    print result
    for r in result:
        print 'the row is ', r.row
        print 'the values is ', r.columns.get('cf:a').value
    transport.close()
  • 相关阅读:
    easyui 自定义editor扩展 propertygrid
    springboot 整合redis
    springboot 整合mybatis
    SpringBoot 打包war,并在tomcat中发布
    c# cef3 模拟浏览器上传文件
    c# cef3 判断文件下载是否完成
    c# cef3 关闭浏览器弹出新窗口
    c# 利用cef3抓取京东关键词商品列表,以手机为例
    c# 搭建cef3模拟浏览器
    c# TreeView实现三种选中状态
  • 原文地址:https://www.cnblogs.com/zhang-ke/p/9008228.html
Copyright © 2011-2022 走看看