没有全部遇到过。也没有经过测试。收集至此,以备以后遇到问题作为参考之用。
hadoop-0.20.2 & hbase-0.90.1集群启动错误问题解决:
问题如下:org.apache.hadoop.ipc.RPC$VersionMismatch: Protocol org.apache.hadoop.hdfs.protocol.ClientProtocol version mismatch. (client = 42, server = 41)
at org.apache.hadoop.ipc.RPC.getProxy(RPC.java:364)……………………………………
2011-01-21 00:14:41,550 INFO org.apache.hadoop.hbase.master.HMaster: Aborting
初步认为是hadoop-0.20.2 & hbase-0.90.1版本问题造成的,hbase-0.90.1/lib中hadoop-core-0.20-append- r1056497.jar使用的hadoop-core-0.20,因此将其替换为hadoop-0.20.2-core.jar即可
Hbase重启之后就无法启动的现象:
当我们使用Hbase 0.20.2的时候,遇到了2个奇怪的问题。
我们使用了数台机器构建了一个集群,并且按照Hadoop/Hbase的"Getting Started"安装配置了Hadoop和Hbase。之后能够正常启动Hadoop和Hbase,并且创建table和插入数据。
不过,当我们访问Master的页面时: http://10.37.17.252:60010/master.jsp ,我们发现了第一个问题:在regionserver区域,出现了2个127.0.0.1的regionserver,但是我们并没有在conf/regionservers将master设置为regionserver:
Region Servers………………………………
但是,虽然出现了以上的怪现象,但是hbase似乎仍然能够正常工作。只是,当我们打算重启hbase的时候,我们发现了第二个问题:我们尝试运行bin/stop-hbase.sh,之后,又运行启动hbase的脚本:bin/ start-hbase.sh,这一次,当我们访问master页面的时候http://10.37.17.252:60010/master.jsp,出现了如下的错误:
HTTP ERROR: 500org.apache.hadoop.hbase.client.RetriesExhaustedException: Failed setting up proxy to /10.37.17.248:60020 after attempts=1
…………………………
此时,Hbase能够进入shell,但是无法执行任何操作。于是再次试图关闭hbase的时候,却发现无法停止master,那个"stop master"后面的“.”出现了许许多多,仍然无法停止master节点。于是我们不得不强制kill掉master。Hbase就这样挂掉了。。。。。
Hbase重启之后就无法启动的原因分析:
经过多方排查,最后我在尝试使用netstat -an查看端口占用情况的时候发现:
在WAMDM1节点上,regionserver占用的60020端口占用为:127.0.0.1:60020
而在WAMDM2节点上, regionserver占用的60020端口占用为:10.37.17.249:60020
我感觉颇为蹊跷,之后便检查/etc/hosts文件,果然发现在WAMDM1和WAMDM2下的hosts文件不同。在WAMDM1的hosts文件中的内容为:
127.0.0.1 WAMDM1 localhost.localdomain localhost
10.37.17.248 WAMDM1.ruc.edu.cn WAMDM1
10.37.17.249 WAMDM2.ruc.edu.cn WAMDM2
10.37.17.250 WAMDM3.ruc.edu.cn WAMDM3
10.37.17.251 WAMDM4.ruc.edu.cn WAMDM4
10.37.17.252 WAMDM5.ruc.edu.cn WAMDM5
大家注意第一行。我们在使用配置Hadoop/Hbase的时候,常常使用主机名来代替IP使用,但是在WAMDM1的机器上,WAMDM1被映射为127.0.0.1,于是master和regionserver之间的通信就出错。这也就是为什么我们经常在日志中以及错误提示中看到如下信息:
Server at /10.37.17.248:60020 could not be reached after 1 tries, giving up.
org.apache.hadoop.hbase.client.RetriesExhaustedException: Failed setting up proxy to /10.37.17.248:60020 after attempts=1at org.apache.hadoop.hbase.ipc.HBaseRPC.waitForProxy(HBaseRPC.java:424)
………………
Hbase重启之后就无法启动的解决办法:
于是,我将所有机器的/etc/hosts文件,都改为了如下配置:
127.0.0.1 localhost
10.37.17.248 WAMDM1.ruc.edu.cn WAMDM1
10.37.17.249 WAMDM2.ruc.edu.cn WAMDM2
10.37.17.250 WAMDM3.ruc.edu.cn WAMDM3
10.37.17.251 WAMDM4.ruc.edu.cn WAMDM4
10.37.17.252 WAMDM5.ruc.edu.cn WAMDM5
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
同时,为了保险起见,我在stop-hbase.sh中,也加入停止regionservers的命令(虽然在网上查不到停止regionservers的必要性,以及这个脚本存在bug的证据,但是这样改经过测试是没有问题的):
"$bin"/hbase-daemons.sh --config "${HBASE_CONF_DIR}" --hosts "${HBASE_REGIONSERVERS}" stop regionserver
这个命令需要加在stop master之前。至于不加入这个停止regionservers的命令是否可行,在未来我会进一步测试。
通过以上修改,出现两个127.0.0.1的Regionserver的问题,以及Hbase重启就挂的问题得到彻底解决!
Hbase重启之后就无法启动的问题解决之后的反思:
从这次问题解决中吸取如下教训:
在配置分布式系统的时候,一定要注意各个机器之间配置的统一性,包括主机名(hosts文件)、用户名、Hadoop/Hbase各种配置文件等,对于不一致的情况,一定要特别仔细的检查,然后统一起来。已经不止一次在这方面吃亏了,希望大家切记!!!!
转自:http://www.wangzhongyuan.com/archives/788.html
在重新启动HBase服务的时候可能会出现如下的错误:
INFO ipc.HbaseRPC: Server at /227.23.56.100:60020 could not be reached after 1 tries, giving up.
出现这个错误的原因可能会有很多,比如各个配置文件中的地址不一致等,但我这里给出的一个可能原因是端口号被其他某一进程占用,或者还是HBase进程使用着,但此服务(或说此端口)已经不再可用,解决的方式为:通过此端口查找到对应的进程,然后杀死对应的进程,再重启HBase服务,你会发现上面出现的错误将消失,服务启动正常。
具体步骤为:
1、 lsof -i:60020 2、 kill -9 PID(进程ID) 3、 重启HBase服务。
FAILED: Error in metadata: MetaException(message:org.apache.hadoop.hbase.MasterNotRunningExceptio
n: dfsname1.cptrue.com:60000
最近在做数据挖掘方面的事情,需要hive+hbase表,但是使用hive链接hbase现有的数据库时,总是抛异常。
FAILED: Error in metadata: MetaException(message:org.apache.hadoop.hbase.MasterNotRunningException: dfsname1.cptrue.com:60000
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getMaster(HConnectionManager.java:394)
at org.apache.hadoop.hbase.client.HBaseAdmin.<init>(HBaseAdmin.java:83)
at org.apache.hadoop.hive.hbase.HBaseStorageHandler.getHBaseAdmin(HBaseStorageHandler.java:74)
………………………………
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask
下面是我的hiveql语句
hive> create EXTERNAL table hbase_table_log(key string, label bigint) stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
> with SERDEPROPERTIES ("hbase.columns.mapping"=":key, b:label")
> TBLPROPERTIES("hbase.table.name" = "log");
解决方案:这个问题基本就是hive+hbase版本的问题,你需要将你所使用的hbase的jar包拷贝到hive的lib目录下进行替换,这还不算结束,你需要将hbase-site.xml拷贝到conf目录下面。在不重启hive的情况下,重新建立external table,恭喜,运行成功!!!
这里需要注意的地方是with下面的mapping,它对应的值":key,b:label",不能出现空格,否则它会告诉你
FAILED: Error in metadata: MetaException(message:Column Family b is not defined in hbase table log)
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask
希望大家日后遇到这个问题的时候,可以顺利解决!
FAILED: Error in metadata: MetaException(message:org.apache.hadoop.hbase.MasterNotRunningException: CNC-JN-R-541:60000
出现这个错误的原因是我引入的hbase包和hive自带的hive包冲突,删除hive/lib下的 hbase-0.89.0-SNAPSHOT.jar, OK了。
当使用hive相关管理已经存在的hbase 多列table时,出现上面错误,而且列族“department ”的确存在,最终发现原因是:在hive中使用CREATE EXTERNAL TABLE 创建表的时候,"hbase.columns.mapping"的值中不能包含空格
解决方法:报错上说org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 15 actions: NotServingRegionException: 15 times, servers with issues: rhel6-15:60020,我把rhel6-15的regionserver进程杀掉在重启,在把这台机子上的regionserver进程杀掉在重启,问题解决!!!(记得做了一点是把所有机器regionserver进程杀掉,Hmaster也杀掉,然后重启hbase用./hbase-start.sh),验证一点就是如果这台regionserver不起的话往这台机子上的数据会很小,几乎没有!!在所有regionserver上发现root和meta表是分离到不同的regionsever上的
来自: http://hi.baidu.com/xinfeng999/blog/item/56cf00fa4c46f7929f51460b.html