大数据基础知识学习-----Storm学习笔记(五)Storm分组策略和并发度

分组策略和并发度

读取文件路径和方法

  • spout数据源:数据库、文件、MQ(比如:Kafka)
  • 数据源是数据库:只适合读取数据库的配置文件
  • 数据源是文件:只适合测试、讲课用(因为集群是分布式集群)
  • 企业产生的log文件处理步骤:(1)读出内容写入MQ(2)Storm再处理

分组策略(Stream Grouping)

stream grouping用来定义一个stream应该如何分配给Bolts上面的多个Executors(多线程多并发)。

Storm里面有7种类型的stream grouping

  • Shuffle Grouping: 随机分组,轮询,平均分配。随机派发stream里面的tuple,保证每个bolt接收到的tuple数目大致相同。
  • Fields Grouping:按字段分组,比如按userid来分组,具有同样userid的tuple会被分到相同的Bolts里的一个task,而不同的userid则会被分配到不同的bolts里的task。
  • All Grouping:广播发送,对于每一个tuple,所有的bolts都会收到。
  • Global Grouping:全局分组,这个tuple被分配到storm中的一个bolt的其中一个task。再具体一点就是分配给id值最低的那个task。
  • Non Grouping:不分组,这stream grouping个分组的意思是说stream不关心到底谁会收到它的tuple。目前这种分组和Shuffle grouping是一样的效果。在多线程情况下不平均分配
  • Direct Grouping:直接分组,这是一种比较特别的分组方法,用这种分组意味着消息的发送者指定由消息接收者的哪个task处理这个消息。只有被声明为Direct Stream的消息流可以声明这种分组方法。而且这种消息tuple必须使用emitDirect方法来发射。消息处理者可以通过TopologyContext来获取处理它的消息的task的id (OutputCollector.emit方法也会返回task的id)。
  • Local or shuffle grouping:如果目标bolt有一个或者多个task在同一个工作进程中,tuple将会被随机发送给这些tasks。否则,和普通的Shuffle Grouping行为一致。

并发度

并发度场景

  • 单线程下:加减乘除、全局汇总
  • 多线程下:局部加减乘除、持久化DB等

并发度

并发度:用户指定一个任务,可以被多个线程执行,并发度的数量等于线程executor的数量。

Task就是具体的处理逻辑对象,一个executor线程可以执行一个或多个tasks,但一般默认每个executor只执行一个task,所以我们往往认为task就是执行线程,其实不是。

Task代表最大并发度,一个component的task数是不会改变的,但是一个componet的executer数目是会发生变化的(storm rebalance命令),task数>=executor数,executor数代表实际并发数。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Storm入门系列之一:storm核心概念及特性 本文的将介绍一些 storm 入门的基础知识,包括 storm ...
    zhaif阅读 8,428评论 0 17
  • 什么是实时流计算? 主要的处理模式可以分为:流处理,批处理 流处理是直接处理,有时也分为在线,离线,近线(st...
    Bloo_m阅读 10,460评论 1 1
  • Storm 是一个分布式的,可靠的,容错的数据流处理系统。下面我将分别从storm的整体架构以及部分原理进行讲解。...
    疯狂的哈丘阅读 10,150评论 0 1
  • Storm版本:我们使用0.10.2的版本。Storm团队在2016年4月份发布了历史性的版本升级,终于到了1.0...
    编程回忆录阅读 3,720评论 0 0
  • 50后的大哥‘领跑’,90后的我“要”什么? 题记:老当益壮,宁移白首之心;穷且益坚,不坠青云之志。——王勃《藤王...
    1路向前阅读 3,089评论 0 1