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. 一个简单的js计数器(web储存)。

    <span id="countspan"></span> <a href="#" onclick="countNumbe ...

  2. 1874 素数和最大 - Wikioi

    题目描述 Description 有一天萌萌哒Sevenkplus在跟素数们玩>_<...他玩着玩着突然想到一个问题!就是这样的:    从1到n这n个自然数中,选出一些数使得它们之间两两 ...

  3. hadoop 任务执行优化

    任务执行优化 1. 推测式执行: 如果jobtracker 发现有拖后的任务,会再启动一个相同的备份任务,然后哪个先执行完就会去kill掉另一个,因此会在监控页面上经常能看到正常执行完的作业会有被ki ...

  4. vncserver 添加用户

    1.在vncserver设置登录用户的信息   #vi /etc/sysconfig/vncservers   VNCSERVERS="1:root 2:wt" 此处添加用户   ...

  5. BZOJ 1697: [Usaco2007 Feb]Cow Sorting牛排序

    Description 农夫JOHN准备把他的 N(1 <= N <= 10,000)头牛排队以便于行动.因为脾气大的牛有可能会捣乱,JOHN想把牛按脾气的大小排序.每一头牛的脾气都是一个 ...

  6. Winform Datagridview 点击headercolumn排序

    /// <summary> /// 排序顺序 /// </summary> bool asc; /// <summary> /// Dgv点击排序 /// < ...

  7. Spring MVC Checkbox And Checkboxes Example

    In Spring MVC, <form:checkbox /> is used to render a HTML checkbox field, the checkbox values ...

  8. C++转换unicode utf-8 gb2312编码

    windows开发环境下用VC++6.0 对unicode .utf-8. gb2312 三种编码格式之间的转换方法: #include <iostream> #include <s ...

  9. HDU1412

    大水题.. 求集合的并 /* */ #include<algorithm> #include<iostream> #include<string.h> #inclu ...

  10. UINavigationController使用详解

    UINavigationController使用详解 有一阵子没有写随笔,感觉有点儿手生.一个多月以后终于又一次坐下来静下心写随笔,记录自己的学习笔记,也希望能够帮到大家. 废话少说回到正题,UINa ...