storm分布式實時計算框架,在整個程序中雌贱,spout接收數(shù)據(jù)源并封裝數(shù)據(jù)為tuple,然后將tuple發(fā)送給bolt處理,處理完數(shù)據(jù)后可以發(fā)送到下一個bolt中再處理也可以直接進行外部存儲据途。那么這中間就涉及到一個任務(wù)處理的容錯機制,和tuple發(fā)送的分配機制了叙甸。
核心概念
Input data source:數(shù)據(jù)來源颖医,一般有hdfs,kafka,hive,hbase等等
spout:storm的處理數(shù)據(jù)源類,獲取數(shù)據(jù)裆蒸,并封裝數(shù)據(jù)為tuple
bolt:storm的核心處理邏輯熔萧,
Tuple:數(shù)據(jù)結(jié)構(gòu),storm中的數(shù)據(jù)處理以tuple為基本單位僚祷,數(shù)組結(jié)構(gòu)
Nimbus:storm集群中的master節(jié)點的稱呼佛致,主要是管理storm任務(wù)
Supervisor:集群的從節(jié)點稱呼,具體處理數(shù)據(jù)的類
Zookeeper:分布式協(xié)調(diào)服務(wù)辙谜,在集群中感知supervisor的狀態(tài)俺榆,以便nimbus分配資源
Topology;storm的應用程序
Bolte的分配策略
目前storm支持的分配策略有8中装哆,隨機分配罐脊,指定分配,按相同的字段分配等蜕琴,
Topology應用程序
自定義類繼承BaseRichSpout萍桌,open方法用來初始化spout的輸出收集器SpoutOutputCollector,????nextTuple方法用來封裝tuple并又輸出收集器發(fā)送凌简,declareOutputFields方法用來定義發(fā)送的tuple消息元祖的字段名字上炎。
自定義類繼承BaseRichBolt,prepare方法用來初始化OutputCollector輸出收集器号醉,execute方法用來獲取spout發(fā)送的tuple元祖并處理后由收集器發(fā)送反症,declareOutputFields方法用來定義輸出字段的名字辛块。
自定義main類,初始化TopologyBuilder類铅碍,設(shè)置spout,bolt和config信息润绵,對于spout和bolt需要設(shè)置其并行度,bolt需要設(shè)置其分配策略胞谈,并制定tuple的接收來之哪個bolt.
storm的容錯機制
容錯機制就是動態(tài)感知tuple的處理結(jié)果尘盼,當tuple處理失敗的話能夠重新發(fā)送處理,當我們封裝tuple時可以傳遞一個唯一ID.