【Stormまとめ-2】StormにおけるTopologyの同時性についての理解

8319 ワード

主なアイデアはstormのプロジェクトページに由来します.https://github.com/nathanmarz/storm/wiki/Understanding-the-parallelism-of-a-Storm-topology
その中には個人的な理解が入っているので、文章をオリジナルにしましたが、実際にはほとんどが人のものです.実はこの文章を翻訳する人もとても多くて、私はいくつか見て、いつも少し回りくどい感じがして、だからいっそ自分でまとめます.目標は,StormにおけるTopologyの許容過程における同時機構を明確に説明することである.もちろん、目標は良いですが、具体的に目標を達成できるかどうかを書いておけば、どうでもいいです.
---------

概念の理解


原文では、storm clusterでtopologyが実行されるときの同時メカニズムを説明するために図を使用します.
つまり、topologyがstorm clusterで実行されると、その同時実行は主に3つの論理エンティティと考えられます.worker、executor、taskです.
1.Workerは、ワークノード上で実行され、Supervisorデーモンによって作成された作業用のプロセスです.各Workerは、指定されたtopologyのすべての実行タスクのサブセットに対応します.逆に言えば、1つのWorkerでは異なるtopologyに属する実行タスクは実行されません.
2.Executorは、Workerプロセスのワークスレッドとして理解できます.1つのExecutorでは同じcomponent(spout/bolt)に属するtaskしか実行できません.1つのWorkerプロセスに1つ以上のExecutorスレッドを作成できます.デフォルトでは、Executorがtaskを実行します.
3.Taskはspoutとboltの中で具体的にやるべき仕事です.1つのExecutorは1つ以上のtaskを担当することができます.各component(spout/bolt)の同時度は、このcomponentに対応するtask数である.またtaskは各ノード間でgrouping(partition)を行う単位でもある.

同時性の構成


同時性の構成には、次のような方法があります.defaults.yaml<storm.yaml具体的にどのように配置するかについては、今までコピーしてみてください.

worker数の設定


Description:現在のstorm clusterでこのtopologyに作成されたworkerの数Configuration option: TOPOLOGY_WORKERS
How to set in your code (examples):
Config#setNumWorkers


executor数の設定







Description:指定されたcomponentに作成されたexecutor数Configuration option: ?
How to set in your code (examples):
TopologyBuilder#setSpout()
TopologyBuilder#setBolt()
Note that as of Storm 0.8 the  parallelism_hint  parameter now specifies the initial number of executors (not tasks!) for that bolt.


task数の設定


Description:指定されたcomponentに作成されたtaskの数Configuration option: TOPOLOGY_TASKS
How to set in your code (examples):
ComponentConfigurationDeclarer#setNumTasks()

Here is an example code snippet to show these settings in practice:
topologyBuilder.setBolt("green-bolt", new GreenBolt(), 2)
               .setNumTasks(4)
               .shuffleGrouping("blue-spout);

実行時のtopologyの例




実行中にtopologyの同時性を変更する方法


Stormは、restart topologyがない場合の、動的な変更(増減)worker processesの数と、rebalancingと呼ばれるexecutorsの数をサポートする. 
主に2つの方法があります.1つのtopologyをrebalanceできます.
Storm web UIを使用してrebalance topology.
CLIツールrebalance topologyを使用すると、という例があります.
# Reconfigure the topology "mytopology" to use 5 worker processes,
# the spout "blue-spout" to use 3 executors and
# the bolt "yellow-bolt" to use 10 executors.

$ storm rebalance mytopology -n 5 -e blue-spout=3 -e yellow-bolt=10