Strom配置说明
在进群生产环境下运行Topology和在本地模式下运行非常相似。下面是步骤:
1、定义Topology(如果使用Java开发语言,则使用TopologyBuilder来创建)
2、使用StormSubmitter向集群提交Topology。StormSubmitter有三个参数,Topology的名字,Topology的配置,和Topology本身。下面是例子:
Config conf = new Config();
conf.setNumWorkers(20);
conf.setMaxSpoutPending(5000);
StormSubmitter.submitTopology("mytopology", conf, topology);
3、将你的代码和你代码所依赖的jar包打包成一个jar包(Storm的jar包除外,Storm的jar包会被添加到worker节点的classpath路径)
如果你使用maven,插件Maven Assembly Plugin会帮你打包,只需将下面的代码添加到你的pom.xml中:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>com.path.to.main.Class</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
然后运行mvn assembly:assembly命令来获取有效的jar包。确认你的jar包中没包含Storm的jar包,因为的classpath中已经存在。
4、使用Storm客户端将Topology提交到集群,指定你jar包的路径、名称河所有的参数然后运行:
storm jar path/to/allmycode.jar org.me.MyTopology arg1 arg2 arg3
storm jar命令会提交jar包给集群并且使用StormSubmitter类和有效地集群对话。在上面的示例中,在提交jar包后storm jar会使用"arg1","arg2","arg3"三个参数调用org.me.MyTopology的主方法.
你可以阅读设置Storm开发环境一文来查看如何使用storm客户端来和Storm进群对话。
常用的设置
每个Topology都有很多不同的配置。点击此处查看Topology的所有设置。带“TOPOLOGY”前缀的设置(其他的是集群的设置,不能被覆盖)可以被特定的Topology配置覆盖。下面是一些常用的Topology设置:
1、Config.TOPOLOGY_WORKERS
这个参数设置设置了使用了多少个工作进程去执行Topology。例如,如果你将此参数设置为25,就会有25个Java进程在集群中执行所有任务。如果在Topology中有150个并行执行的组件,那么每个工作进程会以6个线程的方式执行个任务。
2、Config.TOPOLOGY_ACKER_EXECUTORS
这个参数设置当Spout元组被完全处理后,追踪和探测元组树的执行进程的数量。Acker是Storm的一部分,你可以阅读Guaranteeing message processing一文来获取更多关于Acker的信息。如果不设置此参数,或者将此参数设置为空,Storm会将此参数设置为Topology指定的运行工作节点的数量。如果将这个参数设置为0,Storm会在Spout发出元组后立刻返回成功信息,这将影响可靠性。
// storm配置
Config stormConf = new Config();
stormConf.TOPOLOGY_ACKER_EXECUTORS = 0;//关闭
3、Config.TOPOLOGY_MAX_SPOUT_PENDING
此参数设置了在单一一个Spout任务中一次可以存留的最大元组的数量(没有返回成功或者失败消息的元组)。强烈建议设置此参数防止队列溢出。
4、Config.TOPOLOGY_MESSAGE_TIMEOUT_SECS
这个参数设置了Spout元组被成功处理的最大超时时间。默认是30s,这对大多数的Topology来说已经足够了。阅读Guaranteeing message processing一文了解更多Storm可靠性的知识。
5、Config.TOPOLOGY_SERIALIZATIONS
你可以使用这个参数来注册更多的序列化器,以便在元组中使用自定义类型。
杀死一个Topology
要杀死一个Topology图谱,只需简单的运行:
storm kill {stormname}
将提交Topology时设置的名字传给 storm kill。
Storm不会立刻杀死Topology。它会使所有的Spout失效并且确认他们不会再发射任何元组。Storm会在摧毁所有的工作节点之前等待Config.TOPOLOGY_MESSAGE_TIMEOUT_SECS参数所设置的秒数,这给Topology足够的时间来处理完所有的元组。
更新运行中的Topology
要更新运行中的Topology,唯一的操作是杀掉当前的Topology然后重新提交一个新的Topology。一个计划中的特性是实现storm swap命令来用一个新的Topology替换运行中的Topology,保证最小的故障时间同时使所有的旧Topology不再处理元组。
监控Topology
监控Topology的最好方法是使用Storm UI。Storm UI提供了运行任务中遇到的错误,细粒度的吞吐量情况以及每个Topology中的每个组件的表现。你也可以查看集群中工作节点的日志。
Strom配置说明的更多相关文章
- NHibernate之映射文件配置说明
NHibernate之映射文件配置说明 1. hibernate-mapping 这个元素包括以下可选的属性.schema属性,指明了这个映射所引用的表所在的schema名称.假若指定了这个属性, 表 ...
- WCF服务器证书配置说明-没有能够进行密钥交换的私钥,或者进程可能没有访问私钥的权限
WCF服务器证书配置说明 1.创建证书: makecert.exe -sr LocalMachine -ss My -a sha1 -n CN=XXX -sky exchange -pe 说明: -s ...
- strom的使用01
1.strom的安装和测试 1.1 搭建zookeeper集群 参考hadoop2.0初识1.3中的1.4配置zookeeper集群和自动故障转移 1.2 安装storm依赖的软件 sudo yum ...
- log4net一些配置说明
<configuration> <configSections> <section name="log4net" type="System. ...
- maven -- 学习笔记(二)之setting.xml配置说明(备忘)
setting.xml配置说明,learn from:http://pengqb.javaeye.com,http://blog.csdn.net/mypop/article/details/6146 ...
- Atitit.mybatis的测试 以及spring与mybatis在本项目中的集成配置说明
Atitit.mybatis的测试 以及spring与mybatis在本项目中的集成配置说明 1.1. Mybatis invoke1 1.2. Spring的数据源配置2 1.3. Mybatis ...
- syslog-ng 学习心得与配置说明
配置说明syslog-ng的主配置文件存放在:/etc/syslog-ng/syslog-ng.conf 一.基础 系统自带版本: 引用 # rpm -qa|grep syslog-ng syslog ...
- keepalived工作原理和配置说明 腾讯云VPC内通过keepalived搭建高可用主备集群
keepalived工作原理和配置说明 腾讯云VPC内通过keepalived搭建高可用主备集群 内网路由都用mac地址 一个mac地址绑定多个ip一个网卡只能一个mac地址,而且mac地址无法改,但 ...
- [Asp.net]Uploadify所有配置说明,常见bug问题分析
引言 之前写过一篇使用swfupload上传图片的文章:周末大放送网站图片上传,水印,预览,截图,这里分析一下,当时使用uploadify上传,无法获取上传后,图片路径的问题.当时没有测试没有成功,一 ...
随机推荐
- Android 适配器教程 (六)
我们的适配器学习已经接近尾声了.尽管这不是一个大问题,可是确实是值得学习的一块知识,回忆一下之前五讲的知识.我们已经学到了非常多东西了. 在之前五讲中.我们已经由浅入深的认识了适配器,从最简单的Lis ...
- Odoo车辆管理
odoo车辆管理用于管理公司用车,可以记录以下信息 车辆 车辆的服务合同 车辆的里程 车辆的服务记录 车辆的成本 使用之前,先要进行基本设置 基础设置 维护车辆型号 即维护车辆 ...
- mysql的安装、C++訪问mysql数据库、编码设置问题
一.mysql的安装.这个相对简单,直接去官网下载mysql安装程序.就能够完毕安装过程,网上有非常多安装教程,这个没什么注意事项. 二.C++訪问mysql.主要是用到mysql定义的头文件,内部定 ...
- 零基础学python-3.7 还有一个程序 python读写文本
今天我们引入另外一个程序,文件的读写 我们先把简单的程序代码贴上.然后通过我们多次的改进.希望最后可以变成一个简单的文本编辑器 以下是我们最简单的代码: 'crudfile--读写文件' def re ...
- POCO类
我认为POCO(简单传统CLR对象)重点应该是简单,不跟其他不相关的类进行关联关系或不相关的属性.<NHibernate 4 Beginner Guid>这本书有提到,应该是满足下面三个条 ...
- [Android5 系列—] 1. 构建一个简单的用户界面
前言 安卓应用的用户界面是构建在View 和ViewGroup 这两个物件的层级之上的. View 就是一般的UI组件.像button,输入框等. viewGroup 是一些不可见的view的容器,用 ...
- Hnu 11187 Emoticons :-) (ac自己主动机+贪心)
题目大意: 破坏文本串.使之没有没有出现表情.破坏就是用空格替换.问最少须要破坏多少个字符. 思路分析: 初看跟Hdu 2457 没什么差别,事实上Hdu2457是要求将字符替换成ACGT,而这个仅仅 ...
- SWIM接口及STM8烧录过程
1. 硬件连接 SWIM接口只需要一根传输线,即可完成双向的传输.传输过程,都是由主控制端(host)发起,设备端然后做出反应.host端需要在一个总线上实现读和写,那就是说必须要同时接一个输出IO和 ...
- kubernetes之故障现场二,节点名称冲突
系列目录 问题描述:测试环境由于异常断电导致服务器重启一后,有一个节点的状态一直是NotReady.通过journalctl -f -u kubelet没有错误日志输出.通过tail /var/log ...
- redis事务和乐观锁
1 MULTI/EXEC 执行本事务. MULTI set foo bar get foo set foo hello EXEC 在EXEC执行前,三条命令都放入队列中,然后EXEC触发执行.没有回滚 ...