前几天,兴起想仔细玩玩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 ,还是有一点点收获吧。

Windwos下连远程linux Hbase小问题的更多相关文章

  1. Mac OS X下配置远程Linux 服务器SSH密钥认证自动登录

    1. 在本地机器创建公钥 打开万能的终端,执行如下命令,无视一切输出,一路欢快地回车即可. ssh-keygen -t rsa -C 'your email@domain.com' -t 指定密钥类型 ...

  2. Windows下搭建远程Linux主机的图形化本地开发环境

    在实际开发中,项目的类生产.生产环境一般都是选择Linux为服务器进行部署. 相应的,我们的开发最好也在Linux环境下进行,否则容易引发其他的问题,比如不同环境下功能不一致.库依赖差异等. 但是Li ...

  3. Mac下配置远程Linux 服务器SSH密钥认证自动登录

    1. 在本地机器创建公钥 打开万能的终端,执行如下命令,无视一切输出,一路欢快地回车即可. ssh-keygen -t rsa -C 'your email@domain.com' -t 指定密钥类型 ...

  4. Xming + PuTTY 在Windows下远程Linux主机

    Xming + PuTTY 在Windows下远程Linux主机 一.原理     Linux/Unix的X Window具有网络透明性.X Window系统里有一个统一的Server来负责各个程序与 ...

  5. linux下使用远程图形界面

    1. 用xrdp的方式(客户端就是windows下的远程桌面程序) http://jingyan.baidu.com/article/d3b74d64bdab5d1f76e60951.html 2. ...

  6. Ubuntu上安装和使用SSH,Xming+PuTTY在Windows下远程Linux主机使用图形界面的程序

    自:http://blog.csdn.net/neofung/article/details/6574002 Ubuntu上安装和使用SSH  网上有很多介绍在Ubuntu下开启SSH服务的文章,但大 ...

  7. windows下使用远程工具登录虚拟机上的Linux、访问虚拟机上的服务 、端口转发、win7 telnet登陆虚拟机

    首先要清楚virtual box如何设置端口转发: 一篇文章: 如何使用VirtualBox进行端口转发 由于默认的方式是用NAT来做虚拟机网络的,因此如果从外网想访问虚拟机的应用会比较麻烦.以前一直 ...

  8. Windows系统下远程Linux系统

    Windows系统下远程Linux系统 工具:Xmanager 启动界面: 配置保存路径(win7): C:\Users\Administrator\AppData\Roaming\NetSarang ...

  9. [z]Windows 下基于 Eclipse 的可视化远程 Linux C/C++ 开发环境搭建

    http://blog.csdn.net/lostaway/article/details/8086056 1.简介 Windows 下远程 Linux 开发工具,比较著名的就是 WinGDB 和 M ...

随机推荐

  1. KRBTabControl

    This article explains how to make a custom Windows Tab Control in C#. Download demo project - 82.4 K ...

  2. JVM基础(1)——内存模型

    转载:http://blog.csdn.net/weitry/article/details/53264262 系列文章规划: JVM基础(1)——内存模型 JVM基础(2)——内存管理 JVM基础( ...

  3. 正则表达式匹配a标签或div标签

    这里以a标签为例 a标签的href var a='<P><A href=\'~abc/ccg/ab.jpg\' width="3">文字</A> ...

  4. TX2 ROS IDE开发环境配置

    参考资料: http://www.mamicode.com/info-detail-1663827.html    基于Qt搭建ROS开发环境 https://blog.csdn.net/sbtxg/ ...

  5. ROC

    # -*- coding: utf-8 -*- # __author__ = "JieYao" from biocluster.agent import Agent from bi ...

  6. Drupal所能够理解的资源

    Drupal能够识别哪些资源类型? profile,不知道怎么翻译,应该是指安装类型,固定地存放于profiles目录下. module,模块,可以存在于多个目录下:modules.profiles/ ...

  7. poj3177 Redundant Paths 边双连通分量

    给一个无向图,问至少加入多少条边能够使图变成双连通图(随意两点之间至少有两条不同的路(边不同)). 图中的双连通分量不用管,所以缩点之后建新的无向无环图. 这样,题目问题等效于,把新图中度数为1的点相 ...

  8. Jquery如何序列化form表单数据为JSON对象 C# ADO.NET中设置Like模糊查询的参数 从客户端出现小于等于公式符号引发检测到有潜在危险的Request.Form 值 jquery调用iframe里面的方法 Js根据Ip地址自动判断是哪个城市 【我们一起写框架】MVVM的WPF框架(三)—数据控件 设计模式之简单工厂模式(C#语言描述)

    jquery提供的serialize方法能够实现. $("#searchForm").serialize();但是,观察输出的信息,发现serialize()方法做的是将表单中的数 ...

  9. mysql-ubuntu14.04彻底卸载mysql

    删除mysql的数据文件 sudo rm /var/lib/mysql/ -R 删除mysql的配置文件 sudo rm /etc/mysql/ -R 自动卸载mysql(包括server和clien ...

  10. 手动安装minGW

    minGW是C语言编译包,将GCC编译器在Windows平台上编译软件提供支持. 手工安装minGW是一件很繁琐的事情,但是搞懂它很有用,因为C语言本身是一个很小的语法系统,全靠 各种库在支持,安装m ...