Storm学习

  • Storm的基本概念http://www.bkjia.com/yjs/974217.html
  • http://shiyanjun.cn/archives/977.html
  • http://www.imooo.com/zonghe/open-source/1270481.htm
  • http://blog.csdn.net/wuzhilon88/article/details/44803101
  1. woker 是线程, executor

  2. 一台Machine运行着多个 worker进程,这些workers belongs to different topology。

    每个 worker 运行着特定某个 topology 的 executors(多个)。

    每一个 executor 都是一个线程( worker产生)

    一个 executor 运行着多个 Task

    一个 Task 运行多个 Spout 和 Bolt。

  3. Spout + Bolt = topology。

  4. tuple stream id: topology的每个节点必须声明emit tuple的输出字段,下面声明的输出字段为["double","triple"].

    1. public void declareOutputFields(OutputFieldsDeclarer declarer){
          declarer.declarer(new Fields("double","triple")); //定义数据流的流动方向
      }
      Spout可以发出多个流。
      declarer.declareStream();
  5. 不同的流分组方式:

    1. shuffle grouping(随机分组)

      1. 它随机地分发元组到Bolt上的任务,这样能保证每个任务得到相同数量的元组。

    2. field grouping(new Fields(相同Fields的分到相同的bolt))

      相同的tuple stream id 执行的task是一个,每一个task对应一个线程执行。

      假设Bolt第一次emit三个流,分别是:

         a -> instance 1

         b -> instance 2

         c -> instance 3

      第二次emit4个流,分别是:

         a -> instance 1

         b -> instance 2

         d -> instance 3

         e -> instance 1

      第三次emit 3个流,分别是:

         c -> instance 3

         d -> instance 3

         b -> instance 2

      看一下三个task都处理了哪些值,以及处理了多少次:

         instance 1:a(2次) ,e 1次。

         instance 2:b 3次。

         instance 3:c 2次,d 2次。

      可以总结得出:

    3. emit发出的值第一次由哪个task实例处理是随机的,此后再次出现这个值,就固定由最初处理他的那个task实例再次处理,直到topology结束。

    4. 一个task实例可以处理多个emit发出的值

    5. field grouping和shuffle grouping 的区别就在于,field grouping当emit发出同样的值时,处理他的task是随机的.

  6. 每一个流声明后都会赋予一个id。

  7. Spout.nextTuple()方法不阻止任何Spout的实现,因为storm在同一线程调用所有的Spout。

  8. 当声明一个Bolt输入流时,总是订阅另一个组件的特定流。如果想订阅另一个组件的所有的流,必须订阅每一个过程。

    1. declarer.shuffleGrouping("1",DEFULT_STREAM_ID); //订阅组件1的默认流
  9. Worker:

  10. Task:

    1. 任务运行在bolt上面,一个bolt或Spout可以有多个task。

    2. 每一个任务对应一个线程执行。

    3. 流分组 就是定义如何从一个任务集到另一个任务集发射元祖。

  11. Executor:

  • Storm并行的基本原理


你可能感兴趣的:(Storm学习)