一、Storm概述

     Storm是一个分布式的、可靠的、零失误的流式数据处理系统。

它的工作就是委派各种组件分别独立的处理一些简单任务。在Storm集群中处理输入流的是Spout组件,而Spout又把读取的数据传递给叫Bolt的组件。

Bolt组件会对收到的数据元组进行处理,也有可能传递给下一个Bolt。我们能够把Storm集群想象成一个由bolt组件组成的链条集合。数据在这些链条上传输。而bolt作为链条上的节点来对数据进行处理。

     Storm和Hadoop集群表面看上去非常类似,可是Hadoop上面执行的是MapReduceJobs,而在Storm上执行的是拓扑topology,这两者之间是非常不一样的,关键差别是:MapReduce终于会结束,而一个topology永远会执行(除非你手动kill掉),换句话说。Storm是面向实时数据分析,而Hadoop面向的是离线数据分析。

     如果有这么一种情形。当你看政论类节目的时候。他们会常常提到一些人名和一些热门话题。如果我们把当中人名和话题的反复次数都记录下来,结果应该是一件非常有趣的事情。
     因此,想象在Storm环境下,我们能够把辩论者说的话作为输入流,spout组件来读取这些数据,然后把每一句话发送给bolt1组件,bolt1组件负责把这一句话拆分成一个个单词。再把这些单词发送到bolt2组件。bolt2组件负责统计每一个单词的数量然后把这些信息存储到数据库中。辩论者在不断的说话。而storm不断的实时刷新数据库中结果,当你想查看这些结果时,你仅仅需查询数据库就可以。

     如今,你能够想象假设能够把这些spout和bolt均衡分布到整个集群中,而且能够方便地做无限制的扩展,厉害吧?这就是Storm的威力!


图1.1:一个简单的Topology

     Storm的一些典型应用场景
     1.数据流处理:与其他流处理系统不同,storm不须要中间队列媒介
     2.实时计算:可连续不断的进行实时数据处理,把处理的结果实时更新展示到client
     3.分布式远程过程调用:可充分利用集群中CPU资源,进行CPU密集型计算。


二、Storm组件
     集群中有两种类型的节点:主节点和工作节点
    1. master节点:执行Nimbus进程,负责分发代码。安排任务。监控执行状态(主要是节点成功失败状态)。
    2. worker节点:执行Supervisor进程,负责执行一个Topology的一个子集
图1.2:storm 集群中的组件:     


     Storm集群中的状态都保存在zookeeper或本地磁盘中,因此Storm中的进程都是无状态的。不论什么一个节点失败或重新启动都不会影响整个集群。Storm底层使用zeromq来保证其非凡的特性:
  • 并发的socket 类
  • 比TCP更快,适用于集群环境和超级计算
  • 通过inproc、IPC、TCP和多路广播传输消息
  • 异步IO
  • Connect N-to-N via fanout,pubsub,pipeline,requst-reply
  • 使用push/pull模式
三、Storm特性
  • 编程简单:主要依赖于spout和bolt来实现
  • 支持多种编程语言:基于JVM的语言都能够支持,不论什么一个其他语言仅仅要实现了一个中间类也可支持
  • 容错性高:执行宕机、重新启动等
  • 可拓展:能够随意增删节点到集群
  • 可靠性高:全部消息都被保证至少消费一次。也就是说,Storm中消息不会丢失
  • 高速:快就不必多少了
  • 事务支持
初步了解Storm之后,下一节会通过写一个简单的Demo执行一下来让大家真实体会一下Storm。





















Storm具体解释一、Storm 概述的更多相关文章

  1. (转)Storm UI 解释

    Storm UI link:http://lbxc.iteye.com/category/221265 本文主要解释下storm ui上各项属性的含义. 1. mainpage 首页主要分为3块: a ...

  2. 分布式流式处理框架:storm简介 + Storm术语解释

    简介: Storm是一个免费开源.分布式.高容错的实时计算系统.它与其他大数据解决方案的不同之处在于它的处理方式.Hadoop 在本质上是一个批处理系统,数据被引入 Hadoop 文件系统 (HDFS ...

  3. storm源码之storm代码结构【译】【转】

    [原]storm源码之storm代码结构[译]  说明:本文翻译自Storm在GitHub上的官方Wiki中提供的Storm代码结构描述一节Structure of the codebase,希望对正 ...

  4. 【原】storm源码之storm代码结构【译】

    说明:本文翻译自Storm在GitHub上的官方Wiki中提供的Storm代码结构描述一节Structure of the codebase,希望对正在基于Storm进行源码级学习和研究的朋友有所帮助 ...

  5. _00019 Storm架构介绍和Storm获取案例(简单的官方网站Java案例)

    博文作者:妳那伊抹微笑 itdog8 地址链接 : http://www.itdog8.com(个人链接) 博客地址:http://blog.csdn.net/u012185296 博文标题:_000 ...

  6. storm源码之storm代码结构【译】

    storm源码之storm代码结构[译] 说明:本文翻译自Storm在GitHub上的官方Wiki中提供的Storm代码结构描述一节Structure of the codebase,希望对正在基于S ...

  7. Storm(一)Storm的简介与相关概念

    一.Storm的简介 官网地址:http://storm.apache.org/ Storm是一个免费开源.分布式.高容错的实时计算系统.Storm令持续不断的流计算变得容易,弥补了Hadoop批处理 ...

  8. Storm系列三: Storm消息可靠性保障

    Storm系列三: Storm消息可靠性保障 在上一篇 Storm系列二: Storm拓扑设计 中我们已经设计了一个稍微复杂一点的拓扑. 而本篇就是在上一篇的基础上再做出一定的调整. 在这里先大概提一 ...

  9. Storm系列二: Storm拓扑设计

    Storm系列二: Storm拓扑设计 在本篇中,我们就来根据一个案例,看看如何去设计一个拓扑, 如何分解问题以适应Storm架构,同时对Storm拓扑内部的并行机制会有一个基本的了解. 本章代码都在 ...

  10. Storm概念学习系列之storm核心组件

    不多说,直接上干货! Storm核心组件 了解 Storm 的核心组件对于理解 Storm 原理非常重要,下面介绍 Storm 的整体,然后介绍 Storm 的核心. Storm 集群由一个主节点和多 ...

随机推荐

  1. hdu 4712 Hamming Distance bfs

    我的做法,多次宽搜,因为后面的搜索扩展的节点会比较少,所以复杂度还是不需要太悲观的,然后加上一开始对答案的估计,用估计值来剪枝,就可以ac了. #include <iostream> #i ...

  2. Java-对象多态性

    class A {  public void fun1()  {   System.out.println("<----A------>");  }  public v ...

  3. Android生存指南:Eclipse快捷键

    天天使用的东西,可能是由于太习惯它了吧.总忘记学习怎样高效的使用它.正的谓磨刀不误劈柴功,找时间好好磨磨刀.于人于已都是有优点的.效率高了,多省出点时间去干自己真正喜欢干的事情吧. 精进Eclipse ...

  4. Swift调用Objective-C编写的代码(颜色选择器KKColorListPicker调用)

    在Swift项目中,我们可以导入任意用Objective-C写的框架,代码库等.下面以Swift调用Objective-C编写的颜色选择器KKColorListPicker为例. 效果图如下:     ...

  5. 与众不同 windows phone (31) - Communication(通信)之基于 Socket UDP 开发一个多人聊天室

    原文:与众不同 windows phone (31) - Communication(通信)之基于 Socket UDP 开发一个多人聊天室 [索引页][源码下载] 与众不同 windows phon ...

  6. (并查集)POJ 1308 & HDU 1325

    一开始以为两道题是一样的,POJ的过了直接用相同代码把HDU的交了,结果就悲剧了.最后发现HDU的没有考虑入度不能大于一. 题意:用树的定义来 判断吧,无环,n个结点最多有n-1条边,不然就会有环.只 ...

  7. codeforces 659B Qualifying Contest

    题目链接:http://codeforces.com/problemset/problem/659/B 题意: n个人,m个区.给出n个人的姓名(保证不相同),属于的区域,所得分数.从每个区域中选出成 ...

  8. [C++]指针浅析

    Date: 2014-1-4 summary: 指针的简单理解,概念性的东西会比较多(100个人有100种理解,此处只代表我个人看法) Contents: 1.什么是指针 c++ primer plu ...

  9. BI中事实表和维度表的定义

    一个典型的样例是,把逻辑业务比作一个立方体,产品维.时间维.地点维分别作为不同的坐标轴,而坐标轴的交点就是一个详细的事实.也就是说事实表是多个维度表的一个交点.而维度表是分析事实的一个窗体. 首先介绍 ...

  10. ArcGIS多面体(multipatch)解析——引

    多面体(multipatch)结构在ArcGIS数据结构中是与点.线.面平行的一种数据结构,对于ArcGIS三维来说是一个很核心的结构,有了它,ArcGIS平台才可以灵活的描述规则和不规则的三维实体. ...