`

storm并行度

 
阅读更多

 

 

1.storm并行度
  storm的并行是由非常多的supervisor完成的。
  storm的supervisor运行的是topology中的spout/bolt task。
  task是storm中进行计算的最小的运行单位,表示的是spout、bolt的运行实例。
  程序执行的最大粒度的运行单位是进程。在supervisor中,运行task的进程称作worker。
  supervisor节点上可以运行非常多的worker。
  在worker中可以运行线程的,这些线程称作executor。在executor中,运行task。
 
  总结一下,supervisor(节点)>worker(进程)>executor(线程)>task(实例)

 

下面以一个节点为图例说明下 storm并行度:

 

 

 

 

 

 

2 如何具体设置并行度:

 

2.1)supervisor: 在哪个节点上启动supervisor 则就会产生  进入zk内查看storm结果集

2.2)  worker:storm.yaml中,如下指定了 worker进程的端口,以及当前机器下能运行的work数量

       每个端口用于对应进程对外通讯的。

       如下配置可以不配置,在storm的 storm-core-xx.jar中的default.xml中做了默认配置。

 

  1. supervisor.slots.ports:    // 指定storm通讯端口    
  2.       - 6701  
  3.       - 6702  
  4.       - 6703  
  5.       - 6704  

 

       worker进程数量也可以通过config.setNumWorkers(workers)设置。(优先级更高)

 

 2.3)  executor的设置:

builder.setSpout(id, spout, parallelism_hint): parallelism_hint设置spout的数量

builder.setBolt(id, bolt, parallelism_hint)设置的。parallelism_hint设置bolt的数量

 

 2.4)  task的设置:

   task是通过 spout/boltDeclarer.setNumTasks(num)设置对应spout/bolt的task个数。

 


默认情况下,每个supervisor启动4个worker,每个worker启动1个executor,每个executor中会有1个task。
翻译成人类语言:  每台机器启动4个进程,每个进程里面跑一个线程,每个线程来具体执行一个 bolt/spout的实例

 

即: 可以通过 config设置进程个数  通过TopologyBuilder设置spout/bolt 各自的线程个数, 也能通过TopologyBuilder创建的对应的
Spout/BoltDecvlarer 来设置每个线程运行的具体task个数。

 

设置代码如下:

 

public class MyLocalStormTopology {

	/**
	 * 组装火车 轨道  并让火车在轨道上行驶
	 * @throws InterruptedException 
	 */
	public static void main(String[] args) throws Exception {

		// 祖品列车
		TopologyBuilder topologyBuilder = new TopologyBuilder();
		SpoutDeclarer spoutDeclarer = topologyBuilder.setSpout("1", new MySpout2()); // 定义1号车厢
		//spoutDeclarer.setNumTasks(val);// 设置task数量
		//topologyBuilder.setSpout(id, spout, parallelism_hint); // 动态设置 spout的executor数量
		BoltDeclarer boltDeclarer = topologyBuilder.setBolt("2", new MyBolt1()).shuffleGrouping("1");// 定义2号车厢 并和1号车厢连接起来   
		//boltDeclarer.setNumTasks(num); 动态设置 task数量
		//topologyBuilder.setBolt(id, bolt, parallelism_hint); 动态设置 bolt的executor数量

		// 造出轨道 在集群中运行
		StormSubmitter stormSubmitter = new StormSubmitter();// storm集群执行
		//HashMap conf = new HashMap();
		Config config = new Config();
		//config.setNumWorkers(workers); 动态设置每台机器运行work进程数
		stormSubmitter.submitTopology(MyLocalStormTopology.class.getSimpleName(), config, topologyBuilder.createTopology());
		
	}

 

 

  worker和外部通信:

 

 

 

  worker调优:

 Config类对象设置如下参数,来调整 worker进入数据,处理数据的容量大小

 

 

 

 

 

 

 

sdfsdfds

  • 大小: 213.3 KB
  • 大小: 19.6 KB
  • 大小: 19.6 KB
  • 大小: 153.8 KB
分享到:
评论

相关推荐

    Storm下基于最佳并行度的贪心调度算法.pdf

    Storm下基于最佳并行度的贪心调度算法.pdf

    论文研究-Storm下基于最佳并行度的贪心调度算法.pdf

    Storm默认采用轮询的调度策略,且依赖用户对topology任务的并行度配置,当配置不合理时依然会造成topology处理时延增大、吞吐量降低等问题。针对该问题,提出了一种Storm下基于最佳并行度的贪心调度算法。调度时先...

    第一个Storm应用

    修改并行度实在是太容易了(当然对于实际情况来说,每个实例都会运行在单独的机器上)。 不过似乎有一个问题:单词is和great分别在每个WordCounter各计数一次。怎么会这样? 当你调用shuffleGrouping时,就决定了...

    storm基础框架分析

    前期收到的问题:1、在Topology中我们可以指定spout、bolt的并行度,在提交Topology时Storm如何将spout、bolt自动发布到每个服务器并且控制服务的CPU、磁盘等资源的?2、Storm处理消息时会根据Topology生成一棵消息...

    strom的安装

    Task为Storm中的最小处理单元,它是Topology组件诸多并行度中的一个。每个Executor都会启动一个消息循环线程,用以接收、处理和发送消息。当Executor收到属于其下某一Task的消息后,就会调用该Task对应的处理逻辑对...

    streamparse:在Apache Storm拓扑中运行Python。 Pythonic API,CLI工具和拓扑DSL

    这也是在生产中扩展长期运行,高度并行的Python进程的有效方法。 文献资料 用户群 通过我们的Google跟踪项目的进展,参与,提交想法并寻求帮助。 贡献者 按字母顺序,姓氏: 丹·布兰查德( ) 基思·( ) ...

    garoa:Go中可扩展的高度并发管道

    每个步骤都有其自己的并行度(又称工人数),并且通信是通过渠道在内部完成的。 这些功能唯一需要做的就是接受一个interface{} (也叫任何东西),并且还返回一个错误的interface{} 。 这可以封装更复杂的域操作。...

    一种大数据智能分析平台的数据分析方法及实现技术.doc

    Spark Streaming将数据切分成片段,变成小批量时间间隔处理,Spark抽象一个持续的数据流 称为DStream(离散流),一个DStream是RDD弹性分布式数据集的micro- batch微批次,RDD是分布式集合能够并行地被任何函数操作...

Global site tag (gtag.js) - Google Analytics