设为首页 收藏本站
查看: 881|回复: 0

[经验分享] hadoop,hbase,zookeeper错误日志及部分解决办法(1)

[复制链接]

尚未签到

发表于 2016-12-11 06:35:29 | 显示全部楼层 |阅读模式
  没有全部遇到过。也没有经过测试。收集至此,以备以后遇到问题作为参考之用。
  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)
        at org.apache.hadoop.hdfs.DFSClient.createRPCNamenode(DFSClient.java:113)
        at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:215)
        at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:177)  ……………………………………
  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
Address Start Code Load
127.0.0.1:60030 1263383321075 requests=0, regions=0, usedHeap=0, maxHeap=0
127.0.0.1:60030 1263383321096 requests=0, regions=0, usedHeap=0, maxHeap=0  ………………………………
  但是,虽然出现了以上的怪现象,但是hbase似乎仍然能够正常工作。只是,当我们打算重启hbase的时候,我们发现了第二个问题:我们尝试运行bin/stop-hbase.sh,之后,又运行启动hbase的脚本:bin/ start-hbase.sh,这一次,当我们访问master页面的时候http://10.37.17.252:60010/master.jsp,出现了如下的错误
HTTP ERROR: 500
Trying to contact region server null for region , row ", but failed after 3 attempts.
Exceptions:
  org.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=1
  at 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.MasterNotRunningExceptio  n: 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了。
FAILED: Error in metadata: MetaException(message:Column Family department is not defined in hbase table hello)
  当使用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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-312409-1-1.html 上篇帖子: Hadoop 使用Combiner提高Map/Reduce程序效率 下篇帖子: Hadoop The Definitive Guide 2nd Edition 读书笔记2
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表