ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

【Storm】流操作入门编程实战

2019-05-29 09:53:38  阅读:294  来源: 互联网

标签:入门 Spout 编程 分组 Bolt Storm Topology Grouping


Storm是一个分布式实时计算系统,它设计了一种对流和计算的抽象,概念比较简单,实际编程开发起来相对容易。

下面,简单介绍编程实践过程中需要理解的Storm中的几个概念:

一. Topology

Storm中Topology的概念类似于Hadoop中的MapReduce Job,是一个用来编排、容纳一组计算逻辑组件(Spout、Bolt)的对象(Hadoop MapReduce中一个Job包含一组Map Task、Reduce Task),这一组计算组件可以按照DAG图的方式编排起来(通过选择Stream Groupings来控制数据流分发流向),从而组合成一个计算逻辑更加负责的对象,那就是Topology。一个Topology运行以后就不能停止,它会无限地运行下去,除非手动干预(显式执行bin/storm kill )或意外故障(如停机、整个Storm集群挂掉)让它终止。

二. Spout

Storm中Spout是一个Topology的消息生产的源头,Spout应该是一个持续不断生产消息的组件,例如,它可以是一个Socket Server在监听外部Client连接并发送消息,可以是一个消息队列(MQ)的消费者、可以是用来接收Flume Agent的Sink所发送消息的服务,等等。Spout生产的消息在Storm中被抽象为Tuple,在整个Topology的多个计算组件之间都是根据需要抽象构建的Tuple消息来进行连接,从而形成流。

三. Bolt

Storm中消息的处理逻辑被封装到Bolt组件中,任何处理逻辑都可以在Bolt里面执行,处理过程和普通计算应用程序没什么区别,只是需要根据Storm的计算语义来合理设置一下组件之间消息流的声明、分发、连接即可。Bolt可以接收来自一个或多个Spout的Tuple消息,也可以来自多个其它Bolt的Tuple消息,也可能是Spout和其它Bolt组合发送的Tuple消息。

四. Stream Grouping

Storm中用来定义各个计算组件(Spout、Bolt)之间流的连接、分组、分发关系。

Storm定义了如下7种分发策略:

  1. Shuffle Grouping(随机分组)
  2. Fields Grouping(按字段分组)
  3. All Grouping(广播分组)
  4. Global Grouping(全局分组)
  5. Non Grouping(不分组)
  6. Direct Grouping(直接分组)
  7. Local or Shuffle Grouping(本地/随机分组)

五. Storm执行顺序

六. Storm配置

在运行Topology之前,可以通过一些参数的配置来调节运行时的状态,参数的配置是通过Storm框架部署目录下的conf/storm.yaml文件来完成的。在此文件中可以配置运行时的Storm本地目录路径、运行时Worker的数目等。

在代码中,也可以设置Config的一些参数,但是优先级是不同的,不同位置配置Config参数的优先级顺序为:default.yaml < storm.yaml <Topology内部的configuration <内部组件的special configuration < 外部组件的special configuration

在storm.yaml中常用的几个选项为

标签:入门,Spout,编程,分组,Bolt,Storm,Topology,Grouping
来源: https://blog.csdn.net/cgl1079743846/article/details/90665012

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有