温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Storm组件有哪些

发布时间:2021-12-23 13:53:43 来源:亿速云 阅读:124 作者:iii 栏目:云计算

这篇文章主要讲解了“Storm组件有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Storm组件有哪些”吧!

Storm 组件

      Storm集群表面上与hadoop集群类似。在hadoop集群上,你可以跑 mapreduce job,而在storm集群上你可以跑各种topology。但其实 mapreduce job 和 topology,他们是非常不一样的——其中最主要的差别就是,一个Mapreduce job 可以运行结束,然后一个topology会一直处理信息直到你kill它。

      在一个Storm集群有两种节点:master node 和 worker nodes。Master node 运行着一个守护进程,叫做"Nimbus",这非常类似于hadoop 1.0时代的 JobTracker。Nimbus负责分发code,分配task给node,和监控。

      每个worker node运行着一个守护进程,叫做"Supervisor"。Supervisor监听那些分配给当前node的任务,启动和终止worker  processes(worker process处理那些Nimbus分配给它需要处理的任务)。而每个worker process执行一部分的topolgy;一个执行中的topology包含了很多worker processes执行在集群中。

    Storm组件有哪些

      Nimbus和 Supervisors之间的协作是通过Zookeeper集群完成的。另外,Nimbus 和 Supervisor是 快速失败 和 无状态化(TODO understand),而所有的状态是保存在Zookeeper或者本地磁盘。换而言之,你可以用 kill -9 来杀死 Nimbus 或者 Supervisors,而它们会马上变回好像什么都没发生过一样。这些设计致使Storm 集群非常稳定。(但愿如此,马上要用到项目中了......)

Topology

     在Storm上做实时计算,你需要创建 "Topology"。在Topology中的每个node涵盖 逻辑处理, nodes间数据传递依赖等等。

        执行一个Topology非常简单。首先, 你需要打包你全部的代码和依赖到一个jar,然后,你可以执行接下来的命令:

storm jar all-my-code.jar backtype.storm.MyTopology arg1 arg2

       这命令会执行类backtype.storm.MyTopology,并带入外部参数 arg1和arg2(给main函数用)。而这个类的main方法会定义topology,并提交给Nimbus。Storm jar会负责连接Nimbus,并上传这个jar。

      由于topology的结构定义是Thrift(facebook 写的一个夸语言调用框架)结构,同时Nimbus也是也是一个Thrift服务,所以你能创建和提交任何语言写的topology。

Streams

    在Storm里最抽象的是 "stream"。Stream是一个无边界且序列化的tuples。Storm提供了原语来把一个stream转化成另一个新的stream,且这种转化是分布式的,可靠的。下图就是Stream的写照。

Storm组件有哪些

     Storm提供的这种原语是 spouts 和 bolts。Spouts 和 bolts 都有接口,你需要实现来执行你的应用逻辑。

     Spout是stream的来源。举个栗子,一个spout可能读取tuples从Kestrel队列中,并且发射这些数据以流的形式。或者说,一个spout会连接Twitter的API 来发射数据流。(对于Storm来说,Spout就是源数据的抓取者,负责为整个流式计算提供源源不断的数据流。)

     Bolt则是stream的消费者,做一些数据处理,同时也可能发射新的数据流。混合复杂的流转化,需要多个步骤,多个bolts。Bolts能做任何事情,像执行functions,过滤tuples,数据流聚合,数据流join,与数据库间的协作 等等。(对于Storm来说,Bolt是数据流的处理者,可以有多个,负责真正业务逻辑上的聚合计算等等。)

     Spouts和Bolts间的网络传输被打包进一个 topology,然后你交于一个Storm集群去执行。当一个spout或bolt发射一个tuple到流里时, 它会发射这个tuple到所有的抓取这个流的bolt中。(需要注意的是,如果多个处理相同逻辑业务的bolt在发生数据聚合时,bolt的聚合结果未必是最终结果,这个和多个reducer计算Top one的情况是一样的。)

Storm组件有哪些

     在Storm里每个node执行是并行的。在你的topology里,你能指定node的并行度(比如 5),然后Storm会产生与其相当数量的Thread在集群中执行。

     一个Topology会一直执行下去的,或者你kill了它。Storm也会自动地重分配那些失败了task。当然,Storm也会保证没有任何的数据丢失,甚至机器下线和数据删除(TODO 有待深究原理)

感谢各位的阅读,以上就是“Storm组件有哪些”的内容了,经过本文的学习后,相信大家对Storm组件有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI