博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
storm(3)-任务提交
阅读量:6474 次
发布时间:2019-06-23

本文共 2063 字,大约阅读时间需要 6 分钟。

hot3.png

storm job的提交分为本地模式和远程模式

下面我们先从代码入手,分析一下两者的提交

1.本地模式

c20aecb2ccb28f3c005386b014ad6f94f21.jpg

2.远程模式提交

9d0e83e8e6a7dd9fb408579a07676b6d5bc.jpg

通过上面两种代码的分析发现本地模式和远程模式还是有着很大的区别

但是如果我们刨根问底会发现其实最终都是一致的

e1f90e3cb5900c1526fb5173175616c60e0.jpg

本地模式其实其实使用的是127.0.0.1,如果在storm集群上,借助storm jar则使用的是storm.yaml中的配置

下面我们讲一下通过java的Rumtime exec的方式进行storm jar的提交

public void submitTopologyToMachine(String nimbusAddress, String fileName, List
mainArgs, String mainClass, String jarFile){ StringBuffer args = new StringBuffer(); args.append(jarFile).append(" "); for (String arg: mainArgs){ args.append(arg).append(" "); } args.append("-Dstorm.options=nimbus.host=").append(nimbusAddress).append(" "); args.append(mainClass); if (fileName != null){ args.append(" ").append(fileName); } InputStream is = null; try { Runtime rt = Runtime.getRuntime(); String command = "/home/apps/platform/storm/bin/storm/bin/storm jar "+args.toString(); LOG.info("submit topology command is {}", command); String[] commandStr = {"/bin/sh","-c",command}; Process proc = rt.exec(commandStr); if (LOG.isDebugEnabled()) { is = proc.getErrorStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(is)); String line; while ((line = reader.readLine()) != null) { LOG.debug("submit topology result line {}", line); } } int exitVal = proc.waitFor(); LOG.info("submit topology result is {}", exitVal==0? "success" : "failure"); } catch (IOException e) { LOG.error("submit job is exception {}", e); } catch (InterruptedException e) { LOG.error("submit job is exception {}", e); }finally { try { if (is != null){ is.close(); } } catch (IOException e) { } } }

这是利用Runtime.getRuntime().exec()来执行,但是只能在linux上执行,而且还需要提前放置一份storm的安装包

转载于:https://my.oschina.net/u/1262062/blog/1921162

你可能感兴趣的文章
Activity竟然有两个onCreate方法,可别用错了
查看>>
Linux经常使用命令(十六) - whereis
查看>>
插件编译 版本问题
查看>>
android中TextView的阴影设置
查看>>
core dump相关
查看>>
Linux五种IO模型
查看>>
Bootstrap技术: 模式对话框的使用
查看>>
小知识,用myeclipes找jar
查看>>
in-list expansion
查看>>
设计原则(四):接口隔离原则
查看>>
基于react的滑动图片验证码组件
查看>>
iOS快速清除全部的消息推送
查看>>
java单例模式深度解析
查看>>
【学习笔记】阿里云Centos7.4下配置Nginx
查看>>
VuePress手把手一小時快速踩坑
查看>>
dnsmasq安装使用和体验
查看>>
学习constructor和instanceof的区别
查看>>
Vijos P1881 闪烁的星星
查看>>
ABP理论学习之领域服务
查看>>
Qt 控制watchdog app hacking
查看>>