`
m635674608
  • 浏览: 5043643 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

在生产集群上运行topology

 
阅读更多

在生产集群上运行topology跟本地模式差不多。下面是步骤:

1)定义topology(如果是java的话, 用TopologyBuilder)

2) 使用StormSubmitter来把topology提交到集群。StormSubmitter的参数有:topology的名字,topology的配置对象,以及topology本身。

比如:

1
2
3
4
5
Config conf = new Config();
conf.setNumWorkers(20);
conf.setMaxSpoutPending(5000);
StormSubmitter.submitTopology("name",
conf, topology);

3) 创建一个包含你的程序代码以及你代码所依赖的依赖包的jar包(有关storm的jar包不用包括, 这些jar包会在工作节点上自动被添加到classpath里面去)。如果你使用maven, 那么插件:Maven Assembly Plugin可以帮你打包,只要把下面的配置加入你的pom.xml。

01
02
03
04
05
06
07
08
09
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就可以打包了. 再说一下,不用包括storm相关的jar包,它们会自动加到classpath里面。

4)用storm客户端去提交jar包:

1
storm jar allmycode.jar org.me.MyTopology arg1 arg2 arg3

storm jar 会把代码提交到集群并且配置StormSubmitter类以让它和正确的集群进行通信。在这个例子里面,上传jar包之后storm jar命令会调用org.me.MyTopology的main函数,参数是 arg1, arg2, arg3。关于如何配置你的storm客户端去和storm集群进行通信可以看下配置storm开发环境

常见配置

有很多topology级的配置可以设。这里有关于所有配置的清单, 以”TOPOLOGY”打头的配置是topology级别的配置,可以覆盖全局级别的配置。下面是一些比较常见的:

1)Config.TOPOLOGY_WORKERS: 这个设置用多少个工作进程来执行这个topology。比如,如果你把它设置成25, 那么集群里面一共会有25个java进程来执行这个topology的所有task。如果你的这个topology里面所有组件加起来一共有150的并行度,那么每个进程里面会有6个线程(150 / 25 = 6)。

2)Config.TOPOLOGY_ACKERS: 这个配置设置acker线程的数目。Ackers是Storm的可靠性API的一部分,关于storm的可靠性API可以看下:Twitter Storm如何保证消息不丢失

3)Config.TOPOLOGY_MAX_SPOUT_PENDING: 这个设置一个spout task上面最多有多少个没有处理的tuple(没有ack/failed)回复, 我们推荐你设置这个配置,以防止tuple队列爆掉。

4)Config.TOPOLOGY_MESSAGE_TIMEOUT_SECS: 这个配置storm的tuple的超时时间 – 超过这个时间的tuple被认为处理失败了。这个设置的默认设置是30秒,对于大多数的topology都已经足够了。关于storm的可靠性API可以看看Twitter Storm如何保证消息不丢失

5)Config.TOPOLOGY_SERIALIZATIONS: 为了在你的tuple里面使用自定义类型,你可以用这个配置注册自定义serializer。

终止一个topology

要终止一个topology, 执行:

 
1
storm kill {stormname}

其中{stormname}是提交topology给storm集群的时候指定的名字。

storm不会马上终止topology。相反,它会先终止所有的spout,让它们不再发射任何新的tuple, storm会等Config.TOPOLOGY_MESSAGE_TIMEOUT_SECS秒之后才杀掉所有的工作进程。这会给topology足够的时间来完成所有我们执行storm kill命令的时候还没完成的tuple。

更新一个运行中的topology

为了更新一个正在运行的topology, 唯一的选择是杀掉正在运行的topology然后重新提交一个新的。一个计划中的命令是实现一个storm swap命令来运行时更新topology, 并且保证前后两个topology不会同时在运行,同时保证替换所造成的“停机”时间最少。

监控topology

监控topology的最好的方法是使用Storm UI。Storm UI提供有关task里面发生的错误以及topology里面每个组件的吞吐量和性能方面的统计信息。同时你可以看看集群里面工作机器上面的日志。

linux

分享到:
评论

相关推荐

    使用Storm实时处理交通大数据(数据源:kafka,集群管理:zookeeper).zip

    Nimbus负责任务调度和资源分配,而Supervisors则在工作节点上运行topologies。 在压缩包"storm-traffic-master"中,可能包含了以下内容: 1. **源码**:这通常包括定制的Storm spouts和bolts,以及与Kafka和...

    storm统计单词数的demo

    5. **本地运行与集群部署**:Storm提供了本地模式,可以在单机上测试Topology,验证其正确性。一旦调试完毕,可以将其部署到Storm集群上,实现分布式运行。 6. **容错机制**:Storm通过检查点和状态持久化来确保...

    Storm-EPL-Example-2.0.19.zip

    5. 集群部署:虽然示例在本地运行,但也可以了解到如何将Topology部署到生产环境的Storm集群中。 总结起来,"Storm-EPL-Example-2.0.19.zip"不仅是一个示例项目,更是一个学习Storm和EPL的实践平台。通过深入研究和...

    Storm 简单示例

    6. **提交拓扑(Submit Topology)**:当拓扑在本地验证无误后,可以将其提交到集群运行。Storm提供了命令行工具nimbus来提交和管理拓扑。 7. **Zookeeper**:在生产环境中,Storm使用Zookeeper进行集群协调,管理...

    storm1.2.1-helloword

    标题“storm1.2.1-hello...通过这个项目,学习者可以了解如何编写Storm Topology,如何在本地模式下运行测试,以及如何将其部署到生产环境。对于希望深入理解实时数据处理和Apache Storm的人来说,这是一个很好的起点。

    可集群的:准备将elixirerlang节点集群

    在IT行业中,构建可扩展和高可用性的系统是至关重要的,这通常涉及到将服务或应用分布在多个计算节点上,形成一个集群。对于Elixir开发者来说,利用Erlang虚拟机(VM)的分布式特性,可以轻松地实现这一点。标题和...

    storm0.9.0 linux安装包

    5. **部署拓扑**:一旦集群运行起来,你可以使用`bin/storm jar`命令提交你的拓扑到集群。这个命令需要指定包含拓扑的JAR文件路径以及拓扑类名。 6. **监控和管理**:通过Storm UI(默认在本地8080端口运行)可以...

    数据实时分析平台Heron.zip

    在Twitter,Heron作为主要的流媒体系统,运行数以百万计的开发和生产topologies。由于Heron可高效使用资源,在迁移Twitter所有的topologies后,整体硬件减少了3倍,导致Twitter的基础设置效率有了显著的提升。了解...

    Apache+Storm+快速起步.pdf 亲测 好评哦

    无论是在小规模的测试还是在大规模的生产环境中,Storm都显示出其强大的实时数据处理能力。随着数据时代的到来,Storm技术的掌握对于从事大数据实时处理的开发者来说,是非常有价值的技能之一。

    第一个Storm应用

    因为它们都会运行在不同的Jvm或物理机器上,这个模式就是正式的生产模式。 二、写一个HelloWord Storm 我们现在创建这么一个应用,统计文本文件中的单词个数,详细学习过Hadoop的朋友都应该写过。 那么我们需要...

    Getting Started with Storm

    - **远程模式**:适用于生产环境,组件分布在多台机器上。 **HelloWorldStorm 示例**: 1. **验证 Java 安装**:确保 Java 环境已正确安装。 2. **创建工程**:使用 Eclipse 或 IntelliJ IDEA 创建一个新的 Maven ...

    storm入门.pdf

    1. 分布式:它可以在多台机器上分布式执行。 2. 可靠性:能够保证每个消息至少被处理一次。 3. 容错性:当工作节点失败时,任务可以自动重新分配。 4. 实时性:可以对流式数据进行实时处理。 5. 易于扩展:可以灵活...

    stormp配置文件

    5. **Supervisor配置**:Supervisors是运行在各个工作节点上的进程,它们管理着worker进程。`supervisor.slots.ports`定义了每个supervisor节点可以运行的worker数量。 6. **Nimbus配置**:Nimbus是Storm的协调者,...

    HACMP for AIX 原理、设计及实现

    - **故障注入测试** (Fault Injection Testing): 在非生产环境中模拟故障,以验证集群的响应和恢复能力。 #### 2. HACMP群集的设计 ##### 2.1 高可用性设计要点 在设计HACMP集群时,需要考虑以下几个关键因素: ...

    storm0.9-源码包

    - **Cluster 模式**: Storm 可以部署在本地模式进行开发测试,也可以在多机器集群上进行生产部署。 6. **监控与日志** - **UI界面**: Storm 提供了一个 Web UI,展示拓扑状态、性能指标以及错误信息,方便监控和...

    kafka-storm-starter-develop

    6. **运行 Storm Topology**:提交 topology 到本地或集群运行,开始实时处理数据。 7. **监控和调试**:通过 Storm UI 监控 topology 的运行状态,进行必要的性能调优和错误排查。 总之,"kafka-storm-starter-...

    apache-storm-1.0.2.tar.gz

    用户需要配置 Nimbus、Supervisor 及相关服务,并在集群上启动,可以通过修改 conf/storm.yaml 文件来完成。 10. **监控与管理**: Storm 提供了一个基于 Web 的 UI,可以查看 Topologies 的运行状态、节点统计...

    storm1.2.1-helloword可靠消息

    在生产环境中,你需要提交拓扑到Storm集群,由Nimbus分配任务给Supervisors,然后在Worker进程中运行。 6. **容错机制**: Storm的分布式特性提供了容错能力。如果某个Worker进程失败,Supervisor会重新启动它,确保...

Global site tag (gtag.js) - Google Analytics