Storm组件有哪些
这篇文章主要讲解了“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执行在集群中。
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提供的这种原语是 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里每个node执行是并行的。在你的topology里,你能指定node的并行度(比如 5),然后Storm会产生与其相当数量的Thread在集群中执行。
一个Topology会一直执行下去的,或者你kill了它。Storm也会自动地重分配那些失败了task。当然,Storm也会保证没有任何的数据丢失,甚至机器下线和数据删除(TODO 有待深究原理)
感谢各位的阅读,以上就是“Storm组件有哪些”的内容了,经过本文的学习后,相信大家对Storm组件有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!
网页标题:Storm组件有哪些
网站地址:http://scyanting.com/article/jichep.html