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
,还是有一点点收获吧。

Windwos下连远程linux Hbase小问题,布布扣,bubuko.com

时间: 2025-01-07 10:44:48

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

局域网内任何一台pc上windows下eclipse远程连接hbase数据库

通过很长一段时间的反复失败,终于在windows下实现远程连接hbase数据库,在不断的尝试过程中深感一个详细的文档的重要性,于是就把我配置的详细过程记录下来.文中如果有些地方用词不当,或者理解错误,欢迎您们评论. 一.运行平台 hbase服务器端:Ubuntu 14.04 64位:HBASE1.1.3:JAVA 1.8: hbase客服端:windows32/64位:JAVA1.8:eclipse 4.5: 二.linux服务器端环境配置 1.  安装java 1.8软件 1)下载java软件

SSH连接下复制远程linux服务器文件到本地的命令(zz)

原文链接 许多人使用简易的SSH连接工具,有时候需要在SSH下复制文件到本地查看比较方便,我给大家介绍一个简单的命令SCP. scp是有Security的文件copy,基于ssh登录.操作起来比较方便,比如要把当前一个文件copy到远程另外一台主机上,可以如下命令. scp /home/daisy/full.tar.gz [email protected]:/home/root 然后会提示你输入另外那台172.19.2.75主机的root用户的登录密码,接着就开始copy了. 如果想反过来操作,

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

1. 在本地机器创建公钥 打开万能的终端,执行如下命令,无视一切输出,一路欢快地回车即可. ssh-keygen -t rsa -C 'your [email protected]' -t 指定密钥类型,默认即 rsa ,可以省略-C 设置注释文字,比如你的邮箱 2. 将公钥复制到ssh服务器 将前一步骤生成的公钥~/id_rsa.pub文件,复制到ssh服务器对应用户下的~/.ssh/authorized_keys文件,可以有多种方式,这里只介绍常用的三种. [适用于osx系统]使用ssh-c

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

1. 在本地机器创建公钥 打开万能的终端,执行如下命令,无视一切输出,一路欢快地回车即可. ssh-keygen -t rsa -C 'your [email protected]' -t 指定密钥类型,默认即 rsa ,可以省略-C 设置注释文字,比如你的邮箱 2. 将公钥复制到ssh服务器 将前一步骤生成的公钥~/id_rsa.pub文件,复制到ssh服务器对应用户下的~/.ssh/authorized_keys文件,可以有多种方式,这里只介绍常用的三种. [适用于osx系统]使用ssh-c

Xming + PuTTY 在Windows下远程Linux主机

Xming + PuTTY 在Windows下远程Linux主机 一.原理     Linux/Unix的X Window具有网络透明性.X Window系统里有一个统一的Server来负责各个程序与显示器.键盘和鼠标等输入输出设备的交互,每个有GUI的应用程序都通过网络协议与 Server进行交互.所以对于任何一个应用程序,本地运行和远程运行的差别仅仅是X Server的地址不同,别的没有差别.所以在Windows运行一个X Server,就可以很方便的远程运行有GUI的Linux应用了.同时

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

http://blog.csdn.net/lostaway/article/details/8086056 1.简介 Windows 下远程 Linux 开发工具,比较著名的就是 WinGDB 和 Magic C++.都是商业软件,而且配置复杂,据说还不稳定.其实,我们想要的就是个图形环境 IDE,而且是直接操作的远程 Linux 环境.经过若干的实践,发现使用 SecureCRT + Eclipse 基于 X11 转发即可实现可视化远程 Linux 开发.先附上最终效果图: 2.环境&软件准备

Linux下的远程桌面——VncServer

 在windows中为了方便统一的管理服务器,我们最常用的办法就是通过远程桌面,这样不仅方便了许多,还节约了成本.windows下可以远程桌面,那linux下可不可以远程桌面呢,答案是肯定的.下面将给大家介绍,如何搭建远程桌面服务. 我的生产环境如下: 1.联想G460笔记本电脑(windows 7       192.168.1.10) 2.DELL720服务器(RedHatEntLinux 6.6    192.168.1.2) 3.cisco 3750交换机 操作步骤: 1.安装vncse

windows和linux下如何远程获取操作系统版本和主机名

远程获取windows和linux操作系统版本和主机名需要具备以下条件: 假设 主机A(windows 7),ip:192.168.12.2 主机B(centos 6.3),ip:192.168.12.3 主机C(windows 2008)-为远程要获取信息的主机,ip:192.168.12.4 主机D(centos 6.3)-为远程要获取信息的主机,ip:192.168.12.5 windows: 1.主机A可以ping通主机C: 2.主机B可以ping通主机C: 3.主机B可以通过161端口

Linux下的远程桌面工具—tigervnc

可能是是先入为主的观念,很多人认为在Linux系统上图形并不实用,其实这一点是错的,平时服务器用不到图形界面的话,图形界面确实是没有用,但是如果Linux服务器是用来做图形处理.分析的,那么可想而知图形界面就是必须的图形界面在Linux下有2种,分别是GONME和X-Windows,2种图形界面看个人的使用习惯谁便选一种就可以了,而远程Linux的桌面服务中做的最稳当可靠的开源软件就是tigervnc-server,而客户端工具就很多了,你可以使用realvnc.tigervnc等等连接vnc的