복붙노트

[HADOOP] hadoop 작업을 원격으로 실행하는 중 예외

HADOOP

hadoop 작업을 원격으로 실행하는 중 예외

원격 hadoop 클러스터에서 Hadoop 작업을 실행하려고합니다. 아래는 내 코드입니다.

Configuration conf = new Configuration();
conf.set("fs.default.name", "hdfs://server:9000/");
conf.set("hadoop.job.ugi", "username");

Job job = new Job(conf, "Percentil Ranking");
job.setJarByClass(PercentileDriver.class);
job.setMapperClass(PercentileMapper.class);
job.setReducerClass(PercentileReducer.class);
job.setMapOutputKeyClass(TestKey.class);
job.setMapOutputValueClass(TestData.class);
job.setOutputKeyClass(TestKey.class);
job.setOutputValueClass(BaselineData.class);

job.setOutputFormatClass(SequenceFileOutputFormat.class);

FileInputFormat.addInputPath(job, new Path(inputPath));

FileOutputFormat.setOutputPath(job, new Path(outputPath));

job.waitForCompletion(true);

작업이 즉시 실행되기 시작하면 맵 단계 이전에 예외가 발생합니다.

java.io.IOException: Filesystem closed
at org.apache.hadoop.hdfs.DFSClient.checkOpen(DFSClient.java:226)
at org.apache.hadoop.hdfs.DFSClient.getFileInfo(DFSClient.java:617)
at org.apache.hadoop.hdfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:453)
at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:192)
at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:142)
at org.apache.hadoop.fs.FileSystem.copyToLocalFile(FileSystem.java:1216)
at org.apache.hadoop.fs.FileSystem.copyToLocalFile(FileSystem.java:1197)
at org.apache.hadoop.mapred.LocalJobRunner$Job.<init>(LocalJobRunner.java:92)
at org.apache.hadoop.mapred.LocalJobRunner.submitJob(LocalJobRunner.java:373)
at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:800)
at org.apache.hadoop.mapreduce.Job.submit(Job.java:432)
at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:447)

입력 파일이 존재하며 쉼표로 구분 된 텍스트 파일입니다. 동일한 입력 및 출력으로 hadoop jar 명령을 사용하여 hadoop 클러스터에서 작업을 실행할 수 있습니다. 그러나 나는 그것을 원격으로 실행할 수 없습니다. 또한 다른 작업을 원격으로 실행할 수도 있습니다.

누구 든지이 문제에 대한 해결책이 무엇인지 말해 줄 수 있습니까?

해결법

  1. ==============================

    1.conf.set ( "mapred.job.tracker", "server : 9001"); 문제를 해결했습니다. 당신의 도움을 주셔서 감사합니다.

    conf.set ( "mapred.job.tracker", "server : 9001"); 문제를 해결했습니다. 당신의 도움을 주셔서 감사합니다.

  2. ==============================

    2.당신은 이것을합니다 :

    당신은 이것을합니다 :

    conf.set("fs.default.name", "serverurl");
    

    따라서 파일 시스템을 "serverurl"값으로 설정하고 있습니다. 이것은 의미가 없습니다.

    코드에서 해당 줄을 간단히 제거하면 작동한다고 확신합니다.

    HTH

  3. from https://stackoverflow.com/questions/5815527/exception-while-executing-hadoop-job-remotely by cc-by-sa and MIT license