最近踩的一些坑

最近比較背,踩了很多坑,小記一下:

修改了/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中查找它。
發佈了95 篇原創文章 · 獲贊 29 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章