最近比较背,踩了很多坑,小记一下:
修改了/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中查找它。