我创建了一个拓扑,它应该从文件中读取并将其写入新文件。我的程序在本地群集中正常运行,但在远程群集中提交时,我没有收到任何错误,但文件未创建。下面是我在远程集群中提交topolgy的代码: -
public static void main(String[] args) {
final Logger logger = LoggingService.getLogger(FileToFileTopology.class.getName());
try{
Properties prop =new Properties();
prop.load(new FileInputStream(args[0]+"/connection.properties"));
LoggingService.generateAppender("storm_etl",prop, "");
logger.info("inside main method...." +args.length);
System.out.println("inside main sys out");
Config conf= new Config();
conf.setDebug(false);
conf.put(Config.TOPOLOGY_MAX_SPOUT_PENDING,1);
TopologyBuilder builder = new TopologyBuilder();
builder.setSpout("file-reader",new FileReaderSpout(args[1]));
builder.setBolt("file-writer",new WriteToFileBolt(args[1]),2).shuffleGrouping("file-reader");
logger.info("submitting topology");
StormSubmitter.submitTopology(args[0], conf, builder.createTopology());
}
catch(Exception e){
System.out.println("inside catch");
logger.info("inside catch"+e.getMessage());
logger.error("inside error", e);
e.printStackTrace();
}
}
我还使用log4j为我的拓扑创建自己的日志文件,创建了日志文件,但我的日志文件中没有错误。请帮忙
答案 0 :(得分:0)
我和Hortonworks2.2有同样的问题。这是因为权限发生的。
即使您以Root用户身份提交群集,在提交storm jar命令时,它也会以“storm”用户身份执行。它可以从源读取文件,但不会写,因为它没有必要的权限。
修改要使用所有权限写入文件的目标文件夹的权限。
chmod 777 -R /user/filesfolder