Storm官方文档翻译之在生产环境集群中运行Topology

在进群生产环境下运行Topology和在本地模式下运行非常相似。下面是步骤:

1、定义Topology(如果使用Java开发语言,则使用TopologyBuilder来创建)

2、使用StormSubmitter向集群提交Topology。StormSubmitter有三个参数,Topology的名字,Topology的配置,和Topology本身。下面是例子:

?


1

2

3

4

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中:

?


1

2

3

4

5

6

7

8

9

10

11

12

13

<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包的路径、名称河所有的参数然后运行:

?


1

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发出元组后立刻返回成功信息,这将影响可靠性。

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图谱,只需简单的运行:

?


1

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中的每个组件的表现。你也可以查看集群中工作节点的日志。

时间: 2024-10-12 14:52:55

Storm官方文档翻译之在生产环境集群中运行Topology的相关文章

【转】Twitter Storm: 在生产集群上运行topology

Twitter Storm: 在生产集群上运行topology 发表于 2011 年 10 月 07 日 由 xumingming 作者: xumingming | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明网址: http://xumingming.sinaapp.com/185/twitter-storm-在生产集群上运行topology/ 本文翻译自: https://github.com/nathanmarz/storm/wiki/Running-topologi

storm学习之-在生产集群上运行topology

https://storm.apache.org/documentation/Setting-up-a-Storm-cluster.html -官方文档 http://xumingming.sinaapp.com/185/twitter-storm-在生产集群上运行topology/ --徐明明 http://blog.cheyo.net/84.html   --运行一个

集群中运行Tachyon(译)

集群中运行Tachyon 单机集群 首先下载 Tachyon tar 文件,并且解压: $ wget https://github.com/amplab/tachyon/releases/download/v0.7.1/tachyon-0.7.1-bin.tar.gz $ tar xvfz tachyon-0.7.1-bin.tar.gz 在 tachyon/conf 目录中, 复制tachyon-env.sh.template 为 tachyon-env.sh. 确保JAVA_HOME 指向有

【K8S学习笔记】Part2:获取K8S集群中运行的所有容器镜像

本文将介绍如何使用kubectl列举K8S集群中运行的Pod内的容器镜像. 注意:本文针对K8S的版本号为v1.9,其他版本可能会有少许不同. 0x00 准备工作 需要有一个K8S集群,并且配置好了kubectl命令行工具来与集群通信.如果未准备好集群,那么你可以使用Minikube创建一个K8S集群,或者你也可以使用下面K8S环境二者之一: Katacoda Play with Kubernetes 如果需要查看K8S版本信息,可以输入指令kubectl version. 在本练习中,我们将使

Storm在生产集群上运行Topology

一.步骤1.定义topology,若用java语言,使用TopologyBuilder来定义2.使用StormSubmitter来提交topology到集群中,所需参数需要topology名字,topology的参数配置,topology本身例:Config conf = new Config();conf.setNumWorkers(20);conf.setMaxSpoutPending(5000);StormSubmitter.submitTopology("mytopology"

在kubernetes集群中运行nginx

在完成前面kubernetes数据持久化的学习之后,本节我们开始尝试在k8s集群中部署nginx应用,对于nginx来说,需要持久化的数据主要有两块:1.nginx配置文件和日志文件2.网页文件 一.配置nginx网页文件持久化1.ReplicationController配置文件如下 # cat nginx-rc.yaml apiVersion: v1 kind: ReplicationController metadata: name: nginx-test labels: name: ng

Eclipse中将hadoop项目放在集群中运行

1.加入配置文件到项目源码目录下(src) <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration> 读取配置文件内容,使项目知道向集群提交运行 2.将本项目打包到项目源码目录下(src) 3.在Java代码加入下一句话 Configurati

swarm 生产环境集群安装

规划:manager 192.168.1.72/73/74 consul  192.168.1.72/73/74 leader  192.168.1.74 node    192.168.1.70/71 1.安装discovery 使用consul 第一台(74) docker run --net=host --name=consul progrium/consul -server -bootstrap  -ui-dir=/ui -advertise 192.168.1.74 端口说明: htt

Storm集群中执行的各种组件及其并行

一.Storm中执行的组件 我们知道,Storm的强大之处就是能够非常easy地在集群中横向拓展它的计算能力,它会把整个运算过程切割成多个独立的tasks在集群中进行并行计算.在Storm中,一个task就是执行在集群中的一个Spout或Bolt实例. 为了方便理解Storm怎样并行处理我们分给它的任务,这里我先介绍一下在集群中涉及到Topology的四种组件: Nodes(machines):集群中的节点,就是这些节点一起工作来执行Topology. Workers(JVMs):一个worke