使用storm在远程集群中运行拓扑时创建文件时出现问题

时间:2013-10-21 12:10:41

标签: java apache-storm

我创建了一个拓扑,它应该从文件中读取并将其写入新文件。我的程序在本地群集中正常运行,但在远程群集中提交时,我没有收到任何错误,但文件未创建。下面是我在远程集群中提交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为我的拓扑创建自己的日志文件,创建了日志文件,但我的日志文件中没有错误。请帮忙

1 个答案:

答案 0 :(得分:0)

我和Hortonworks2.2有同样的问题。这是因为权限发生的。

即使您以Root用户身份提交群集,在提交storm jar命令时,它也会以“storm”用户身份执行。它可以从源读取文件,但不会写,因为它没有必要的权限。

修改要使用所有权限写入文件的目标文件夹的权限。

chmod 777 -R /user/filesfolder