码迷,mamicode.com
首页 > 其他好文 > 详细

Storm的简介

时间:2015-07-31 21:51:12      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:

技术分享数据来源:HADOOP是HDFS上某个文件夹下的可能是成TB的数据,STORM是实时新增的某一笔数据;

 Hadoop与Storm的比较

技术分享处理过程:HADOOP是分MAP阶段到REDUCE阶段,STORM是由用户定义处理流程,流程中可以包含多个步骤,每个步骤可以是数据源(SPOUT)或处理逻辑(BOLT);

 

技术分享是否结束:HADOOP最后是要结束的,STORM是没有结束状态,到最后一步时,就停在那,直到有新数据进入时再从头开始;

 

技术分享处理速度:HADOOP是以处理HDFS上大量数据为目的,速度慢,STORM是只要处理新增的某一笔数据即可,可以做到很快;

 

技术分享适用场景:HADOOP是在要处理一批数据时用的,不讲究时效性,要处理就提交一个JOB,STORM是要处理某一新增数据时用的,要讲时效性;

 

与MQ对比:HADOOP没有对比性,STORM可以看作是有N个步骤,每个步骤处理完就向下一个MQ发送消息,监听这个MQ的消费者继续处理

 

hadoop,批处理,通过磁盘IO处理,吞吐量大

storm, 实时,  通过内存处理,  吞吐量小
-------------------------------------
mapreduce的组成由JobTracker和TaskTracker。其中,JobTracker是主节点,TaskTracker是从节点。
mapreduce执行的是job。job表示用户提交的一段计算代码。job在运行时,先提交给JobTracker,然后由JobTracker分给TaskTracker执行。
在job运行时,分为map阶段和reduce阶段。每个阶段中传递的数据单位是kv对。
 
storm的组成由nimbus和supervisor。其中,nimbus是主节点,supervisor是从节点。
storm执行的是topology。topology表示用户提交的一段计算代码。toplogy在运行时,先提交给nimbus,然后由nimbus分配给supervisor执行。
在topology运行时,分为spout阶段和bolt阶段。每个阶段中传递的数据单位是tuple。
 
 
 
 
设计思想
    在Storm是对流Stream的抽象,流是一个不间断的无界的连续tuple,注意Storm在建模事件流时,把流中的事件抽象为tuple即元组。

 

    Storm将流中元素抽象为Tuple,一个tuple就是一个值列表value list,list中的每个value都有一个name,并且该value可以是基本类型,字符类型,字节数组等,当然也可以是其他可序列化的类型。

 

    Storm认为每个stream都有一个stream源,也就是原始元组的源头,所以它将这个源头称为Spout。

 

    有了源头即spout也就是有了stream,那么该如何处理stream内的tuple呢。将流的状态转换称为Bolt,bolt可以消费任意数量的输入流,只要将流方向导向该bolt,同时它也可以发送新的流给其他bolt使用,这样一来,只要打开特定的spout(管口)再将spout中流出的tuple导向特定的bolt,又bolt对导入的流做处理后再导向其他bolt或者目的地。  
 
    以上处理过程统称为Topology即拓扑。拓扑是storm中最高层次的一个抽象概念,它可以被提交到storm集群执行,一个拓扑就是一个流转换图,图中每个节点是一个spout或者bolt,图中的边表示bolt订阅了哪些流,当spout或者bolt发送元组到流时,它就发送元组到每个订阅了该流的bolt(这就意味着不需要我们手工拉管道,只要预先订阅,spout就会将流发到适当bolt上)。
 
    拓扑的每个节点都要说明它所发射出的元组的字段的name,其他节点只需要订阅该name就可以接收处理。
 
 
术语解释:
技术分享Topologies 用于封装一个实时计算应用程序的逻辑,类似于Hadoop的MapReduce Job
技术分享Stream 消息流,是一个没有边界的tuple序列,这些tuples会被以一种分布式的方式并行地创建和处理
技术分享Spouts 消息源,是消息生产者,他会从一个外部源读取数据并向topology里面面发出消息:tuple
技术分享Bolts 消息处理者,所有的消息处理逻辑被封装在bolts里面,处理输入的数据流并产生输出的新数据流,可执行过滤,聚合,查询数据库等操作
技术分享Task 每一个Spout和Bolt会被当作很多task在整个集群里面执行,每一个task对应到一个线程.
技术分享Stream groupings 消息分发策略,定义一个Topology的其中一步是定义每个tuple接受什么样的流作为输入,stream grouping就是用来定义一个stream应该如果分配给Bolts们.
 
 

Storm的简介

标签:

原文地址:http://www.cnblogs.com/thinkpad/p/4693162.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!