storm分布式实时计算框架,在整个程序中,spout接收数据源并封装数据为tuple,然后将tuple发送给bolt处理,处理完数据后可以发送到下一个bolt中再处理也可以直接进行外部存储。那么这中间就涉及到一个任务处理的容错机制,和tuple发送的分配机制了。
核心概念
Input data source:数据来源,一般有hdfs,kafka,hive,hbase等等
spout:storm的处理数据源类,获取数据,并封装数据为tuple
bolt:storm的核心处理逻辑,
Tuple:数据结构,storm中的数据处理以tuple为基本单位,数组结构
Nimbus:storm集群中的master节点的称呼,主要是管理storm任务
Supervisor:集群的从节点称呼,具体处理数据的类
Zookeeper:分布式协调服务,在集群中感知supervisor的状态,以便nimbus分配资源
Topology;storm的应用程序
Bolte的分配策略
目前storm支持的分配策略有8中,随机分配,指定分配,按相同的字段分配等,
Topology应用程序
自定义类继承BaseRichSpout,open方法用来初始化spout的输出收集器SpoutOutputCollector, nextTuple方法用来封装tuple并又输出收集器发送,declareOutputFields方法用来定义发送的tuple消息元祖的字段名字。
自定义类继承BaseRichBolt,prepare方法用来初始化OutputCollector输出收集器,execute方法用来获取spout发送的tuple元祖并处理后由收集器发送,declareOutputFields方法用来定义输出字段的名字。
自定义main类,初始化TopologyBuilder类,设置spout,bolt和config信息,对于spout和bolt需要设置其并行度,bolt需要设置其分配策略,并制定tuple的接收来之哪个bolt.
storm的容错机制
容错机制就是动态感知tuple的处理结果,当tuple处理失败的话能够重新发送处理,当我们封装tuple时可以传递一个唯一ID.