本地模式与StormSubmitter的对比
现在,已经使用一个名为LocalCluster的工具在本地计算机上运行Topology。在计算机上运行Storm基础设施,可以很容易地运行与调试不同的Topology。但如果你想要提交你的Topology到运行中的Storm集群呢?Storm的一个有趣特性是,它很容易发送你的Topology去运行在一个真正的集群中。你需要做的是将LocalCluster改为StormSubmitter,实现submitTopology方法,submitTopology方法负责发送Topology到集群。
可以在下面的代码中看到变化:
- // LocalCluster cluster = new LocalCluster();
- // cluster.submitTopology("Count-Word-Topology-With-Refresh-Cache", conf,
- builder.createTopology());
- StormSubmitter.submitTopology("Count-Word-Topology-With-Refresh-Cache", conf,
- builder.createTopology());
- // Thread.sleep(1000);
- // cluster.shutdown();
当使用StormSubmitter时,不能在代码中控制集群,这和LocalCluster是不一样的。
接下来,需要打包源代码到一个jar文件中。当运行Storm客户端命令提交Topology时,会发送该jar文件。如果你使用Maven,唯一需要做的就是到源代码文件夹下运行以下命令:
- mvn package
一旦生成了jar文件,就可以使用storm jar命令来提交Topology。语法如下:
- Storm jar allmycode.jar org.me.MyTopology arg1 arg2 arg3
在这个例子中,在Topology源代码项目文件夹下运行如下命令:
- storm jar target/Topologies-0.0.1-SNAPSHOT.jar countword.TopologyMain src/main/resources/words.txt
使用完这些命令,就会提交Topology到集群中。
为了停止或者杀死Storm,可以运行如下命令:
- storm kill Count-Word-Topology-With-Refresh-Cache
Topology的名字必须具有唯一性。
本地模式(Local mode)
本地模式在进程中模拟了一个Storm集群,用于开发和测试Topology。在本地模式下运行Topology类似于在集群上运行Topology。
只需使用LocalCluster类就可以创建一个进程内的集群,例如:
- import backtype.storm.LocalCluster;
- LocalCluster cluster = new LocalCluster();
然后,可以使用LocalCluster对象的submitTopology方法来提交Topology。就像在StormSubmitter中相应的方法一样,submitTopology方法需要一个名字、一个Topology配置和Topology对象。然后,你可以使用killTopology方法,将Topology名称作为参数,杀死一个Topology。
关闭一个本地集群,只需要简单地调用:
- cluster.shutdown();
1. 常见的本地模式的配置
acktype.storm.Config类用来配置Storm,它的继承关系如下:
- java.lang.Object
- └java.util.AbstractMap<K,V>
- └java.util.HashMap<java.lang.String,java.lang.Object>
- └backtype.storm.Config
- All Implemented Interfaces:
- java.io.Serializable, java.lang.Cloneable, java.util.Map<java.lang.String,
- java.lang.Object>
2. Config.TOPOLOGY_MAX_TASK_PARALLELISM
这个配置项是组件产生线程数量的上限。通常生产环境的拓扑并行度很大(数以百计的线程),可以尝试在本地模式下测试拓扑,找出不合理负荷的地方。这个配置项使你可以很容易地控制并行度。
3. Config.TOPOLOGY_DEBUG
当设置为true时,每次从Spout或者Bolt发送元组,Storm都会写进日志,这对于调试程序是非常有用的。
相关推荐
- **本地模式**:开发者可以在本地机器上运行拓扑进行测试,Java SDK提供`LocalCluster`类实现这一功能。 - **分布式模式**:通过`StormSubmitter`将拓扑部署到远程的Storm集群上。 5. **数据流模型** - Storm ...
6. **本地模式运行**:如何在本地模式下运行Storm拓扑,使用`StormSubmitter`类的本地模式进行调试。 7. **集群部署**:理解如何将拓扑提交到远程的Storm集群,使用`StormSubmitter`类的非本地模式。 8. **容错...
6. 测试与调试:在开发过程中,可以使用Storm的本地模式(LocalCluster)进行测试,这将模拟真实的集群环境,但所有处理都在本地单机上进行。 总的来说,"storm之WordCount示例Java代码"帮助我们理解Storm的基本...
**主类**:编写一个主类,用来实例化 Topology,并提交给 Storm 集群或本地模式进行执行。 **实践**:运行 Topology 并观察输出结果,了解数据是如何从 Spout 流向 Bolt 的。 **结论**:通过本章的学习,我们了解...
集群可以是本地模式(仅用于测试),也可以是分布式模式。 3. **启动和监控**:一旦拓扑提交,Storm会开始执行数据处理任务。可以通过Storm UI来监控拓扑的运行状态,包括任务执行情况、错误信息等。 4. **动态...
在本地模式下,你可以使用`LocalCluster`来运行拓扑,以便在开发过程中快速测试。当准备好部署到生产环境时,可以使用`StormSubmitter`提交到实际的Storm集群。 学习Storm的关键在于理解其核心概念,如拓扑、Spouts...
4. **本地模式测试**:在实际部署之前,你可以使用Storm的本地模式进行测试,这样可以在本地单机环境中模拟整个集群的行为,无需实际集群环境。 5. **JDK1.7特性**:由于项目基于JDK1.7,了解这一版本的特性,如try...
- 调试 Storm 应用通常涉及日志分析和本地模式运行。你需要知道如何使用 `LocalCluster` 和 `LocalDRPC` 对拓扑进行本地测试。 6. **监控与优化**: - Storm 提供了 Metrics API,可以收集各种性能指标。了解如何...
2. **LocalCluster**:本地测试环境,可以在本地模拟Storm集群运行Topology,方便调试。 四、容错机制 1. **Acknowledgement**:当Bolt成功处理一个Tuple后,会发送一个确认消息,如果处理失败,则会回溯到上游...
JStorm支持动态调整Topology、动态扩缩容、Drainer模式(用于批量处理)、Trident API(支持复杂的状态计算)等高级特性。这些特性使得JStorm在应对各种实时计算场景时更具灵活性。 通过理解和熟练运用上述API,...
- **本地模式测试**: 在本地机器上模拟 Storm 集群,用于快速开发和调试。 - **实时数据分析**: 探索如何使用 Storm 处理实时数据,进行实时统计、聚合和过滤。 通过学习 Udacity 的课程,你将掌握如何利用 Apache ...
在Java程序中,我们还需要设置拓扑参数,如worker数量、task数量等,然后使用`StormSubmitter`提交拓扑到本地或远程Storm集群。 ```java Config conf = new Config(); conf.setNumWorkers(3); // 设置worker数量 /...
编写Topology代码,创建Spout和Bolt,定义Stream Grouping,然后使用`LocalCluster`进行本地测试,验证无误后,使用`StormSubmitter`提交到远程集群。 **5. 简单示例** 以下是一个简单的WordCount Topology示例: ...
例如,使用TopologyBuilder类来构建Topology,配置执行的任务数(Number of Workers),并使用StormSubmitter类提交Topology到Storm集群上运行。 在Storm的开发中,需要特别注意数据分区和任务分配策略。由于Storm...
这可以通过`StormSubmitter`类完成,提供topology的定义、配置以及集群的连接信息。 8. **监控与故障恢复**:由于Storm的容错机制,如果某个worker节点失败,其任务会被重新分配到其他节点,确保数据处理的连续性。...
5. **提交拓扑**:构建好拓扑后,使用`StormSubmitter`提交到Storm集群。记得确保集群配置正确,并且Kafka和Storm之间的版本兼容。 在压缩包中的"Kafka0.8Storm0.9.1Optr"可能是针对Kafka 0.8和Storm 0.9.1的一个...
4. **提交topology**:使用`StormSubmitter`类的`submitTopology`方法将打包好的JAR和配置提交到Storm集群。这个方法需要提供topology的名字、配置以及JAR文件中的主类名。提交后,Storm集群会负责调度和管理...
这涉及设置拓扑名称、配置参数,以及使用 `StormSubmitter` 将拓扑提交到集群。 5. **运行环境**:为了运行这个示例,你需要在本地或远程集群上安装和配置 Storm。对于本地测试,可以使用 `LocalCluster` 类,而在...
StormSubmitter.submitTopology("my-topology", conf, builder.createTopology()); ``` #### 五、Storm性能优化 1. **并行度调整**:通过增加Spout和Bolt的并行度来提高处理能力。 2. **数据分发策略**:合理选择...
- **提交Topology**:通过Java客户端,你可以使用`StormSubmitter`类提交Topology到Storm集群。提交时需指定Topology名称、配置和已构建的Topology对象。 - **监控与管理**:Java客户端还可以用于监控Topology的...