欢迎来到天天文库
浏览记录
ID:38275890
大小:1.33 MB
页数:9页
时间:2019-06-07
《Storm 入门介绍》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Storm介绍周龙鹏一、数据处理过程Storm的术语解释Storm的术语包括Stream、Spout、Bolt、Task、Worker、StreamGrouping和Topology。Stream是被处理的数据。Spout是数据源。Bolt处理数据。Task是运行于Spout或Bolt中的线程。Worker是运行这些线程的进程。StreamGrouping规定了Bolt接收什么东西作为输入数据。数据可以随机分配(术语为Shuffle),或者根据字段值分配(术语为Fields),或者广播(术语为All),或者总是发给一个Task
2、(术语为Global),也可以不关心该数据(术语为None),或者由自定义逻辑来决定(术语为Direct)。Topology是由StreamGrouping连接起来的Spout和Bolt节点网络。在StormConcepts页面里对这些术语有更详细的描述。(1)Topologies用于封装一个实时计算应用程序的逻辑,类似于Hadoop的MapReduceJob(2)Stream消息流,是一个没有边界的tuple序列,这些tuples会被以一种分布式的方式并行地创建和处理(3)Spouts消息源,是消息生产者,他会从一个外部源读
3、取数据并向topology里面面发出消息:tuple(4)Bolts消息处理者,所有的消息处理逻辑被封装在bolts里面,处理输入的数据流并产生输出的新数据流,可执行过滤,聚合,查询数据库等操作(5)Task每一个Spout和Bolt会被当作很多task在整个集群里面执行,每一个task对应到一个线程.二、storm集群的组件(topologies)Storm集群非常类似Hadoop集群。Hadoop上运行的是MapReducejobs,而Storm运行的是topologies。Jobs和topologies本身是不同的,其中
4、一个最大的不同就是,Mapreducejob最终会结束,而topology则会持续的处理消息(直到你杀掉它)。Storm集群有2种节点:master(主节点)和worker(工作节点)。Ømaster节点运行一个守护进程,叫Nimbus,类似Hadoop中的JobTracker。Nimbus负责在集群中分发代码,分配任务,以及故障检测。Ø每个worker节点运行一个守护进程,叫Supervisor。Supervisor监听分配到该服务器的任务,开始和结束工作进程。每个worker进程执行topology的一个子集;一个运行中的
5、topology由许多分布在多台机器上的worker进程组成。Nimbus和Supervisors之间是通过Zookeeper协调。此外,Nimbus和Supervisor是能快速失败(fail-fast)和无状态的(stateless);所有的状态都保存在Zookeeper或者在本地磁盘中。这意味这你可以kill–9杀掉Nimbus或者Supervisors,随后它们会自动恢复好像什么也没发生过。这项设计使得Storm集群变得非常稳定健壮。三、Topologies在Storm中进行实时计算,你可以创建所谓的topologie
6、s。一个topology是一个计算图(agraphofcomputation)。topology的每个节点包括处理逻辑,节点之间数据如何传输的连接。运行一个topology非常简单。将代码和相关依赖打包成一个简单jar包,运行如下命令:stormjarall-my-code.jarbacktype.storm.MyTopologyarg1arg2将执行这个类:backtype.storm.MyTopology,参数arg1和arg2。这个类的最主要功能定义了topology,并将其提交给Nimbus。stormjar部分负责连
7、接Nimbus和上传jar。因为topology定义是Thrift结构,Nimbus是一个Thriftservice,所以你可以使用任何编程语言创建和提交topologies。上面的例子是最简单的方式,使用JVM-based的语言。四、StreamsStorm中最核心的抽象就是stream。stream是一个无边界的tuples序列。Storm提供了基本流转换的分布式的可靠的方法。例如,你可以将tweets流转换成一个trendingtopics流。基本的原始Storm提供了spouts和bolts的流转换。Spouts和bo
8、lts提供了接口,实现你的应用逻辑。spout是流源头。例如,一个spout可以是从Kestrel队列中读取tuples并以流形式发射(emit)出。或者一个spout可以连接TwitterAPI,发出一个tweets流。一个bolt使用任意数量的输入流,做些处理,可能再发射
此文档下载收益归作者所有