您的位置:首页 > 其它

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处理过程



一个Spout可以发送给多个Bolt,一个Bolt可以接受多个Spout。如下图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: