Storm基本概念

    Storm为分布式实时计算提供了一组通用原语,可被用于“流处理”之中,实时处理消息并更新数据库。这是管理队列及工作者集群的另一种方式。 Storm也可被用于“连续计算”(continuous computation),对数据流做连续查询,在计算时就将结果以流的形式输出给用户。它还可被用于“分布式RPC”,以并行的方式运行昂贵的运算。 Storm的主工程师Nathan Marz表示:
    Storm可以方便地在一个计算机集群中编写与扩展复杂的实时计算,Storm之于实时处理,就好比 Hadoop之于批处理。Storm保证每个消息都会得到处理,而且它很快——在一个小集群中,每秒可以处理数以百万计的消息。更棒的是你可以使用任意编程语言来做开发。
1.Storm集群的组成
  Storm集群和Hadoop集群非常相似,Hadoop集群运行MapReduce作业,Storm运行topologies。MapReduce作业和topologies的区别很大,前者主要进行批处理,对实时性要求不高,后者用于实时流处理;前者作业处理完数据就结束了,后者会一直对流进行处理(直到显式的关掉topologies)
  和Hadoop集群对应,Storm有两种类型的节点:主节点被称为“Nimbus”,对应于Hadoop的“JobTracker”,扶着分发代码到整个集群,分配任务给机器,监控任务失败;从节点被称为“Supervisor”,对应与Hadoop的“TaskTracker”,监听Nimbus派发给机器的任务,启动或者停止处理Nimbus派发给它的任务。
  Storm集群由一个主节点和多个从节点组成,每个从节点处理topologies的一个子集

  Nimbus和所有Supervisor的协调工作是通过Zookeeper集群完成的。 Nimbus守护进程和Supervisor守护进程都是快速失败的并且是无状态的,所有的状态都由Zookeeper保存或者保存在本地磁盘上。这也就意味着你可以使用kill -9命令杀死Nimbus或者Supervisor守护进程,但是集群会马上启动备份,而对用户而言这些都是透明的。这样的机制使Storm集群非常的稳定可靠

Storm cluster


2.Topologies
    Storm集群里的实时计算被称为topologies。Topology是一个关于计算的图,每个节点表示计算逻辑,节点之间的连接表示数据怎么在节点之间传输。运行topologies也非常简单,首先将所有的代码和依赖打包成一个Jar文件,然后使用
                   storm jar all-my-code.jar backtype.storm.MyTopology arg1 arg2
命令将topology提交给集群。
    Topologies是Thrift结构,Nimbus是Thrift服务,所以可以使用任何语言创建和提交topologies。

3.Streams
   Storm的一个核心概念是Stream(流),流是无限的元组序列,Storm实现了将一个流变换成另一个新流的框架,这种变换是分布式的,可靠的。流变化的两个基础概念是Spout和Bolt。Spout是流的源,负责从外界获取数据,将数据转化为流形式提供给Storm(具体来说是Bolt)。Bolt负责消费Spout或者其他Bolt产生的流,对流进行处理,产生新的流。Bolt可以做任何你想做的处理,包括过滤,多个流的聚集,联合,访问数据库等等。

   Topology是多个Spout和多个Bolt组成的图,用于提交给Storm集群执行。图中的每个节点要么是Spout要么是Bolt,边表示Bolt订阅了那个流,Spout或者Bolt发射元组到流里,流将该元组发送到所有订阅了该流的Bolt。

A Storm topology

   Storm中的每个节点都是并行运行的,每个节点的并行度都是可以设置的,Storm框架按照设置好的并行度在该节点创建这么多线程来并行执行。
   Topology会一直运行,Storm会对失败的任务自动重新分配,同时Storm保证不会有数据丢失,即使是机器死掉。

4.Storm运行模式
本地模式(local mode)
   本地模式主要是用于测试和开发topologies,运行本地模式可以看到流之间这么传输的,这样可以很方便的调试topologies相关的程序。本地模式是使用进程来模拟Storm集群

分布模式(distributed mode)
   分布模式是真正的Storm应用模式,提交一个topology给Nimbus,Nimbus会负责分发相关的代码,分配任务给各个Supervisor去执行,如果Supervisor失败,Nimbus重新分配失败的任务
posted @ 2012-12-30 09:30  飞天的白猪  阅读(150)  评论(0编辑  收藏  举报