当前位置: 首页 > news >正文

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

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

在进群生产环境下运行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发出元组后立刻返回成功信息,这将影响可靠性。

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

转载于:https://my.oschina.net/u/2347897/blog/603111

相关文章:

  • stringstream读取空格作为分隔符的文件
  • javascript获取当前url中的參数
  • 【C++探索之旅】第一部分第五课:简易计算器
  • HTTP状态码搜集
  • 23333 又是一篇水文章(以下是各种复制来的关于maven转成eclipse项目)
  • SQL Server 2016 查询存储(Query Store)介绍
  • Android 破解之道 (二)
  • 交换两个变量的四种方案(面试题)
  • 【转】共享经济是临时工的增量市场?
  • RecyclerView基础
  • JavaEE Tutorials (8) - Java持久化API介绍
  • 4.4 Routing -- Specifying A Route's Model
  • centos 7 更改网卡名,主机名,虚拟机添加网卡
  • linux运维实战练习-2016年1月19日-2月3日课程作业
  • Oracle 11g必须开启的服务及服务详细介绍
  • 07.Android之多媒体问题
  • Effective Java 笔记(一)
  • java第三方包学习之lombok
  • Less 日常用法
  • Mysql5.6主从复制
  • RxJS: 简单入门
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • - 概述 - 《设计模式(极简c++版)》
  • 机器学习 vs. 深度学习
  • 强力优化Rancher k8s中国区的使用体验
  • 微信小程序:实现悬浮返回和分享按钮
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 赢得Docker挑战最佳实践
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​io --- 处理流的核心工具​
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • (175)FPGA门控时钟技术
  • (MATLAB)第五章-矩阵运算
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (一)VirtualBox安装增强功能
  • (转)大型网站架构演变和知识体系
  • (转)德国人的记事本
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • .NET项目中存在多个web.config文件时的加载顺序
  • @Autowired @Resource @Qualifier的区别
  • @Transaction注解失效的几种场景(附有示例代码)
  • [ C++ ] STL_vector -- 迭代器失效问题
  • [ MSF使用实例 ] 利用永恒之蓝(MS17-010)漏洞导致windows靶机蓝屏并获取靶机权限
  • [ 环境搭建篇 ] 安装 java 环境并配置环境变量(附 JDK1.8 安装包)
  • []常用AT命令解释()
  • [2016.7 Day.4] T1 游戏 [正解:二分图 偏解:奇葩贪心+模拟?(不知如何称呼不过居然比std还快)]
  • [20171113]修改表结构删除列相关问题4.txt
  • [ai笔记4] 将AI工具场景化,应用于生活和工作
  • [bzoj 3124][sdoi 2013 省选] 直径
  • [C#]获取指定文件夹下的所有文件名(递归)