Storm入门教程

1. Storm基础

Storm

Storm主要特点

Storm基本概念

Storm调度器

Storm配置

Guaranteeing Message Processing(消息处理保障机制)

Daemon Fault Tolerance(守护线程容错机制)

理解Storm拓扑的并行

Tutorial

Local模式

在生产环境中运行Topologies



Storm

Storm是一个免费开源的分布式实时计算系统。Storm令无边界的流数据计算变得容易,弥补了Hadoop批处理所不能满足的实时要求。

Storm常用在实时分析、在线机器学习、持续计算、分布式远程调用和ETL等场景中。Storm处理速度快,单节点每秒可处理百万级元组的数据;同时,Storm是可扩展的、有容错性,容易部署与操作。

Storm已整合现有的消息队列和数据库系统。

Storm主要特点

  • 简单的API接口

Storm的API简单且容易使用。当编写Storm程序时,处理的是元组组成的流数据,一个元组是一组值的集合。元组包含任何对象类型,当使用自定义数据类型时,只需要简单的使用storm的序列化器注册一下即可。

Storm提供了三种抽象的组件,分别是Spouts、Bolts和Topologies。Spouts组件是负责接收或生产处理所需的数据源。通常spout从消息队列中读取数据,比如Kestrel、RabbitMQ或是Kafka,也可以从其他地方生产自己需要的数据源,比如调用Twitter streaming API。Spout已经和大部分的消息队列集成。

Bolts处理接收到的数据流,生产出新的数据流提供给其他组件调用。大部分的计算逻辑都由bolt处理。比如函数处理、过滤器、join、聚集、甚至是数据库调用等等。

一个Topologie组件就是由多个spout和bolt组成的网络结构。网络中的每一个边线代表一个bolt组件订阅的数据流,这个数据流可能来至spout组件,也可能来至其他bolt组件。一个Topology组件就是复杂的流处理计算过程。Topology部署在服务器上就会一直运行。

Storm提供了一种本地运行模式,来模拟集群处理,这对开发和测试非常有用。客户端使用strom命令提交一个Topology到集群上运行。

  • 可扩展性

Storm topologies先天并行计算并且运行在集群中。不同的topology的部分能调整它们的并行度,如client可通过“rebalance”命令及时调整正在运行的topologies的并行度。

先天并行计算是指它在低延迟的前提下保证了高吞吐量。如,在单台节点(处理器:2x Intel E5645@2.4Ghz,内存:24GB)上每秒处理百万级消息,消息约为100字节。

  • 容错性

Storm有容错机制,当工作节点宕了,storm会尝试重启。如果节点宕机,会重启另启动一个节点。

Storm的守护进程Nimbus和Supervisors都是无状态的,如果它们死掉,那么它们将会重启就像什么也没发生。也就就是说,即使你用kill -9强制杀死这两个进程那么也不会影响集群的正常运行。

  • 无数据丢失

Storm确保每个元组被处理。Storm的机制之一:能有效地记录元组的lineage。

Storm的抽象组件确保了数据至少处理一次,即使使用消息队列系统失败时,也能确保消息被处理。

通过Storm的抽象组件Trident能确保消息只被处理一次。

  • 支持多种编程语言

Storm从一开始就设计为能被各种编程语言使用。Storm用Thrift定义和提交topologies。由于Thrift能被任何一种编程语言使用,因此,topologies也能被任何一种编程语言定义和使用。

同样,spouts和bolts能用任何一种语言定义。不是基于JVM实现的Storm最贱spouts和bolts可以通过JSON协议通信。

  • 容易部署和操作

    Storm集群易部署,要求配置最少就可以启动并运行。

  • 免费开源

Storm遵循开源协议Apache License, Version 2.0

Storm有庞大的生态系统库和工具:

1.Spouts:spouts已经和常用消息队列系统JMS、Kafka、Redis pub/sub等进行了整合。

2.storm-state:storm-state使计算中的内存状态易管理和可靠(通过分布式文件系统持久化)。

3.数据库集成:bolts已整个不同的数据库如MongoDB,RDBM,Cassandra等。

4.其他功能。

【原】Storm及特点的更多相关文章

  1. 【原】storm源码之理解Storm中Worker、Executor、Task关系

    Storm在集群上运行一个Topology时,主要通过以下3个实体来完成Topology的执行工作:1. Worker(进程)2. Executor(线程)3. Task 下图简要描述了这3者之间的关 ...

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

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

  3. 【原】Storm 入门教程目录

    Storm入门教程 1. Storm基础 Storm Storm主要特点 Storm基本概念 Storm调度器 Storm配置 Guaranteeing Message Processing(消息处理 ...

  4. 【原】Storm分布式RPC

    5. Storm高级篇 序列化 分布式RPC High level overview LinearDRPCTopologyBuilder Local mode DRPC Remote mode DRP ...

  5. 【原】Storm序列化

    5. Storm高级篇 序列化 Dynamic typing Custom serialization Java serialization Component-specific serializat ...

  6. 【原】Storm学习资料推荐

    4.Storm学习资料推荐 书籍: 英文: Learning Storm: Ankit Jain, Anand Nalya: 9781783981328: Amazon.com: Books Gett ...

  7. 【原】Storm实战

    3.Storm实战 如何新建一个Storm 项目 本文简要概括如何新建一个Storm项目,步骤如下: 1.添加Storm 相关jar添加到类路径上. 2.如果使用多语言特性,将多语言实现的目录加到cl ...

  8. 【原】Storm环境搭建

    2.Storm环境搭建 单机 ... 集群 ... 搭建Storm开发环境 搭建Storm开发环境主要概括为以下两步: 1.下载Storm发行稳定版,然后解压,最后把解压后的bin/文件所在目录添加到 ...

  9. 【原】Storm Local模式和生产环境中Topology运行配置

    Storm入门教程 1. Storm基础 Storm Storm主要特点 Storm基本概念 Storm调度器 Storm配置 Guaranteeing Message Processing(消息处理 ...

  10. 【原】Storm Tutorial

    Storm入门教程 1. Storm基础 Storm Storm主要特点 Storm基本概念 Storm调度器 Storm配置 Guaranteeing Message Processing(消息处理 ...

随机推荐

  1. C#中字符串驻留技术

    转自:http://www.cnblogs.com/Charles2008/archive/2009/04/12/1434115.html MSDN概念:公共语言运行库通过维护一个表来存放字符串,该表 ...

  2. Hibernate简介2

    一.主配置 ◆查询缓存,同下面讲的缓存不太一样,它是针对HQL语句的缓存,即完全一样的语句再次执行时可以利用缓存数据.但是,查询缓存在一个交易系统(数据变更频繁,查询条件相同的机率并不大)中可能会起反 ...

  3. PHP运算符及php取整函数

    ceil -- 进一法取整 说明 float ceil ( float value ) 返回不小于 value 的下一个整数,value 如果有小数部分则进一位.ceil() 返回的类型仍然是 flo ...

  4. properties配置文件中文乱码解决方法

    方法1   properties文件的格式一般为: ROOT=http://localhost:8080/BNCAR2/ ROOTPATH=E:/ws2/BNCAR2/rel/ MALL_PARTS_ ...

  5. 什么是 .manifest 文件

    恩,为了大家都能很方便的理解,我将尽量简单通俗地进行描述. [现象]对这个问题的研究是起源于这么一个现象:当你用VC++2005(或者其它.NET)写程序后,在自己的计算机上能毫无问题地运行,但是当把 ...

  6. SQLite入门与分析(四)---Page Cache之事务处理(3)

    写在前面:由于内容较多,所以断续没有写完的内容. 11.删除日志文件(Deleting The Rollback Journal)一旦更改写入设备,日志文件将会被删除,这是事务真正提交的时刻.如果在这 ...

  7. Android 自定义android控件EditText边框背景

    在我们进行Android应用界面设计和时候,为了界面风格的统一,我们需要对一些控件进行自定义.比如我们的应用采用的蓝色风格,但是 android的EditText控制获得焦点后显示的却是黄色的边框背景 ...

  8. 微信5.4 AndroidManifest.xml

    <?xml version="1.0" encoding="utf-8" ?> - <manifest android:versionCode ...

  9. C#创建XML文件并保存

    随着XML的普及以及在动态WEB应用程序中大量应用,如何通过.NET创建,删除,修改XML文件变的也来也重要了.一个简单的概念是,XML文件跟大的文本文件并没有什么区别,同时它是先于.NET出现,很多 ...

  10. mysqld -install命令时出现install/remove of the service denied错误的原因和解决办法

    原因:没有使用管理员权限 解决方法:使用管理员权限打开cmd,然后运行mysqld -install,服务安装成功