在进群生产环境下运行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配置说明的更多相关文章

  1. NHibernate之映射文件配置说明

    NHibernate之映射文件配置说明 1. hibernate-mapping 这个元素包括以下可选的属性.schema属性,指明了这个映射所引用的表所在的schema名称.假若指定了这个属性, 表 ...

  2. WCF服务器证书配置说明-没有能够进行密钥交换的私钥,或者进程可能没有访问私钥的权限

    WCF服务器证书配置说明 1.创建证书: makecert.exe -sr LocalMachine -ss My -a sha1 -n CN=XXX -sky exchange -pe 说明: -s ...

  3. strom的使用01

    1.strom的安装和测试 1.1 搭建zookeeper集群 参考hadoop2.0初识1.3中的1.4配置zookeeper集群和自动故障转移 1.2 安装storm依赖的软件 sudo yum ...

  4. log4net一些配置说明

    <configuration> <configSections> <section name="log4net" type="System. ...

  5. maven -- 学习笔记(二)之setting.xml配置说明(备忘)

    setting.xml配置说明,learn from:http://pengqb.javaeye.com,http://blog.csdn.net/mypop/article/details/6146 ...

  6. Atitit.mybatis的测试  以及spring与mybatis在本项目中的集成配置说明

    Atitit.mybatis的测试  以及spring与mybatis在本项目中的集成配置说明 1.1. Mybatis invoke1 1.2. Spring的数据源配置2 1.3. Mybatis ...

  7. syslog-ng 学习心得与配置说明

    配置说明syslog-ng的主配置文件存放在:/etc/syslog-ng/syslog-ng.conf 一.基础 系统自带版本: 引用 # rpm -qa|grep syslog-ng syslog ...

  8. keepalived工作原理和配置说明 腾讯云VPC内通过keepalived搭建高可用主备集群

    keepalived工作原理和配置说明 腾讯云VPC内通过keepalived搭建高可用主备集群 内网路由都用mac地址 一个mac地址绑定多个ip一个网卡只能一个mac地址,而且mac地址无法改,但 ...

  9. [Asp.net]Uploadify所有配置说明,常见bug问题分析

    引言 之前写过一篇使用swfupload上传图片的文章:周末大放送网站图片上传,水印,预览,截图,这里分析一下,当时使用uploadify上传,无法获取上传后,图片路径的问题.当时没有测试没有成功,一 ...

随机推荐

  1. C#向Sql数据库插入空值的控制

    string name = textBox1.Text; int age = Convert.ToInt32(textBox2.Text.Trim()); ? null : (int?)Convert ...

  2. c语言-完全背包问题

    完全背包问题 问题:有N种物品和一个容量为V的背包,每种物品都有无限件可用.第i种物品的费用是c[i],价值是w[i].求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大. 分 ...

  3. 手写AngularJS脏检查机制

    什么是脏检查 View -> Model 浏览器提供有User Event触发事件的API,例如,click,change等 Model -> View 浏览器没有数据监测API. Ang ...

  4. C#中??和?分别是什么意思? 在ASP.NET开发中一些单词的标准缩写 C#SESSION丢失问题的解决办法 在C#中INTERFACE与ABSTRACT CLASS的区别 SQL命令语句小技巧 JQUERY判断CHECKBOX是否选中三种方法 JS中!=、==、!==、===的用法和区别 在对象比较中,对象相等和对象一致分别指的是什么?

    C#中??和?分别是什么意思? 在C#中??和?分别是什么意思? 1. 可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空.例如:string str=null; ...

  5. iOS_12_tableViewCell的删除更新_红楼梦

    终于效果图: Girl.h // // Girl.h // 12_tableView的增删改 // // Created by beyond on 14-7-27. // Copyright (c) ...

  6. python--多种程序分析(2)

    1.文件操作有哪些模式?请简述各模式的作用 r模式只读  w模式只写 a模式只添加   r+可读可写  w+可写可读  a+可读可添加   rb  二进制只读  wb 二进制只写   ab 二进制添加 ...

  7. Kubernetes调度之亲和与反亲和

    系列目录 部署pod时,大多数情况下kubernetes的调度程序能将pod调度到集群中合适的节点上.但有些情况下用户需要对pod调度到哪个节点上施加更多控制,比如将特定pod部署到拥有SSD存储节点 ...

  8. WWDC2014苹果的“软件”发布会

    WWDC 2014 苹果的"软件"发布会 在今年的 6 月 2 日到 6 日,苹果照例举行了一年一次的全球开发者大会(World Wide Developer Conference ...

  9. ASP.NET MVC模式——WebPages

    WebPages 示例 123456<html> <body> <h1>Hello Web Pages</h1> <p>The time i ...

  10. [深入浅出Cocoa]iOS程序性能优化

    本文转载至 http://blog.csdn.net/kesalin/article/details/8762032 [深入浅出Cocoa]iOS程序性能优化 罗朝辉 (http://blog.csd ...