【问题标题】:Configuration of workers in a storm cluster风暴集群中工作人员的配置
【发布时间】:2014-01-03 23:31:18
【问题描述】:

我有一个关于工作进程配置的问题。

我已经了解工作进程在工作节点(这是一台机器)内运行。我想知道的是所有工作进程是否共享同一个 JVM,或者每个工作进程是否都有自己的 JVM 实例?如果后者是真的,那么我想应该设置每个进程必须使用多少内存!那么这个配置应该在哪里进行呢?

【问题讨论】:

    标签: apache-storm


    【解决方案1】:

    每个 Storm 工作进程都在自己的 JVM 中运行。 可以在 conf/storm.yaml 配置文件中为每个 worker 分配内存。 例如:添加/编辑以下参数,为每个工作进程分配 1GB RAM:

    worker.childopts: "-Xmx1024m"
    

    这会覆盖您在机器上通常所做的任何 JVM RAM 设置(例如使用 JAVA_TOOL_OPTIONS)

    更多风暴配置请参考: Storm Configurations

    【讨论】:

      【解决方案2】:

      在storm.yaml中配置worker.childopts = "-Xmx4048m"。

      每个工作进程都会从 RAM 中获得那么多内存(如果可用)。

      【讨论】:

        【解决方案3】:
        • 工作进程执行拓扑的子集,并在其自己的 JVM 中运行。
        • 工作进程属于特定拓扑,可以为该拓扑的一个或多个组件(spout 或 bolt)运行一个或多个执行器。
        • 执行程序是由工作进程生成并在工作进程的 JVM 中运行的线程。
        • executor 可以为同一个组件(spout 或 bolt)运行一个或多个任务。
        • 执行程序始终有一个线程用于其所有任务,这意味着任务在执行程序上连续运行。

        所以可以说所有的工作进程都将运行在同一个JVM上,只属于一个特定的工作节点。

        【讨论】:

          【解决方案4】:

          每个工作节点在自己的 JVM 上独立运行。但是他们可以为一种或多种拓扑运行一个或多个工作进程。

          如果后者是真的,那么我想应该设置每个进程必须使用多少内存!那么这个配置应该在哪里进行呢?

          如果您打算设置 JVM 参数,请关注讨论 here

          【讨论】:

            猜你喜欢
            • 2016-07-08
            • 2015-06-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-04-17
            • 1970-01-01
            • 2017-01-23
            相关资源
            最近更新 更多