简介数据库
Strom是一个开源的分布式流式计算系统,用来处理流式的数据,被称做为流式的hadoop,在电信行业,能够用来作大流量预警、终端营销、访问竞争对手产品从而作挽留等业务。本文将从storm在hadoop生态圈中所处位置、storm中术语、storm平台搭建、storm应用程序构建等详细介绍storm。数据结构
Strom在大数据生态圈中的位置架构
上图能够看出,Storm处于HDFS之上,可是并非说Storm只能是处理HDFS中数据,反而Storm的数据来源通常是Log日志或者是Kafka中数据,当数据经过Strom处理完成以后,其流向能够是HDFS、HBase、关系型数据库等。分布式
Strom是一个计算系统,在大数据处理中,咱们耳熟能详的计算系统是mapreduce,这张架构图看出storm和mapreduce是同级关系,而storm被称做是流式的hadoop。因此接下来将经过与mapreduce进行对比来介绍stormide
3.Strom经常使用术语介绍函数
Strom | MapReduce(基于hadoop2.X) | 描述 |
Nimbus | ApplicationMaster | MapReduce中Resourcemanager负责任务分配、资源申请,一样的在Strom中Nimbus负责代码的分发,任务的分配和调度工做 |
Supervisor | NodeManager | MapReducer中NodeManager负责资源的申请,工做进程启动和监控,Strom中Supervisor一样负责任务进程的启动和中止 |
Worker |
YarnChild | 真正负责任务处理的进程 |
Topology | MapReduce | 驱动程序 |
Strom架构Topology:经过Storm构建的应用程序描述了数据的来源、数据的处理逻辑和数据的流向。oop
Spout:Topology中的组件,经过Spout描述了数据的来源,Spout中有一个nextTuple()函数,该函数会不停的被调用,源数据的生成就在该函数中实现,而后数据流向下一节点,每一个Topology中只容许有一个Spout。大数据
Bolt:Topology中的组件,该组件接收上一节点(Spout或Bolt)发射过来的数据,该组件中有一个execute(Tuple tuple)方法,当接收到数据后该函数会被动执行,进行合并、筛选、持久化等操做。Bolt能够是Topology中一次完整的数据处理流程的终点,或者是转移点。spa
Tuple:Tuple是Storm中传递消息的基本单元,Tuple的数据结构为一个List。日志
Stream:接二连三的Tuple就组成了Stream。
Stream grouping:描述了数据在不一样的组件(Spout/Bolt)之间流转时,partition的规则,类型以下:
1.shuffle Grouping:随机分组,随机派发stream里面的tuple,保证每一个bolt接收到的tuple数目相同 2.Fields Grouping:按照字段分组,相同的字段会分配到相同的bolt,不一样的字段分配到不一样的Bolt 3.ALL Grouping:广播,对每个tuple,全部的bolt都会收到 4.Global Grouping:全局分组,这个tuple被分配到storm的一个bolt的一个task内,即id最低的那个 5.Non Grouping:不分组,目前效果和Global Groouping同样 6.Direct Grouping:直接分组,指定消息的接收者。