Storm拓扑的并行度(parallelism)介绍

1、Storm分为3个主要实体,用于在Storm集群中运行拓扑
        工作进程:Worker Process,也称为Worker
        执行器:Executor,即线程Thread
        任务:Task
        工作进程、执行器、任务三者之间关系如下图:
        
       Topology由一个或多个Spout/Bolt组件构成。
        运行中的Topology由一个或多个Supervisor节点中的Worker构成。默认情况下一个Supervisor节点运行4个Worker,由defaults.yaml/storm.yaml中的属性决定:
          supervisor.slots.ports:
            - 6700
            - 6701
            - 6702
            - 6703
        在代码中可以使用new Config().setNumWorkers(3),最大数量不能超过配置的supervisor.slots.ports数量。
        Worker为特定拓扑的一个或多个组件Spout/Bolt产生一个或多个Executor。默认情况下一个Worker运行一个Executor。
        Executor为特定拓扑的一个或多个组件Spout/Bolt实例运行一个或多个Task。默认情况下一个Executor运行一个Task。
        Task执行真正的数据处理,代码中实现的每个Spout/bolt作为很多任务跨集群执行。一个Spout/Bolt组件的Task数量始终贯穿Topology的整个生命周期,但一个Spout/Bolt组件的Executor数量会随着时间而改变。这意味着Threads≤Tasks条件成立。默认情况下Task数量与Executor数量相同,即Storm会使用每个Executor运行一个Task。
    
    2、配置拓扑的并行度
        工作进程Worker数量
            Config config = new Config();
            config.setNumWorkers(3);    //注意此参数不能大于supervisor.slots.ports数量。
        执行器Executor数量
            TopologyBuilder builder = new TopologyBuilder();
            builder.setSpout(id, spout, parallelism_hint);        //设置Spout的Executor数量参数parallelism_hint
            builder.setBolt(id, bolt, parallelism_hint);        //设置Bolt的Executor数量参数parallelism_hint
        任务Task数量
            TopologyBuilder builder = new TopologyBuilder();
            builder.setSpout(id, spout, parallelism_hint).setNumTasks(val);;        //设置Spout的Executor数量参数parallelism_hint,Task数量参数val
            builder.setBolt(id, bolt, parallelism_hint).setNumTasks(val);            //设置Bolt的Executor数量参数parallelism_hint,Task数量参数val
    
    3、改变运行中拓扑的并行度
        Storm一个很好的特性是可以增加或减少工作进程Worker和Executor的数量而不需要重启集群或拓扑,这样的行为成为再平衡(rebalancing)。目前有两种方式可实现拓扑再平衡,如下:
            使用Storm的WebUI                
            使用Storm的命令行工具,如下
                # 重新配置拓扑
                # “myTopology” 拓扑使用5个Worker进程
                # “blue-spout” Spout使用3个Executor
                # “yellow-blot” Bolt使用10个Executor
                storm rebalance myTopology -n 5 -e blue-spout=3 -e yellow-blot=10

  

最新文章

  1. java开发JDBC连接数据库详解
  2. loj 1030概率dp
  3. Android——单元测试
  4. HDU 1142 A Walk Through the Forest (记忆化搜索 最短路)
  5. C#开源框架(整理)
  6. JAVA白盒安全测试需要关注的API
  7. Yii简单的基于角色的访问控制
  8. Android(java)学习笔记194:ListView编写步骤(重点)
  9. css备忘录(关于relative、absolute)
  10. Qt探秘——谈ui文件的用法
  11. 《算法导论》读书笔记之动态规划—最长公共子序列 & 最长公共子串(LCS)
  12. Docker - 访问容器
  13. 使用 PUTTY 操作 Google Cloud
  14. ECharts柱状图
  15. Kali无法启动、无法安装
  16. C goto
  17. 最大化系统并发连接数.Windows.reg
  18. Error:(18, 51) java: -source 1.5 中不支持 diamond 运算符 (请使用 -source 7 或更高版本以启用 diamond 运算符)
  19. html 中一些不常见的标签
  20. 脚本路径问题_dirname

热门文章

  1. iOS 在 Xcode 中重命名项目名称
  2. oracle中split的使用
  3. PHP 将Base64图片保存到 Sae storage
  4. css中同时用头部引入和外部引入对同一个标签进行样式设置,哪一个优先级高。
  5. mockServer学习
  6. WPF 打开文件 打开路径对话框
  7. c - 给分数分级别
  8. 无法连接vCenter Server清单https://IP:10443
  9. mysql 存储引擎MYSIAM和INNODB特性比较
  10. RMAN-06496: must use the TO clause when the database is mounted or open