1.Storm是什么?

实时处理数据,特点:低延迟、高可用、分布式、可扩展、数据不丢失。提供简单容易理解的接口,便于开发。

2.Storm与Hadoop的区别?

  1. Storm用于实时计算,Hadoop用于离线计算。
  2. Storm处理的数据保存在内存中,源源不断;Hadoop处理的数据保存在文件系统中,一批一批。
  3. Storm的数据通过网络传输进来;Hadoop的数据保存在磁盘中。
  4. Storm与Hadoop的编程模型相似

                   

storm sniffer抢中概率高吗 storm period_storm sniffer抢中概率高吗

 

  3.Storm核心组件

          

storm sniffer抢中概率高吗 storm period_storm sniffer抢中概率高吗_02

         Nimbus:负责分配任务,任务调度,对任务进行监控

         Supervisor:当前物理机上的管理者,接受Nimbus分配的任务,启动和停止属于自己管理的worker进程。通过配置文件可以设置当                                  前supervisor启动多少个worker.

        Worker:执行具体任务的组建,任务有两种两类型,一种是Spout任务,一种是Bolt任务。一个worker中可同时存在多个Spout任务和                        多个Bolt任务。

       Task:worker中每一个Spout或者Bolt的线程称为一个task,在storm0.8之后,task不再与物理线程对应,不同spout/bolt的task可能会共                   享一个物理线程,该线程称为executor。默认情况下executor=thread=task

     4.Storm编程模型(Mr.Mao的图)

        

storm sniffer抢中概率高吗 storm period_数据_03

     Topology:Storm中运行的一个实时应用程序的名称。

     Spout:在一个topology中获取源数据流的组件,通常情况下spout会从外部数据源中读取数据,然后转换为topology内部的源                   数据。接受外部数据源的组件,将外部数据源转化成Storm内部的数据,以Tuple为基本的传输单元下发给Bolt

      Bolt:  接受Spout发送的数据,或上游的bolt的发送的数据。根据业务逻辑进行处理。发送给下一个Bolt或者是存储到某种介                  质 上。介质可以是Redis可以是mysql,或者其他。

     Tuple:一次消息传递的基本单元,理解为一组消息就是一个Tuple。Storm内部中数据传输的基本单元,里面封装了一个List                     对象,用来保存数据。

     StreamGrouping:数据分组策略,7种:shuffleGrouping(Random函数),Non Grouping(Random函数),FieldGrouping(Hash取                                    模)、Local or ShuffleGrouping 本地或随机,优先本地

     Worker与topology:一个worker只属于一个topology,每个worker中运行的task只能属于这个topology。    反之,一个topology                                      包含多个worker,其实就是这个topology运行在多个worker上。

                                    一个topology要求的worker数量如果不被满足,集群在任务分配时,根据现有的worker先运行topology。                                      如果当前集群中worker数量为0,那么最新提交的topology将只会被标识active,不会运行,只有当集群有                                      了空闲资源之后,才会被运行。

   5.流式计算一般架构图

         (下面会一步一步实现这个流程敬请期待。。。)

          

storm sniffer抢中概率高吗 storm period_数据保存_04

         

  1. 其中flume用来获取数据。
  2. Kafka用来临时保存数据。
  3. Strom用来计算数据。
  4. Redis是个内存数据库,用来保存数据。