美文网首页
大数据基础知识学习-----Storm学习笔记(五)Storm分

大数据基础知识学习-----Storm学习笔记(五)Storm分

作者: Waldeinsamkeit4 | 来源:发表于2018-06-08 13:01 被阅读0次

    分组策略和并发度

    读取文件路径和方法

    • 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分

          本文链接:https://www.haomeiwen.com/subject/itxasftx.html