最近踩的一些坑

踩坑记:Storm、Zookeeper故障排除
本文记录了作者在使用Storm和Zookeeper过程中遇到的问题及解决办法,包括因修改profile文件导致无法登录系统、Zookeeper在磁盘爆满后无法恢复以及提交Storm topology时遇到的错误。

最近比较背,踩了很多坑,小记一下:

修改了/etc/profile文件导致登陆不了机器

前不久在机器上安装部署storm时在/etc/profile文件末尾追加了导出JAVA_HOME的一些语句:

export JAVA_HOME=...
export PATH=...

结果机器重启之后就登陆不上了,密码输对按回车之后又回到登陆界面,无限循环。然而使用ctrl+alt+(F1-F6)使用命令行模式却能登陆,网上查了一些资料,将/etc/profile文件中新增的语句删除之后再重启就OK了,真是莫名其妙,不明白为什么,希望大神赐教为什么会如此!

机器磁盘爆满zookeeper挂掉之后不能恢复

由于测试需要,我往测试机器上的kafka打了很多数据,一不小心将磁盘打满了,结果机器上的zookeeper挂掉了…

于是我将磁盘清理了一下,再重启zookeeper,发现恢复不了了,一直报EOFException错误:

 ERROR [main:ZooKeeperServerMain@63] - Unexpected exception, exiting abnormally
java.io.EOFException
at java.io.DataInputStream.readInt(DataInputStream.java:375)
at org.apache.jute.BinaryInputArchive.readInt(BinaryInputArchive.java:63)
at org.apache.zookeeper.server.persistence.FileHeader.deserialize(FileHeader.java:64)
at org.apache.zookeeper.server.persistence.FileTxnLog$FileTxnIterator.inStreamCreated(FileTxnLog.java:558)
at org.apache.zookeeper.server.persistence.FileTxnLog$FileTxnIterator.createInputArchive(FileTxnLog.java:577)
at org.apache.zookeeper.server.persistence.FileTxnLog$FileTxnIterator.goToNextLog(FileTxnLog.java:543)
at org.apache.zookeeper.server.persistence.FileTxnLog$FileTxnIterator.next(FileTxnLog.java:625)
at org.apache.zookeeper.server.persistence.FileTxnLog$FileTxnIterator.init(FileTxnLog.java:529)
at org.apache.zookeeper.server.persistence.FileTxnLog$FileTxnIterator.<init>(FileTxnLog.java:504)
at org.apache.zookeeper.server.persistence.FileTxnLog.read(FileTxnLog.java:341)
at org.apache.zookeeper.server.persistence.FileTxnSnapLog.restore(FileTxnSnapLog.java:130)
at org.apache.zookeeper.server.ZKDatabase.loadDataBase(ZKDatabase.java:223)
at org.apache.zookeeper.server.ZooKeeperServer.loadData(ZooKeeperServer.java:259)
at org.apache.zookeeper.server.ZooKeeperServer.startdata(ZooKeeperServer.java:386)
at org.apache.zookeeper.server.NIOServerCnxnFactory.startup(NIOServerCnxnFactory.java:138)
at org.apache.zookeeper.server.ZooKeeperServerMain.runFromConfig(ZooKeeperServerMain.java:112)
at org.apache.zookeeper.server.ZooKeeperServerMain.initializeAndRun(ZooKeeperServerMain.java:86)
at org.apache.zookeeper.server.ZooKeeperServerMain.main(ZooKeeperServerMain.java:52)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:116)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:78)

原因是因为上一次zk故障时时因为磁盘爆满,所以有些数据就不能完整地写入快照文件,所以当再次恢复zk时,因为有些文件是不完整的,就导致解析文件失败,所以报EOFException异常。

解决方案是将zk数据删除,再重启,好在我在数据之前有备份,要不然还真不知道该怎么恢复之前的老数据。

提交storm topology时报Storm Found multiple defaults.yaml resources错

往自己搭建的storm测试集群中提交topology时,报Storm Found multiple defaults.yaml resources这样的错误。

原因是我的topology的程序在打包的时候将storm-core也一并打入jar包了,并且因为storm集群本身也会导入自己的lib目录下的jar包(其中就包含了storm-core),而storm-core包中含有defaults.yaml文件,于是就会有两个defaults.yaml配置文件,于是报错。

解决方案是将程序中的storm-core的pom依赖的生命周期设置为provided,这样子在打包的时候就不会将storm-core打入jar中了。

顺便说一下,在POM 4中,dependency中引入了scope,它主要管理依赖的部署。目前scope可以使用5个值:

  • compile,缺省值,适用于所有阶段,会随着项目一起发布。
  • provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。
  • runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。
  • test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。
  • system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值