storm简介


1 Storm简介:
 
Storm是Twitter开源的一个类似于Hadoop的实时数据处理框架。

Storm能处理高频数据和大规模数据的实时流计算解决方案将被应用于实时搜索,高频交易和社交网络上。而流计算并不是最近的热点,
金融机构的交易系统正是一个典型的流计算处理系统,它对系统的实时性和一致性有很高要求。

官网地址: http://storm.apache.org/
下载地址: http://storm.apache.org/downloads.html
Javadoc文档地址: http://storm.apache.org/documentation/Home.html ---> 点击链接Javadoc

2 HADOOP与STORM比较:

2.1) 数据来源:HADOOP是HDFS上某个文件夹下的可能是成TB的数据,

   STORM是实时新增的某一笔数据,做不了全量计算

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

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

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

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

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

2..6.1)storm和mq交互过程图:


storm简介
 

2.1 storm和kafaka区别:

kafka: 我们不生产水,我们只是大自然的搬运工----> 搬运

storm: 海水转换为淡水 ---> 转换

3  Storm术语解释

3.0) storm里面跑的数据抽象为流,stream(类比为火车),

        流这就意味着,

        a 永不停歇 b 内容多样化,可以为视频 音频 文本等

        火车: steam

        火车车厢:  流的单位:tuple

        火车始发站:spout, 是stream的数据源,接受storm系统外的数据作为流的来源,

                             比如京沪高铁北京始发站

        火车途经的站点: bolt, (比如 天津站 德州站 济南站 泰安站 枣庄站),每个站点需要上下旅客

                                      上下旅客就是对流数据的处理,最后一个bolt(京沪高铁 上海站)就是这次流的终点

                                      bolt: stream中对tuple做处理的

       G36车次:  从北京站(spout)接受客源,

                        经过每个站点(天津站 德州站 济南站 泰安站 枣庄站)下上下旅客

                         最后到达上海终点站, 这个车次的整个过程对应storm就是topology,

3.1) Topologies 用于封装一个实时计算应用程序的逻辑,类似于Hadoop的MapReduce Job
3.2)  Stream 消息流,是一个没有边界的tuple序列,这些tuples会被以一种分布式的方式并行地创建和处理
3.3) Spouts 消息源,是消息生产者,他会从一个外部源读取数据并向topology里面面发出消息:tuple(元组)
3.4) Bolts 消息处理者,所有的消息处理逻辑被封装在bolts里面,处理输入的数据流并产生输出的新数据流,可执行过滤,聚合,查询数据库等操作
3.5) Task 每一个Spout和Bolt会被当作很多task在整个集群里面执行,每一个task对应到一个线程.
3.6) Stream groupings 消息分发策略,定义一个Topology的其中一步是定义每个tuple接受什么样的流作为输入,stream grouping就是用来定义一个stream应该如果分配给Bolts们.

 3.7) tuple: 数据源记录一条条的产生,连续起来就是一个流,可以简单理解成每一条记录都是一个tuple,

每一个tuple里面存放的就是这一行大单词list(列表),

或者你就认为过来的这一行就是一个数据(不用切分 因此也没有list集合),那么过来的每一样都可以有自己这行对应的name,有点类似于Hadoop的<k1,v1>

概念之间关系图:


storm简介
 
storm简介
 

storm流处理过程图:


storm简介
 


storm简介
 

 

 
storm简介
 


 

 4 hadoop和storm对比:

 任务名称第一个任务第二个任务任务间传递数据格式
mapreduceJobTrackerTaskTrackerJobmapreducekv
stormnimbussupervisortopologyspoutbolttuple

相关推荐