1. Storm介绍

Storm 是Twitter的一个开源框架。Storm一个分布式的、容错的实时计算系统。  官网:http://storm.apache.org/

Twitter Storm集群表面上类似于Hadoop集群,Hadoop上运行的是MapReduce Jobs,而Storm运行topologies;但是其本身有很大的区别,最主要的区别在于,Hadoop MapReduce Job运行最终会完结,而Storm topologies处理数据进程理论上是永久存活的,除非你将其Kill掉。

 

1. Storm集群中包含两类节点:主控节点(Master Node)和工作节点(Work Node)。其分别对应的角色如下:

1).Nimbus (Master Node)

负责在Storm集群内分发代码,分配任务给工作机器,并且负责监控集群运行状态;Nimbus的作用类似于Hadoop中JobTracker。

2). Supervisor(Work Node)

Supervisor负责监听从Nimbus分配给它执行的任务,据此启动或停止执行任务的工作进程(worker)。

3).Nimbus和Supervisor节点之间所有的协调工作是通过Zookeeper集群来实现的

  • Nimbus和Supervisor进程都是快速失败(fail-fast)和无状态(stateless)的;
  • Storm集群所有的状态要么在Zookeeper集群中,要么存储在本地磁盘上。

这意味着你可以用kill -9来杀死Nimbus和Supervisor进程,它们在重启后可以继续工作。这个设计使得Storm集群拥有不可思议的稳定性。

2. Storm集群上要实现实时计算,需要创建Topologies

运行一个Topology比较简单,首先,你打包所有的代码和依赖关系的包打成一个jar包。然后,运行如下命令:

  1. 1 storm jar all-my-code.jar backtype.storm.MyTopology arg1 arg2
    2
    3 //这里运行一个包含arg1和arg2两个参数的backtype.storm.MyTopology类,main方法定义Topology以及提交到Nimbus,storm jar部分连接Nimbus以及上传jar包到集群.
    4
    5 storm kill {stormname}    //To kill a topology

Storm的主要特点如下:

  •  简单的编程模型。类似于Mapreduce降低了并行批处理复杂性,Storm降低了进行实时处理的复杂性。
  • 可以使用各种编程语言。你可以在Storm之上使用各种编程语言。默认支持Clojure、Java、Ruby和Python。要增加对其他语言的支持,只需实现一个简单的Storm通信协议即可。
  • 容错性。Storm会管理工作进程和节点的故障。
  • 水平扩展。计算是在多个线程、进程和服务器之间并行进行的。
  • 可靠的消息处理。Storm保证每个消息至少能得到一次完整处理。任务失败时,它会负责从消息源重试消息。
  • 快速。系统的设计保证了消息能得到快速的处理,使用ZeroMQ作为其用底层消息队列。
  • 本地模式。Storm有一个“本地模式”,可以在处理过程中完全模拟Storm集群。这让你可以快速进行开发和单元测试。

Storm的术语:

     Stream、Spout、Bolt、Task、Worker、Stream Grouping和Topology 

  • Stream是被处理的数据。
  • Sprout是数据源。
  • Bolt处理数据。
  • Task是运行于Spout或Bolt中的线程。
  • Worker是运行这些线程的进程。
  • Stream Grouping规定了Bolt接收什么东西作为输入数据。
  • 数据可以随机分配(术语为Shuffle),或者根据字段值分配(术语为Fields),或者 广播(术语为All),或者总是发给一个Task(术语为Global),也可以不关心该数据(术语为None),或者由自定义逻辑来决定(术语为 Direct)。
  • Topology是由Stream Grouping连接起来的Spout和Bolt节点网络。

  worker 

  • Supervisor会监听分配给它那台机器的工作,根据需要启动/关闭工作进程,这个工作进程就是worker
  • 每一个worker都会占用工作节点的一个端口,这个端口可以在storm.yarm中配置
  • 一个topology可能会在一个或者多个工作进程里面执行,每个工作进程执行整个topology的一部分,所以一个运行的topology由运行在很多机器上的很多工作进程组成。

  Task  

  • 每一个Spout和Bolt会被当作很多task在整个集群里面执行。
  • 默认情况下每一个task对应到一个线程(Executor),这个线程用来执行这个task,
  • 而stream grouping则是定义怎么从一堆task发射tuple到另外一堆task。
时间: 2024-10-24 02:01:52

1. Storm介绍的相关文章

Storm介绍及与Spark Streaming对比

1 Storm介绍 Storm是由Twitter开源的分布式.高容错的实时处理系统,它的出现令持续不断的流计算变得容易,弥补了Hadoop批处理所不能满足的实时要求.Storm常用于在实时分析.在线机器学习.持续计算.分布式远程调用和ETL等领域. 在Storm的集群里面有两种节点:控制节点(Master Node)和工作节点(Worker Node).控制节点上面运行一个名为Nimbus的进程,它用于资源分配和状态监控:每个工作节点上面运行一个Supervisor的进程,它会监听分配给它所在机

Storm介绍及安装部署

本节内容: Apache Storm是什么 Apache Storm核心概念 Storm原理架构 Storm集群安装部署 启动storm ui.Nimbus和Supervisor 一.Apache Storm是什么 Apache Storm是自由开源的分布式实时计算系统,擅长处理海量数据,适用于数据实时处理而非批处理. 批处理使用的大多是鼎鼎大名的hadoop或者hive,作为一个批处理系统,hadoop以其吞吐量大.自动容错等优点,在海量数据处理上得到了广泛的使用.但是,hadoop不擅长实时

流式 storm介绍

Storm是什么 如果只用一句话来描述storm的话,可能会是这样:分布式实时计算系统.按照storm作者的说法,storm对于实时计算的意义类似于hadoop对于批处理的意义.我们都知道,根据google mapreduce来实现的hadoop为我们提供了map, reduce原语,使我们的批处理程序变得非常地简单和优美.同样,storm也为实时计算提供了一些简单优美的原语.我们会在第三节中详细介绍. 我们来看一下storm的适用场景. 流数据处理.Storm可以用来处理源源不断流进来的消息,

Storm介绍及核心组件和编程模型

离线计算 离线计算:批量获取数据.批量传输数据.周期性批量计算数据.数据展示 代表技术:Sqoop批量导入数据.HDFS批量存储数据.MapReduce批量计算数据.Hive批量计算数据.azkaban/oozie任务调度 流式计算 流式计算:数据实时产生.数据实时传输.数据实时计算.实时展示 代表技术:Flume实时获取数据.Kafka/metaq实时数据存储.Storm/JStorm实时数据计算.Redis实时结果缓存.持久化存储(mysql). 一句话总结:将源源不断产生的数据实时收集并实

Storm介绍

Storm是一个分布式的.可靠的.容错的数据流处理系统(流式计算框架,可以和mapreduce的离线计算框架对比理解). 整个任务被委派给不同的组件,每个组件负责一个简单的特定的处理任务.Storm集群的输入流是一个叫spout的组件负责接入处理.spout把数据传 给bolt组件,bolt组件可以对数据完成某种转化.bolt组件可以把数据持久化,或者传送到其他的bolt.可以把Storm集群想象成一个 bolt组件链,每个组件负责对spout流入的数据(也可以是其他bolt流入的数据)进行某种

storm 介绍

Storm主要的应用场景就是流式数据处理,例如实时推荐系统,实时监控系统等. storm中的相关概念 在storm中,分布式的计算结构指的是一个topology(拓扑),一个topology由流式数据,spouts(流生产者),以及bolts(具体操作者)组成.Storm的topologies和其他的批处理任务系统很类似,例如Hadoop,这类批处理任务都定义了清晰的开始和结束点,然而storm的topologies是永不停息的在运行的,除非杀死或者反部署这个topologies. Topolo

_00019 Storm的体系结构介绍以及Storm入门案例(官网上的简单Java案例)

博文作者:妳那伊抹微笑 博客地址:http://blog.csdn.net/u012185296 个性签名:世界上最遥远的距离不是天涯,也不是海角,而是我站在妳的面前,妳却感觉不到我的存在 技术方向:Flume+Kafka+Storm+Redis/Hbase+Hadoop+Hive+Mahout+Spark ... 云计算技术 转载声明:可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明,谢谢合作! qq交流群:214293307  (期待与你一起学习,共同进步) # Storm

storm学习笔记(一)

1.storm介绍 storm是一种用于事件流处理的分布式计算框架,它是有BackType公司开发的一个项目,于2014年9月加入了Apahche孵化器计划并成为其旗下的顶级项目之一.Storm可以方便地在一个计算机集群中编写与扩展复杂的实时计算,Storm用于实时处理,就好比 Hadoop 用于批处理.Storm保证每个消息都会得到处理,而且它很快--在一个小集群中,每秒可以处理数以百万计的消息.更棒的是你可以使用任意编程语言来做开发.storm源码:githup storm特点: 简单的编程

Storm 入门的Demo教程

Storm介绍 Storm是Twitter开源的分布式实时大数据处理框架,最早开源于github,从0.9.1版本之后,归于Apache社区,被业界称为实时版Hadoop.随着越来越多的场景对Hadoop的MapReduce高延迟无法容忍,比如网站统计.推荐系统.预警系统.金融系统(高频交易.股票)等等,大数据实时处理解决方案(流计算)的应用日趋广泛,目前已是分布式技术领域最新爆发点,而Storm更是流计算技术中的佼佼者和主流. Storm的核心组件 Nimbus:即Storm的Master,负