0

我创建了一个应该从文件中读取并将其写入新文件的拓扑。我的程序在本地集群中正常运行,但是在远程集群中提交时我没有收到任何错误,但没有创建文件。下面是我在远程集群中提交拓扑的代码:-

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 为我的拓扑创建自己的日志文件,创建了日志文件但我的日志文件中没有错误。请帮忙

4

1 回答 1

0

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

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

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

chmod 777 -R /user/filesfolder
于 2015-01-13T09:51:18.563 回答