精华内容
下载资源
问答
  • hbase远程连接时空指针异常问题。 相关的分析和测试,可以参看上一篇hbase远程连接——权限问题 idea客户端远程远程连接hbase服务时,连接时,报空指针异常 根据报错信息可知,出错的原因与zookeeper有关系,...

    hbase远程连接时空指针异常问题。

    相关的分析和测试,可以参看上一篇hbase远程连接——权限问题

    idea客户端远程远程连接hbase服务时,连接时,报空指针异常

    根据报错信息可知,出错的原因与zookeeper有关系,zookeeperWatcher检查者获nodes元数据信息有问题

     

    错误原因是:zookeeper中注册的hbase的节点名称发生变化,通常hbase的node名称是hbase,由于hbase发行版的不同,导致node名称发生变化,查看zookeeper中的节点名称,hbase-unsecure

    解决办法:在代码的配置中添加配置项

    展开全文
  • hbase客户端连接hbase服务端读写时,会出现莫名的异常,有时会报错看日志可以解决问题,有时控制台没有日志 本次遇到的问题是权限问题 服务器部署了ranger,当然hbase中也可以设置权限,因为集群不是我搭建的,不...

    在本地IDEA开发方便代码调试,测试通过后,才会打包上传服务器运行。

    hbase客户端连接hbase服务端读写时,会出现莫名的异常,有时会报错看日志可以解决问题,有时控制台没有日志

    本次遇到的问题是权限问题

    服务器部署了ranger,当然hbase中也可以设置权限,因为集群不是我搭建的,不确定是哪种原因导致的权限问题。

    下面说一下遇到的问题及思路和解决办法:

    异常的现象:

    1、idea控制台阻塞,不报错、不结束执行

    2、查看hbase日志,没有看到有用的信息

     

    思路:

    1、如果本地和服务器通信有问题,应该会报host、port相关的问题,虽然知道可能不是这个问题,但还是检查ip和端口是否开放

    检查命令:

    //测试ip是否正常
    ping ip 
    //测试端口是否正常
    telnet ip port
    
    

    2、检查zookeeper是否正常

    查看zookeeper、hbase的服务都正常

    单点测试读取zookeeper是否正常

    检查结果正常

    3、用自己的测试服务器执行相同的代码,说明代码是正常的

    4、ip、port、zookeeper、代码都正常,说明问题出在hbase上

     

    解决办法:

    1、在服务器端,进入Hbase客户端:hbase shell

     

    2、对用户授权(一定是hbase可以执行操作的用户):grant "用户" ,"RWXCA"

     这是在hbase服务授予某个用户权限,RWXCA,是授权的权限的范围,这里授予全范围

    3、在代码中,添加设置以什么用户访问

    System.setProperty("HADOOP_USER_NAME","admin")

    如果是打包运行在服务器运行

    config.set("hadoop.user.name","admin")

     

     

    展开全文
  • hbase 分享给同学用后,突然想到能不能在 docker 上多开 hbase,然后远程连接。 首先要了解相关 api 的运行机制。 我们通过 conf= HBaseConfiguration.create(); conf.set("hbase.zookeeper.quorum","39.99.156....

    把 hbase 开放给同学连接后,突然想到能不能在 docker 上多开 hbase,然后远程连接。
    首先要了解相关 api 的运行机制。
    我们通过

    conf= HBaseConfiguration.create();
    conf.set("hbase.zookeeper.quorum","39.99.156.XXX");
    conf.set("hbase.zookeeper.property.clientPort","2181");
    

    创建的连接,会向服务器对应的端口发送请求,然后再映射到 docker 容器上的端口,然后 hbase 会发送给客户端一个 Hostname以及对应master端口,然后客户端通过Hostname以及端口的方式连接 master。
    所以关键只需要做两件事:
    1. 修改 docker 的宿主端口映射
    2. 修改 docker 内容器的 hbase的master端口

    关于docker单纯搭建 hbase,网上 博客很多,这里就不介绍了

    首先要有一个镜像
    在这里插入图片描述
    docker ps已经运行了一个容器
    在这里插入图片描述
    我们发现宿主的2181,16000端口都是已经绑定容器里对应的端口,也就是说这些端口都已经被占用了,所以新的容器我们要用新的宿主端口映射到 容器。

    1. 使用如下命令
    docker run -d -h myhbase1 -p 2182:2181 -p 8081:8080 -p 8086:8085 -p 9091:9090 -p 9096:9095 -p 16001:16001 -p 16011:16011 -p 16202:16202 -p 16302:16302 --name hbase1 harisekhon/hbase
    

    这里已经运行了两个容器

    这个命令把宿主的2182端口映射到容器的’2181’端口,也就是说我们只要访问宿主的 2182端口,就可以进入容器的2181端口。

    1. 进入容器修改master服务端口
      首先进入容器
    docker exec -it hbase1 bash
    

    然后进入到 hbase 的配置文件里面修改端口

    vi /hbase/conf/hbase-site.xml
    

    增加如下配置

    <property>
        <name>hbase.master.port</name>
        <value>16001</value>
      </property>
    

    然后重启 hbase

    stop-hbase.sh
    start-hbase.sh
    

    然后在本地增加 hosts 映射
    在这里插入图片描述
    然后代码就只要修改

    conf= HBaseConfiguration.create();
            conf.set("hbase.zookeeper.quorum","39.99.156.XXX");
            //把端口修改为2182就行了!
            conf.set("hbase.zookeeper.property.clientPort","2182");
    

    在这里插入图片描述

    其实还没改完,其他端口的修改也是同样的思路,都在配置文件里修改端口,以及端口映射。

    展开全文
  • python操作hbase 远程连接

    千次阅读 2017-10-19 20:14:07
    这里是在linux上搭建的是一个测试环境,所以hbase是单机版本安装,安装thrift是为了支持python操作hbase。 网上也有类似教程,但是坑也不少,这里记录我的安装和使用过程。 我的linux安装习惯 我linux安装的...

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

    目的

    用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


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

    展开全文
  • IDSW集群中Hbase的访问 环境 项 内容 版本 hbase-1.4.9 hadoop版本 hadoop2.6.5 安装目录 /data/hbase-1.4.9 机器 10.111.25.140(主) 10.111.25.138 10.111.25.139 zookeeper ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,052
精华内容 5,220
关键字:

hbase远程连接