zoukankan      html  css  js  c++  java
  • 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中的每个组件的表现。你也可以查看集群中工作节点的日志。

  • 相关阅读:
    JS检测浏览器Adobe Reader插件
    Java Filter防止sql注入攻击
    log4j的基本配置参数
    Log4j.properties配置详解
    使用Spring进行统一日志管理 + 统一异常管理
    springMVC获取request和response
    深入浅出Mybatis-分页
    PROPAGATION_REQUIRED事务管理
    Java String类型数据的字节长度
    构建高并发高可用的电商平台架构实践
  • 原文地址:https://www.cnblogs.com/catkins/p/5249119.html
Copyright © 2011-2022 走看看