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 ...
随机推荐
- java.lang.ClassNotFoundException: org.apache.commons.beanutils.DynaBean
项目报错:java.lang.ClassNotFoundException: org.apache.commons.beanutils.DynaBean 解决方法: 在pom.xml中加入如下依赖: ...
- linux环境中设置jacoco覆盖率
cd /alidata1/admin/za-themis pkill -9 -f za-themis #CATALINA_HOME=/root/za-tomcat #CATALINA_BASE=/ro ...
- (C++)i++和++i,哪个效率高一些
在看<程序员面试笔试宝典>时,发现了这样一个问题,书中只给出了++i的效率高一些,但并没有给出具体的解释和说明. 在网上找到下面的答案: 1.从高级层面上解释 ++i 是i=i+1,表达式 ...
- 程序员们必备的10款免费jquery插件
本周带来10款免费的jquery插件.如果你也有好的作品,欢迎分享到社区中来,在得到帮助的同时,也能与更多人分享来自你的作品. jQuery导航菜单置顶插件 - stickyUp . 在线演示 sti ...
- 相似qq的IM聊天应用源代码
这个是IM聊天应用源代码,该应用IM支持实现XMPP,以及图片和表情,语音.消息回执等功能,基本覆盖了常见的im应用的功能了,大家能够參考一下吧. 源代码下载:http://code.662p.com ...
- WebService 之 身份验证
在项目开发,我们经常会使用WebService,但在使用WebService时我们经常会考虑到了WebService是安全问题,很容易想到通过一组用户名与密码来防止非法用户的调用 . 一.Networ ...
- HDU1698:Just a Hook(线段树区间更新)
Problem Description In the game of DotA, Pudge’s meat hook is actually the most horrible thing for m ...
- 本地文件夹变远程仓库并且提交Github
//初始化本地仓库 $ git init Initialized empty Git repository in C:/Users/root/Desktop/vue-music/.git/ root@ ...
- load()和get()的区别
区别1:如果数据库中,没有userId的对象.如果通过get方法加载,则返回的是一个null:如果通过load加载,则返回一个代理对象,如果后面代码如果调用user对象的某个属性(比如user.get ...
- 转义字符 HTML 字符实体 < >: &等
在 HTML 中,某些字符是预留的. 在 HTML 中不能使用小于号(<)和大于号(>),这是因为浏览器会误认为它们是标签. 如果希望正确地显示预留字符,我们必须在 HTML 源代码中使用 ...