并行性提示与HDFS

时间:2017-02-28 18:32:01

标签: hadoop hdfs apache-storm

我正在研究apache风暴并使用HDFS。如果我对bolt 1使用并行性提示,它正在创建一个文件,将数据写入文件并正常工作。但是当我将bolt的并行度提示增加到3时,它创建3个文件并将数据写入一个文件。

我的应用有一个喷口和两个螺栓(Xbolt和Yblot) 并行性提示如下 喷口1,Xbolt 1,Ybolt 3

申请流程 喷口 - > Xbolt - > Ybolt - >文件(S)

TopologyBuilder builder = new TopologyBuilder(); 
BoltDeclarer boltDeclarer;

int parallelismHint = 0;
parallelismHint = SpoutLogic.determineParallelismHint(config);

builder.setSpout("TOPIC_ID", new Spout(), parallelismHint); 
parallelismHint = XBoltLogic.determineParallelismHint(config); 
boltDeclarer = builder.setBolt("XBOLT_ID", new XBolt(), parallelismHint);    
boltDeclarer.shuffleGrouping("TOPIC_ID","XBoltMessage"); 
parallelismHint = HDFSBoltLogic.determineParallelismHint(config); 
boltDeclarer = builder.setBolt("HDFSBOLT_ID",new HDFSBolt(), parallelismHint);
boltDeclarer.fieldsGrouping("XBOLT_ID","XBoltMessage",new Fields("Table")); StormSubmitter.submitTopology("MyTopologyName", config, builder.createTopology());

1 个答案:

答案 0 :(得分:0)

如果使用fieldGrouping,可能会发生所有数据散列到螺栓(即使这不太可能).shuffle()会以循环方式将数据发送到螺栓。