博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Storm的并行度
阅读量:4883 次
发布时间:2019-06-11

本文共 1347 字,大约阅读时间需要 4 分钟。

  在Storm集群中,运行Topolopy的实体有三个:工作进程,executor(线程),task(任务),下图可以形象的说明他们之间的关系。

  

工作进程

  Storm集群中的一台机器会为一个或则多个Topolopy运行一个或则多个工作进程。每个工作进程执行Topology的一个子集,一个工作进程属于一个特定的Topology,并为该Topology启动一个或则多个executor。

  可以通过backtype.storm.Config的选项TOPOLOGY_WORKERS来设置工作进程数,也可以通过config的方法setNumWorkers来设置工作线程数。例如:

config.setNumWorkers(2);//设置工作线程数为2

Executor

  Executor是由一个工作进程启动的线程,在一个工作进程中可以有一个或则多个Executor。一个Executor会为每一个Spout或则Solt运行一个或则多个任务,每一个线程只会为一个Spout或则Solt服务。

  每个Executor都需要单独的配置,在TopologyBuilder类中有setSpout和setBolt两个方法,分别用来设置Spout和Solt初始化时的Executor数量,如果不适用带有parallelism_hint参数的方法设置,默认的Executor的数量为1。

任务

  任务是真正处理数据的实体,每一个Spout或则Solt都在集群中运行一个多则多个任务,在每个Topology中每个组件的任务数都是不变的,但是每个组件的Executor数是可以修改的。即线程数<任务数。默认情况下任务数和线程数设置为相等。

  每个组件启动多少个任务需要单独的配置,backtype.storm.Config的选项TOPOLOGY_TASKS用于配置每个组件启动多少个任务。在ComponentConfigurationDeclarer接口中有一个方法setNumTasks可以设置每个组件的任务数。  

TopologyBuilder topologyBuilder = new TopologyBuilder();topologyBuilder.setSpout("word",new TestWordSpout(),1).setNumTasks(3);

如何更新运行中的Topology的并行度?

  Storm的一个很好的功能是你可以动态的增加或则减少工作线程或则Executor,而不需要重启集群,这种模式叫做rebalancing。可以通过两种方式进行Rebalance操作

  1.通过StormUI的界面操作

  2.使用命令行工具storm Rebalance 例如:

storm rebalance wordcount -n 5 -e readSpout=3 countSolt=10

  在这个例子中,将wordcount的工作进程调整为5,将readSpout的Executor数量调整为3,将countSolt的Executor数量调整为10

 

  

转载于:https://www.cnblogs.com/senlinyang/p/8073634.html

你可能感兴趣的文章
Redis安装 java中的连接 序列化 反序列化
查看>>
hdu 1896 优先队列的应用
查看>>
递推和迭代的比较
查看>>
OpenGL 头文件,库文件
查看>>
点与不规则图形关系判断
查看>>
linux不开启图形界面
查看>>
菜鸟学习SSH(二)——Struts国际化
查看>>
iOS 自定义控件--重写一些方法
查看>>
第二次冲刺作业
查看>>
【转】HTML, CSS和Javascript调试入门
查看>>
折线图-小案例
查看>>
STL:优先队列Priority Aueue
查看>>
蓝桥历年试题 套娃
查看>>
EF4.0和EF5.0增删改查的写法区别及执行Sql的方法
查看>>
作业一
查看>>
微信支付体验
查看>>
Excel导数据到数据库
查看>>
zz 悲催的程序员,以及程序员的悲催
查看>>
Thinkphp 3.2笔记
查看>>
RHEL7开机不能正常进入系统(图形化界面)
查看>>