zoukankan      html  css  js  c++  java
  • Windwos下连远程linux Hbase小问题


    前几天,兴起想仔细玩玩hbase,细细去研究一下,写了个小demo,从win7去连接另一台T510的ubuntu上的hbase.很简单的crud的操作程序,没有看出来什么问题,但是跑起来,硬是好像block住了,不往下执行,eclipse console没有打印任何信息,小红点还一直亮,纳闷之余,看到一些
    Opening socket connection to server 192.168.0.xx/192.168.0.xx:2181. Will not attempt to authenticate using SASL (java.lang.SecurityException: 无法定位登录配置) 错误及 hadoop.native.lib is deprecated. Instead, use io.native.lib.available错误,以为是这二者造成的,网上找了n个贴子,试了n次,都毫无头绪,结果还是依然....
    真是奇怪了,zookeeper都连上了,但连不到Hbase的master或region server. why?

    换了一个本地虚拟机上的单节点伪分布下的hadoop,架上一个hbase-0.98.1-hadoop2跑起,win7下eclipse插件连接hdfs没问题,刷刷的/hbase目录出现了,hbase-site.xml配置好hbase.zookeeper.quorum指向新vm的本地域名,跑起,通了,刷刷的几秒执行完。。怪事,以后实例就直接vm上玩了。。。。

    今天下血本败了台新笔记本,内存升到了16G,装了ubuntu server,把hadoop2,hbase,hive一通都配好,再将quorum指向此机子下的地址,之前的那个问题又来了。小红点一直没退,block住一动不动。奇怪奇怪。。。。

    决定debug跟踪一看究竟。。。。
    一路都跟着很正常,很轻易地连上了zookeeper,locateMeta地址,locate master的location,再到生成RPC的stub完全ok...但是并不是所有都ok....当执行到

    RpcRetryingCaller.callWithRetries时,block住了,等了十几秒准备叉掉重来看上一步什么问题的时候。意外地,到了catch代码块,exception了,非常好,正是我想要的。。。。

    try {
    beforeCall();
    callable.prepare(tries != 0); // if called with false, check table status on ZK
    return callable.call();
    } catch (Throwable t) {
    if (LOG.isTraceEnabled()) {
    LOG.trace("Call exception, tries=" + tries + ", retries=" + retries + ", retryTime=" +
    (EnvironmentEdgeManager.currentTimeMillis() - this.globalStartTime) + "ms", t);
    }

    得到debug中e的message信息如下:
    org.apache.hadoop.net.ConnectTimeoutException: 20000 millis timeout while waiting for channel to be ready for connect. ch : java.nio.channels.SocketChannel[connection-pending remote=hadoop/192.168.0.105:50578]

    开心及气愤并存着,它这个鬼level是trace的,完全没有打印告知咱,若不是debug一回,深埋的小石头咱发现不了啊,顿时眼泪都流没了。。。。

    咱比较笨,到这里,还没有立马想到为什么会连到105, 105是我的T510机器的IP,第一反应,难道locate时候会cache数据写到文件中,查看了project也没有生成任何hbaes相关的文件,再回头看,region server的域名。。。hadoop.....
    oh...查看hosts文件,正是IP 105映射着hadoop.真相大白了。。。

    那些Will not attempt to authenticate using SASL (java.lang.SecurityException: 无法定位登录配置) 错误没关紧要。
    事实是这样的:
    1.hbase connection 是RPC的关键。connection通过查zookeeper来获取master地址,也通过zk获取meta的地址,再通过meta获取对应region server的地址。通过根据这些location信息,结合相关的操作获取stub.再通过stub发送网络包进行远程请求调用。。而获取到的location都是从hbase server(zk)中返回的,它是集群中的域名或地址,生成stub的时候,是我们本地拿到这个location去请求server.
    所以要保持win7的域名解析和集群中的域名解析要一致。学习过程中,我们还是好好地规范一下我们的环境吧,
    小小的问题,大大的折腾。。。anyhow ,还是有一点点收获吧。

  • 相关阅读:
    Saltstack module apache 详解
    Saltstack module ip 详解
    Saltstack module iosconfig 详解
    Saltstack module introspect 详解
    Saltstack module inspector 详解
    Saltstack module ini 详解
    Saltstack module incron 详解
    Modbus 指令 RS485指令规则
    停车系统对接第三方在线支付平台(二)
    停车系统对接第三方在线支付平台
  • 原文地址:https://www.cnblogs.com/bdifn/p/3776137.html
Copyright © 2011-2022 走看看