Storm提交topology小记

Storm提交topology小记

//20220314
写在前面:今天学习storm的时候,把写完的storm代码打包成jar上传到storm集群中运行,出现了一系列问题,在此记录一下

出现的问题:

  1. Detected both log4j-over-slf4j.jar AND bound slf4j-log4j12.jar on the class path, preempting StackOverflowError. See also http://www.slf4j.org/codes.html#log4jDelegationLoop for more details.错误
  2. Caused by: java.lang.ClassNotFoundException: org.apache.storm.topology.IRichSpout错误
  3. Must submit topologies using the 'storm' client script so that StormSubmitter knows which jar to upload.错误
  4. Caused by: java.io.IOException: Found multiple defaults.yaml resources. You're probably bundling the Storm jars with your topology jar. [jar:file:/home/hadoop/software/storm/apache-storm-2.3.0/lib-worker/storm-client-2.3.0.jar!/defaults.yaml, jar:file:/home/hadoop/Hadoop.jar!/defaults.yaml]错误

解决方法:

  1. 问题在于引用的jar包中有两个关于log4j的包,删除其中一个即可,idea中在项目libary中删除即可,删除之后记得重启项目
  2. 问题在于storm-core库依赖引用时<scope>provided</scope>标签未删除或注释,但是这里是错误操作,因该是使用了java -jar命令才会报的错,正经storm集群提交时是需要这个标签的,使用java执行不能正确运行,如果非要使用java命令运行,就把这个去掉就行,不过会报出上述问题3所示的错误
  3. 问题在于使用java命令执行jar包,但是提交到storm集群的任务是需要使用storm中的jar命令执行的,所以报此错误时使用storm jar [jar包名] [主类名]即可
  4. 问题来自于未使用<scope>provided</scope>标签,提交到集群时,需要使用此标签

  • 提交集群之后,如果程序有错误,不会报出,需要查看日志文件,比如我设置的目的目录没有创建,那集群不会显式报错,智慧记录到日志中,所以,如果集群没有预期效果,记得检查日志文件
  • 另,提交到集群成功截图如下:
  • 关闭集群任务有两种方式
    1. 使用命令storm kill [任务名]
    2. 从ui界面中直接选中相应任务,点击kill键即可杀死任务
  • 任务需要提交到执行了nimbus进程的机器上

以上,
希望对后来者有所帮助
/抱拳

posted @   醉生梦死_0423  阅读(115)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
历史上的今天:
2020-03-14 牛客网_剑指offer题集——平衡二叉树(java实现)
2019-03-14 算法基础_递归_给定一个数字n,打印出所有的划分等式
2019-03-14 算法基础_递归_给定m个A,n个B,一共有多少种排列
2019-03-14 算法基础_递归_求杨辉三角第m行第n个数字
点击右上角即可分享
微信分享提示