Strom简介及处理过程
2015-09-15 23:25
211 查看
简介
Storm是Twitter开源的一个类似于Hadoop的实时数据处理框架。
Storm能实现高频数据和大规模数据的实时处理。
官网资料显示storm的一个节点1秒钟能够处理100万个100字节的消息(IntelE5645@2.4Ghz的CPU,24GB的内存)
Storm与Hadoop比较
数据来源:HADOOP处理的是HDFS上TB级别的历史数据数据,STORM处理的是实时新增的某一笔实时数据;
处理过程:HADOOP是分MAP阶段到REDUCE阶段,STORM是由用户定义处理流程,流程中可以包含多个步骤,每个步骤可以是数据源(SPOUT)或处理逻辑(BOLT);
是否结束:HADOOP最后是要结束的,STORM是没有结束状态,到最后一步时,就停在那,直到有新数据进入时再从头开始;
处理速度:HADOOP是以处理HDFS上TB级别数据为目的,处理速度慢,STORM是只要处理新增的某一笔数据即可,可以做到很快;
适用场景:HADOOP是在处理批量数据时用的,不讲究时效性,STORM是处理某一新增数据时用的,讲时效性。
Storm中的一些核心概念
Topology:一个实时计算应用程序逻辑上被封装在Topology对象中,类似Hadoop中的作业。与作业不同的是,Topology会一直运行直到显示的杀死它。
Nimbus:负责资源分配和任务调度,类似Hadoop中的JobTracker。
Supervisor:负责接受Nimbus分配的任务,启动和停止属于自己管理的Worker进程,类似与Hadoop中的TaskTracker。
Worker:运行具体处理组件逻辑的进程。
Executor:Strom0.8之后,Executor为Worker进程中的具体的物理线程,同一个Spout/Bolt的Task可能会共享一个物理线程,一个Executor中只能运行隶属于同一个Spout/Bolt的Task。
Task:每一个Spout/Bolt具体要做的工作,也是各个节点之间进行分组的单位。
Spout:在Topology中产生源数据的组件。通常Spout获取数据源(如Kafka、MQ等读取数据),然后调用nextTuple函数,发射数据供Bolt消费。
Bolt:在Topology中接受Spout的数据然后执行处理的组件。Bolt可以执行过滤、函数操作、合并、写数据库等任何操作。Bolt在接收到消息后会调用execute函数,用户可以在其中执行自己想要的操作。
Tuple:消息传递的基本单元。
Stream:源源不断传递的Tuple组成了Stream。
Stream分组:即消息的分区(partition)方法。Storm中提供若干种实用的分组方式,包括Shuffle、Fields、All、Global、None、Direct和Local or shuffle等。
Stream处理过程
![](https://img-blog.csdn.net/20150915235324188?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
一个Spout可以发送给多个Bolt,一个Bolt可以接受多个Spout。如下图:
Storm是Twitter开源的一个类似于Hadoop的实时数据处理框架。
Storm能实现高频数据和大规模数据的实时处理。
官网资料显示storm的一个节点1秒钟能够处理100万个100字节的消息(IntelE5645@2.4Ghz的CPU,24GB的内存)
Storm与Hadoop比较
数据来源:HADOOP处理的是HDFS上TB级别的历史数据数据,STORM处理的是实时新增的某一笔实时数据;
处理过程:HADOOP是分MAP阶段到REDUCE阶段,STORM是由用户定义处理流程,流程中可以包含多个步骤,每个步骤可以是数据源(SPOUT)或处理逻辑(BOLT);
是否结束:HADOOP最后是要结束的,STORM是没有结束状态,到最后一步时,就停在那,直到有新数据进入时再从头开始;
处理速度:HADOOP是以处理HDFS上TB级别数据为目的,处理速度慢,STORM是只要处理新增的某一笔数据即可,可以做到很快;
适用场景:HADOOP是在处理批量数据时用的,不讲究时效性,STORM是处理某一新增数据时用的,讲时效性。
Storm中的一些核心概念
Topology:一个实时计算应用程序逻辑上被封装在Topology对象中,类似Hadoop中的作业。与作业不同的是,Topology会一直运行直到显示的杀死它。
Nimbus:负责资源分配和任务调度,类似Hadoop中的JobTracker。
Supervisor:负责接受Nimbus分配的任务,启动和停止属于自己管理的Worker进程,类似与Hadoop中的TaskTracker。
Worker:运行具体处理组件逻辑的进程。
Executor:Strom0.8之后,Executor为Worker进程中的具体的物理线程,同一个Spout/Bolt的Task可能会共享一个物理线程,一个Executor中只能运行隶属于同一个Spout/Bolt的Task。
Task:每一个Spout/Bolt具体要做的工作,也是各个节点之间进行分组的单位。
Spout:在Topology中产生源数据的组件。通常Spout获取数据源(如Kafka、MQ等读取数据),然后调用nextTuple函数,发射数据供Bolt消费。
Bolt:在Topology中接受Spout的数据然后执行处理的组件。Bolt可以执行过滤、函数操作、合并、写数据库等任何操作。Bolt在接收到消息后会调用execute函数,用户可以在其中执行自己想要的操作。
Tuple:消息传递的基本单元。
Stream:源源不断传递的Tuple组成了Stream。
Stream分组:即消息的分区(partition)方法。Storm中提供若干种实用的分组方式,包括Shuffle、Fields、All、Global、None、Direct和Local or shuffle等。
Stream处理过程
一个Spout可以发送给多个Bolt,一个Bolt可以接受多个Spout。如下图:
相关文章推荐
- 算法导论 使用两个栈实现队列
- CSS3弹性盒模型flexbox完整版教程
- 4112开发板的加载U盘的问题
- 初始化清理
- Java集合Set、List、Map的遍历方法
- UVALive 5985 Robbing Gringotts(费用流 + 折半状压)
- NoClassDefFoundError 和ClassNotFoundException的区别
- 流程控制
- 万物皆对象
- eclipse 上传项目到git
- 异常
- MySQL高可用方案选型参考
- Idea 工具的一些使用
- Linux命令备忘实例(11)——首尾获取
- 数据库连接池(数据源)2: 开源数据源的使用DBCP和C3P0
- android高仿微信UI点击头像显示大图片效果
- hibernate封装查询,筛选条件然后查询
- 2015.9.15 自定义异常的完整练习
- HashMap遍历 key value
- 详解java类的生命周期