记一次JAVA连接hbase报getMaster attempt 0 of 10 failed异常的解决

初学大数据方面的知识,以前没有用过,只好找博客看教程一步一步的来,自己搭的虚拟机,配置如下:

系统:CentOS6.4,主机的hostname:hadoop

IP:192.168.1.108

JDK:1.8

hadoop:1.2,伪集群

hbase:1.1,伪集群

一开始是一路顺畅,先启动hadoop,hdfs,然后启动hbase,hbase连接用zookeeper是自带的,我自己没有单独配置zookeeper,都启动完成之后使用hbase shell命令操作建表,插入数据,查询数据都是可以的,然后就开始使用hbase的java api来进行简单的操作,代码如下:

Configuration configuration = HBaseConfiguration.create();
conf.set("hbase.rootdir", "hdfs://hadoop:9000/hbase");
conf.set("hbase.zookeeper.quorum", "hadoop");

HBaseAdmin admin = new HBaseAdmin(configuration);

String tableName = "student";
if (admin.tableExists(tableName)) {
	System.out.println("表已存在,将进行删除");
	admin.disableTable(tableName);
	admin.deleteTable(tableName);
}
HTableDescriptor tableDesc = new HTableDescriptor(tableName);

tableDesc.addFamily(new HColumnDescriptor("name"));
admin.createTable(tableDesc);
System.out.println("表已经创建");
admin.close();

结果刚一启动就报了异常:getMaster attempt 0 of 10 failed; retrying after sleep of 1000

看看控制台吧,zookeeper的日志输出了,确实是能连接上,就是连接不上hbase,然后就是开始搜索解决方式,解决方式大体是有这么几种,如下:

1、防火墙未关闭,我虚拟机刚装好就已经把防火墙彻底关了,以防万一又查了一次,确实是关闭了,跟防火墙没有关系

2、虚拟机的host加了主机映射,但是windows本机的host文件没有添加映射,我的host文件已经加了,如下:

192.168.1.108 hadoop

通过cmd命令行ping hadoop也是可以ping通过,说明没问题

3、在hbase-site.xml配置文件中增加如下配置,然后重启hbase:

<property> 
   <name>hbase.master</name> 
   <value>hadoop:60000</value> 
</property>

然后在JAVA代码的中增加

conf.set("hbase.master","hadoop:60000");

此方法失败,还是报那个异常

4、禁上用IPV6,此方法无效

然后就开始漫长的调试,重启hadoop,hbase,重启虚拟机,结果还是一样,最后我把代码打成了jar包,传到虚拟里使用java来执行,结果一下子就成功了,我是一脸懵逼的,这TM到底是怎么回事,本机能访问,外部却不能,难道是IP绑定有问题?

又通过netstat命令查询当前端口占用情况,都是在127.0.0.1下,这时候我的虚拟host配置文件如下:

::1 localhost hadoop

127.0.0.1 localhost hadoop

因为在用java操作hdfs时也是这样的配置,是能成功的,到hbase就不行了,难道hbase使得127.0.0.1时外部不能访问?然后我就尝试着把hosts文件由

::1 localhost hadoop

127.0.0.1 localhost hadoop

改为

192.168.1.108 localhost hadoop

两行变一行

然后重新启动hadoop和hbase,再通过windows执行也成功了,应该是hadoop和hbase对外暴露的方式不一样的吧,hbase如果想让外部访问就要绑定到真实的IP下,如果绑定到127.0.0.1,则只能本机访问

转载于:https://my.oschina.net/857359351/blog/2987789

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值