Storm 简单介绍
Nimbus :负责资源分配和任务调度, 把任务相关的元信息写入Zookeeper 对应文件夹。
Supervisor :负责接受nimbus 分配的任务,启动和停止属于自己管理的worker 进程。
Worker :执行详细处理组件逻辑的进程。
Executor :执行spout/bolt 的线程
Task : worker 中每个spout/bolt 的线程称为一个task.
Topology : storm 中执行的实时应用程序,消息在各个组件间流动形成逻辑上的拓扑结构。
Spout :在一个topology 中产生源数据流的组件, Spout 是一个主动的角色。
Bolt :在一个topology 中接受数据然后运行处理的组件。
Bolt 能够运行过滤、函数操作、合并、写数据库等不论什么操作。Bolt 是一个被动的角色。
Tuple :消息传递的基本单元。
Stream :源源不断传递的tuple 就组成了stream 。
stream grouping :即消息的partition 方法。Storm 中提供若干种有用的grouping 方式。包含shuffle, fields hash, all, global, none, direct 和localOrShuffle 等。
特点
多语言编程。能够在Storm 之上使用各种编程语言。默认支持Clojure 、Java 、Ruby 和Python 。要添加对其它语言的支持。仅仅需实现一个简单的Storm 通信协议就可以。
容错性。Storm 会管理工作进程和节点的故障。假设您执行的计算过程中有错误, Storm 将又一次分配任务;此外,通过Transactional Topology 。 Storm 能够保证每一个tuple“ 被且仅被处理一次”。Storm 确保一个计算能够一直执行下去(或直到你杀死计算)。
水平扩展。计算是在多个线程、进程和server之间并行进行的。
高速。
系统的设计保证了消息能得到高速的处理。使用?
MQ 作为其底层消息队列。
系统可靠性。Storm 这个分布式流计算框架是建立在Zookeeper 的基础上的。大量系统执行状态的元信息都序列化在Zookeeper 中。这样,当某一个节点出错时。相应的关键状态信息并不会丢失,换言之Zookeeper 的高可用保证了Storm 的高可用。
Storm 简单介绍的更多相关文章
- Python常用的库简单介绍一下
Python常用的库简单介绍一下fuzzywuzzy ,字符串模糊匹配. esmre ,正则表达式的加速器. colorama 主要用来给文本添加各种颜色,并且非常简单易用. Prettytable ...
- [原创]关于mybatis中一级缓存和二级缓存的简单介绍
关于mybatis中一级缓存和二级缓存的简单介绍 mybatis的一级缓存: MyBatis会在表示会话的SqlSession对象中建立一个简单的缓存,将每次查询到的结果结果缓存起来,当下次查询的时候 ...
- 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍
一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目的是为了数据分析.它提供了大量高级的数据结构和对数据处理的方法. pandas 有两个主要的数据结构 ...
- 利用Python进行数据分析(4) NumPy基础: ndarray简单介绍
一.NumPy 是什么 NumPy 是 Python 科学计算的基础包,它专为进行严格的数字处理而产生.在之前的随笔里已有更加详细的介绍,这里不再赘述. 利用 Python 进行数据分析(一)简单介绍 ...
- yii2的权限管理系统RBAC简单介绍
这里有几个概念 权限: 指用户是否可以执行哪些操作,如:编辑.发布.查看回帖 角色 比如:VIP用户组, 高级会员组,中级会员组,初级会员组 VIP用户组:发帖.回帖.删帖.浏览权限 高级会员组:发帖 ...
- angular1.x的简单介绍(二)
首先还是要强调一下DI,DI(Denpendency Injection)伸手获得,主要解决模块间的耦合关系.那么模块是又什么组成的呢?在我看来,模块的最小单位是类,多个类的组合就是模块.关于在根模块 ...
- Linux的简单介绍和常用命令的介绍
Linux的简单介绍和常用命令的介绍 本说明以Ubuntu系统为例 Ubuntu系统的安装自行百度,或者参考http://www.cnblogs.com/CoderJYF/p/6091068.html ...
- iOS-iOS开发简单介绍
概览 终于到了真正接触IOS应用程序的时刻了,之前我们花了很多时间去讨论C语言.ObjC等知识,对于很多朋友而言开发IOS第一天就想直接看到成果,看到可以运行的IOS程序.但是这里我想强调一下,前面的 ...
- iOS开发多线程篇—多线程简单介绍
iOS开发多线程篇—多线程简单介绍 一.进程和线程 1.什么是进程 进程是指在系统中正在运行的一个应用程序 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 比如同时打开QQ.Xcod ...
随机推荐
- 强连通tarjan模版
#include<stdio.h> #include<iostream> #include<math.h> #include<queue> #inclu ...
- SecureRandom-随机数的生成
随机数:算法+种子 随机数据不随机 学习了:https://www.cnblogs.com/deng-cc/p/8064481.html StringBuffer buffer = new Strin ...
- Framework连接oracle数据库以及Cognos服务器出现错误
1:Framework连接oracle数据库时出现下面错误信息 环境: win2008R2 cognos10.2.1, 服务器上已经安装oracle11.2 content manager连接的也是 ...
- jquery制作一个简单的轮播
效果图: 演示地址: http://ae6623.cn/demo/slider/index.html 思路: 利用css的定位属性 left 进行调整图片的显示,每次点击上一页下一页按钮的时候,-图片 ...
- [Functional Programming] mapReduce over Async operations and fanout results in Pair(rejected, resolved) (fanout, flip, mapReduce)
This post is similar to previous post. The difference is in this post, we are going to see how to ha ...
- 如何使用FF的Firebug组件中的net工具查看页面元素加载消耗时间
1.安装FF的Firebug组件:点击FF的Tools的Add-ons菜单,输入Firebug关键字,并选择合适的版本Install. 2.安装完毕后地址栏右边会出现一个小虫图标,右边还有一个下拉箭头 ...
- js绝招
1.JS判断 function IsDigit(cCheck) { //判断是否是数字return (('0'<=cCheck) && (cCheck<='9')); } ...
- Hibernate(十三)命名查询-批量处理和调用存储过程
一.命名查询 HQL语句混杂在代码之间将破坏代码的可读性 Hibernate允许在映射配置文件中定义字符串形式的查询语句,这种查询方式称为命名查询 二.建立数据表和持久化类 建立数据表 create ...
- Python 图形界面(GUI)设计
不要问我为什么要用 Python 来做这种事,我回到“高兴咋地”也不是不可以,总之好奇有没有好的解决方案.逛了一圈下来,总体上来说,Python 图形界面有以下几个可行度比较高的解决方案. 1. py ...
- svn 和 git的区别
1.速度: 克隆一份全新的目录,以同样拥有五个(才五个)分支来说,SVN是同时复製5个版本的文件,也就是说重复五次同样的动作.而Git只是获取文件的每个版本的元素,然后只载入主要的分支(master) ...