在Window下远程连接Ubuntu中的Hbase

来源:互联网 发布:js解析json数据object 编辑:程序博客网 时间:2024/06/05 04:46

遇到问题归总

**

**

一、Java I/O报错,window上没有处理hadoop的工具包。

**

**

java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries. spark Eclipse on windows 7

由错误可得主要是程序在运行过程中去查看环境变量时,由于HADOOP_HOME在window上没有配置,所以取值为null,导致路径出问题。
解决方法:

  1. 下载winutils
  2. 随便建立一个文件目录,这里我是 F:\hadoop-winutil\bin
  3. 将下载的winutil.exe放入目录,建立系统对这个目录的索引,这里有两种方式
    方法一:在系统中设置环境变量HADOOP_HOME=F:\hadoop-winutil\bin; 具体过程不在赘述,不清楚请百度。重启电脑后,问题解决。

    方法二:在程序开头加入

 System.setProperty("hadoop.home.dir", "F:\\hadoop-winutil");

在解决这个问题时,百度搜到的都是垃圾,最终说的最明白的还是github上找到的链接说明,贴在这里。

**

2、连接超时

**
解决了上述问题之后,Java代码还是无法访问在虚拟机中的HBase,显示的原因是连接超时,所以我想通过HBase查看是否有人尝试连接。

游览器输入
ip:16010 访问Hbase查看Hbase基本信息
ip:50070 访问Hadoop查看Hadoop信息

虽然这里可以看到HBase连接数,但是好像并没有什么用处。

可以尝试在Ubuntu下/etc/hosts

127.0.0.1 localhost127.0.0.1 #主机名#

改成

192.168.42.130 localhost #主机名# 

这里的IP是自己Ubuntu主机的IP。
这是因为当远程机器访问Hbase服务时,询问HMaster在哪个地方时,集群回复的是localhost(127.0.0.1),然后远程机器在localhost(127.0.0.1)去找发现找不到,所以连接不上。改成目标地址之后,就好了。
同时也需要确保window下的hosts文件中对用主机的ip地址正确

192.168.42.130 ubuntu

PS:我错误的原因是因为写入hosts文件的这行代码,没有保存!!!!因为有时候window权限的问题!