Исключение при удаленном выполнении задания hadoop - PullRequest
3 голосов
/ 28 апреля 2011

Я пытаюсь выполнить задание 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 с помощью команды hadoop jar с тем же входом и выходом.Но я не могу запустить его удаленно.Я также могу запускать другие задания удаленно.

Может кто-нибудь сказать мне, как решить эту проблему?

Ответы [ 2 ]

2 голосов
/ 02 мая 2011

Кажется, conf.set("mapred.job.tracker", "server:9001"); исправил проблему. Спасибо за вашу помощь.

1 голос
/ 28 апреля 2011

Вы делаете это:

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

Таким образом, вы устанавливаете для файловой системы значение "serverurl" ... которое не имеет смысла.

Я почти уверен, что это работает, когда вы просто удаляете эту строку из своего кода.

НТН

...