Storm入门之第一章

1、名词

spout龙卷,读取原始数据为bolt提供数据

bolt雷电,从spout或者其他的bolt接收数据,并处理数据,处理结果可作为其他bolt的数据源或最终结果

nimbus雨云,主节点的守护进程,负责为工作节点分发任务

topology 拓扑结构,Storm的一个任务单元

define field(s) 定义域,由spout或者bolt提供,被bolt接收

2、基础知识

Storm是一个分布式的,可靠的,容错的数据流处理系统。它会把工作任务委托给不同类型的组件,每个组件负责处理一项简单特定的任务。Storm集群的输入流由一个被称作spout的组件管理,spout把数据传递给bolt,bolt可以把数据保存起来,也可以把数据传递给其他的bolt。

一个Storm集群就是在一连串的bolt之间转换spout传过来的数据。

需求:统计播音员的字幕中出现哪些政治相关词,对应的次数,以及不同次数之间的偏差。

1、字幕作为数据输入流——Subtitles source

2、用一个spout读取一个文件(socket,通过HTTP,或者其他)——ReadSubtitles Spout

3、文本行被spout传给一个bolt,再被bolt按单词切割——SeparateWordsBolt

4、单词流被传给另一个bolt,在这里每个单词与一张政治人名列表比较。每遇到一个匹配的名词,第二个bolt在数据库中为这个名词加上1——PoliticanNameCounterBolt

可以随时查询数据库查看结果,而且这些技术是随着数据到达实时更新。

在整个Storm集群定义每个bolt和spout的并行性级别,就可以无限地扩展拓扑结构。

有哪些典型的Storm应用案例?

数据处理流——如上例,不像其他的流处理系统,Storm不需要中间队列

连续计算——连续发送数据到客户端,使它们能够实时更新并显示结果,如网站指标

分布式远程过程调用——频繁的CPU密集性操作并行化

3、Storm组件

对于一个Storm集群,一个连续运行的主节点组织若干节点工作。

在Storm集群中,有两类节点:主节点master node和工作节点worker nodes。主节点运行着一个叫做Nimbus的守护进程。这个守护进程负责在集群中分发代码,为工作节点分配任务,并监控故障,Supervisor守护进程作为拓扑的一部分运行在工作节点上。一个Storm拓扑结构在不同的机器上运行着众多的工作节点。

因为Storm在Zookeeper或者本地磁盘上维持所有的集群状态,守护进程可以是无状态的而且失效或重启时不会影响整个系统的健康。

在系统底层,Storm使用zeromq。这是一种先进,可嵌入的网络通讯库,它提供的绝妙功能使Storm成为可能。

下面列出一些zeromq的特性:

  • 一个并行架构的Socket库
  • 对于集群产品和超级计算,比TCP快
  • 可通过inproc(进程内),IPC(进程间),TCP和multicase(多播协议)通信
  • 异步IO的可扩展的多核消息传递应用程序
  • 利用fanout(扇出)、pub-sub(发布订阅),pipeline(管道)、REQ-REP(请求答应)等实现N-N连接

备注:Storm用push/pull sockets

4、Storm的特性

  • 简化编程:使用storm,大大降低实现实时处理的复杂性
  • 开发简单:基于JVM的语言开发更容易,但是在Storm上可以使用其他任何语言进行开发,也有现成的中间见。
  • 容错:Storm集群会关注工作节点状态,如果宕机必要的时候会重新分配任务
  • 可扩展:所有需要为扩展集群所做的工作就是增加机器。Storm会在新机器就绪时向它们分配任务
  • 可靠性:所有消息都可保证至少处理一次。如果出错了,消息可能处理不只一次,不过永远不会丢失消息。???(是不新版的zeromq支持持久化了?)
  • 快速:速度是驱动Storm设计的一个关键因素
  • 事务性:可以为几乎任何计算机得到恰好一次消息语义。

参考链接

http://ifeve.com/getting-started-with-storm-1/

Storm入门之第一章的更多相关文章

  1. storm入门教程 第一章 前言[转]

    1.1   实时流计算 互联网从诞生的第一时间起,对世界的最大的改变就是让信息能够实时交互,从而大大加速了各个环节的效率.正因为大家对信息实时响应.实时交互的需求,软件行业除了个人操作系统之外,数据库 ...

  2. storm入门教程 第一章 前言

    转自:http://blog.linezing.com/?p=1847 storm:http://www.cnblogs.com/panfeng412/tag/Storm/ http://blog.l ...

  3. 《进击吧!Blazor!》系列入门教程 第一章 8.部署

    <进击吧!Blazor!>是本人与张善友老师合作的Blazor零基础入门教程视频,此教程能让一个从未接触过Blazor的程序员掌握开发Blazor应用的能力. 视频地址:https://s ...

  4. Storm入门教程 第二章 构建Topology[转]

    2.1 Storm基本概念 在运行一个Storm任务之前,需要了解一些概念: Topologies Streams Spouts Bolts Stream groupings Reliability ...

  5. C语言编程入门之--第一章初识程序

    第一章 初识程序 导读:计算机程序无时不刻的影响着人类的生活,现代社会已经离不开程序,程序的作用如此巨大,那么程序到底是什么呢?本章主要讨论程序的概念,唤起读者对程序的兴趣,同时对C语言程序与其它语言 ...

  6. 【php学习】PHP 入门经典第一章笔记

    第一章: php在线手册:http://php.net/manual/zh/index.php 在开始学习PHP之前,先来看一个合格的PHP程序员今后应具备哪些知识,这里只是笔者的一些总结,希望对读者 ...

  7. 读阮一峰老师 es6 入门笔记 —— 第一章

    鉴于最近用 vuejs 框架开发项目,其中有很多涉及到 es6 语法不太理解所以便认真地读了一下这本书. 地址:http://es6.ruanyifeng.com/#README 第一章:let ,c ...

  8. 【js 笔记】读阮一峰老师 es6 入门笔记 —— 第一章

      鉴于最近用 vuejs 框架开发项目,其中有很多涉及到 es6 语法不太理解所以便认真地读了一下这本书. 地址:http://es6.ruanyifeng.com/#README 第一章:let ...

  9. Storm入门之第二章

    1.准备开始 本章创建一个Storm工程和第一个Storm拓扑结构. 需要提供JER版本在1.6以上,下载地址http://www.java .com/downloads/. 2.操作模式 Storm ...

随机推荐

  1. ASP.NET没有魔法——ASP.NET MVC 与数据库大集合

    ASP.NET没有魔法——ASP.NET与数据库 ASP.NET没有魔法——ASP.NET MVC 与数据库之MySQL ASP.NET没有魔法——ASP.NET MVC 与数据库之ORM ASP.N ...

  2. 如何判断Linux 是32位还是64位

    .运行 'uname -m' 命令 上面的命令内涵太多了,可以用这个参数直指人心:'uname -m' . 例如,在我的系统里,它显示了以下信息: $ uname -m i686

  3. thrift例子:python客户端/java服务端

    java服务端的代码请看上文. 1.说明: 这两篇文章其实解决的问题是,当使用python去访问大数据线上集群的时候,遇到两个问题: 1)python-hadoop和python-hive相关包链接不 ...

  4. MySql5.7安装及配置

    MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司.MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS ...

  5. Nhibernate/Hibernate 使用多参数存儲過程 出現could not execute query,Could not locate named parameter等錯誤解決

    <?xml version="1.0" encoding="utf-8" ?> <hibernate-mapping xmlns=" ...

  6. 如何删除错误提交的 git 大文件

    早上小伙伴告诉我,他无法拉下代码,我没有在意.在我开始写代码的时候,发现我的 C 盘炸了.因为我的磁盘是苏菲只有 256G 放了代码就没空间了,于是我查找到了原来是我的代码占用了居然有 2000+M ...

  7. 张高兴的 Xamarin.Android 学习笔记:(一)环境配置

    最近在自学 Xamarin 和 Android ,同时发现国内在做 Xamarin 的不多.我在自学中间遇到了很多问题,而且百度到的很多教程也有些过时,现在打算写点东西稍微总结下,顺便帮后人指指路了. ...

  8. python 基础大纲

    机器语言: 特点:计算机能够看懂的0和1去写程序 优点:程序运行速度快 缺点:开发效率低 汇编语言: 特点:用一些英文标签代替一串而精致数字去写程序 优点:比机器语言好一点,操作系统内大量使用汇编语言 ...

  9. jsp与servlet联合处理

    通过model1 或者说 model2 我们知道的mvc 的分层思想, 在model1 中jsp 通负责显示,有负责控制逻辑结构, 那么怎么做呢,看下面的请求过程. <?xml version= ...

  10. 2年Java开发工作经验面试总结

    最近换了个公司,从三月底开始面,面到四月底,面了有快二十家公司.我是一个喜欢总结经验的人,每经过一场面试,我在回来的路上都会仔细回想今天哪些问题可以答的更好,或者哪些问题是自己之前没遇到过的,或者是哪 ...