hadoop系列之Storm入门

并发编程网有更好的翻译

一.Javadoc

    javadoc

二.概念

    下面介绍storm的一些基本概念和一些资源的相关链接,包括Topologies、Streams、Spouts、Bolts、Stream groupings、Reliability、Tasks和Workers。

  1.Topologies(拓扑)

    在storm中,实时应用的逻辑会被打包成storm拓扑,storm拓扑和MapReduce的job类似,主要区别就是MR的一个job有始有终,而拓扑只要不是人为kill就不会主动结束。拓扑就是使用stream groupings连接多个spout和bolt的一张图。TopologyBuilder是Java中用于构建拓扑的Class,拓扑支持生产环境中运行和用于开发测试的Local mode

  2.Streams

    流是storm的核心抽象。流是通过分布式方式创建和处理的元组的无限序列。流使用一个命名流元组的字段的概要来定义。默认情况下,元组包括了integers, longs, shorts, bytes, strings, doubles, floats, booleans和byte arrays,用户可以实现自己的序列化功能,以便更多的自定义类型可以原生支持。每个流在声明时都会有一个id,由于单流的spouts和bolts很普遍,用于声明流和概要的类OutputFieldsDeclarer有很方便的方法声明单独的流而无需具体id,这种情况下流会有一个默认id"default"。storm的动态化元组类型和声明自定义序列化器见serializations

  3.Spouts

    spout是拓扑中流的数据源。通常是spouts从外在的数据源读取元组并把元组发散到拓扑,spouts支持可靠(失败重新发送)和不可靠(失败忽略)两种模式。spouts可以发散多个流,前提是使用OutputFieldsDeclarer类的declareStream方法并且在使用SpoutOutputCollector类的emit方法时制定要发散到的流。spouts的一个重要方法是nextTuple,作用是发散一个新的tuple到拓扑或者在没有新tuple简单返回。storm在同一个线程中调用所有spout方法,所以nextTuple万万不能堵塞。spouts另一个重要方法是ack和fail,只会被支持可靠性的spouts使用。所有的spouts必须实现IRichSpout接口。

  4.Bolts

    拓扑中bolts负责处理加工,bolts能够做的包括但不限于过滤、函数、聚合、连接、数据库操作等等。bolts能够做简单的流变化。复杂流转换一般需要多个bolts。例如将一组数据做按照出现次数排序需要至少两步,一个bolt负责统计每条数据出现的次数,接下来由一个或者多个bolt来取出出现次数topN的数据。bolts支持发散到多个流,需要使用OutputFieldsDeclarer类的declareStream方法声明多个流并且使用OutputCollector类的emit方法声明每个具体的要发散到的流。当声明bolt的输入流时,其实是订阅了另一个组件的某个具体的流,如果想订阅这个组件的所有流,不得不每个订阅一次。InputDeclarer类提供了订阅默认id的流的语法糖,declarer.shuffleGrouping("1")等效于declarer.shuffleGrouping("1", DEFAULT_STREAM_ID)。bolts的主要方式是execute,可以理解为新元组的输入,bolts使用OutputCollector类发散新元组。bolts在处理完每个元组时必须调用OutputCollector类的ack方法,从而使得storm知道处理完成。一般情况下处理一个输入元组,发散0到多个元组,然后才ack这个输入元组,storm提供了IBasicBolt接口(IRichBolt是通用的bolts接口)用于自动ack。OutputCollector类是线程安全的并且可以在任何时候被调用,在bolts中使用多线程异步处理是可以的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、Storm是什么 Storm是一个免费并开源的分布式实时计算系统。利用Storm可以很容易做到可靠地处理无限的...
    Graceleeman阅读 8,183评论 0 6
  • Storm版本:我们使用0.10.2的版本。Storm团队在2016年4月份发布了历史性的版本升级,终于到了1.0...
    编程回忆录阅读 3,788评论 0 0
  • Storm 系统中包含以下几个基本概念:拓扑(Topologies)流(Streams)数据源(Spouts)数据...
    发光的鱼阅读 4,249评论 0 0
  • Date: Nov 17-24, 2017 1. 目的 积累Storm为主的流式大数据处理平台对实时数据处理的相关...
    一只很努力爬树的猫阅读 6,691评论 0 4
  • 此页面列举了Storm的主要概念和资源连接。讨论的概念有: 拓扑(Topologies) 流(Streams) S...
    ximengchj阅读 2,929评论 0 0

友情链接更多精彩内容