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 に答える