Я работаю над AWS
и пытаюсь create oozie workflow for map only job
использовать оттенок. Я взял mapreduce action
за это. Попробовав много подходов, я не могу его завершить. Я выполнил свою работу из CLI, и она работает нормально.
Я создал один каталог с именем mapreduce dir в HDFS и поместил в него свои файлы driver.java и mapper.java. В каталоге mapreduce я создаю каталог lib и помещаю в него свою исполняемую банку. Прикрепляю скрин интерфейса hue.
Я что-то упускаю или кажется, что я не могу разместить исполняемую банку в нужном месте.
Я также хочу добавить дополнительный параметр, кроме каталога ввода и вывода в Hue. Как я могу это сделать?
Мое сомнение лежит на
2015-11-06 14:56:57,679 WARN [main] org.apache.hadoop.mapreduce.JobSubmitter: No job jar file set. User classes may not be found. See Job or Job#setJar(String).
Когда я попытался просмотреть журнал oozie:action. Я получил сообщение ниже.
No tasks found for job job_1446129655727_0306.
ОБНОВЛЕНИЕ 1
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.io.*;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
/*
* Driver class to decompress the zip files.
*/
public class DecompressJob extends Configured implements Tool {
public static void main(String[] args) throws Exception {
int res = ToolRunner.run(new Configuration(), new DecompressJob(), args);
System.exit(res);
}
public int run(String[] args) throws Exception {
Configuration conf = new Configuration();
conf.set("unzip_files", args[2]);
Job JobConf = Job.getInstance(conf);
JobConf.setJobName("mapper class");
try {
FileSystem fs = FileSystem.get(getConf());
if (fs.isDirectory(new Path(args[1]))) {
fs.delete(new Path(args[1]), true);
}
} catch (Exception e) {
}
JobConf.setJarByClass(DecompressJob.class);
JobConf.setOutputKeyClass(LongWritable.class);
JobConf.setOutputValueClass(Text.class);
JobConf.setMapperClass(DecompressMapper.class);
JobConf.setNumReduceTasks(0);
Path input = new Path(args[0]);
Path output = new Path(args[1]);
FileInputFormat.addInputPath(JobConf, input);
FileOutputFormat.setOutputPath(JobConf, output);
return JobConf.waitForCompletion(true) ? 0 : 1;
}
}
Я также обновил снимок экрана, добавив еще несколько свойств. Журнал ошибок публикации также
2015-11-07 02:43:31,074 INFO [main] org.apache.hadoop.mapred.Task: Using ResourceCalculatorProcessTree : [ ]
2015-11-07 02:43:31,110 WARN [main] org.apache.hadoop.mapred.YarnChild: Exception running child : java.lang.RuntimeException: java.lang.ClassNotFoundException: Class /user/Ajay/rad_unzip/DecompressMapper.class not found
at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2074)
at org.apache.hadoop.mapreduce.task.JobContextImpl.getMapperClass(JobContextImpl.java:186)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:751)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:342)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:171)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1628)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:166)
Caused by: java.lang.ClassNotFoundException: Class /user/uname/out/DecompressMapper.class not found
at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:1980)
at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2072)
... 8 more
2015-11-07 02:43:31,114 INFO [main] org.apache.hadoop.mapred.Task: Runnning cleanup for the task
2015-11-07 02:43:31,125 WARN [main] org.apache.hadoop.mapreduce.lib.output.FileOutputCommitter: Could not delete hdfs://uname/out/output/_temporary/1/_temporary/attempt_1446129655727_0336_m_000001_1