Рабочий процесс MapReduce oozie с использованием Hue

Я работаю над 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

person Ajay    schedule 06.11.2015    source источник
comment
Я получаю ошибку с этой конфигурацией. Насколько я могу определить проблему, это задание не может загрузить банку. Пожалуйста помоги.   -  person Ajay    schedule 06.11.2015


Ответы (1)


Вы должны связать свой драйвер и маппер в одном банке. Чтобы передать новые аргументы, вы можете напрямую щелкнуть «добавить свойство» и указать случайное имя свойства и значение свойства. В вашей программе MR вы можете получить значение с помощью метода "getConf().get("propertyName")".

person Tanveer Dayan    schedule 06.11.2015
comment
Да, я сделал то же самое и создал исполняемую банку. Моя работа отлично работает в CLI. Любые другие предложения, кроме этого, я действительно застрял в этом - person Ajay; 06.11.2015
comment
Нужно ли определять какое-либо другое свойство? Я помещаю работающую банку в правильное место? - person Ajay; 06.11.2015
comment
У вас есть программа-драйвер? Можете ли вы опубликовать содержание, пожалуйста? Возможно, вы не устанавливаете основной класс в своей программе драйвера. - person Tanveer Dayan; 08.11.2015
comment
Также проверьте, использовали ли вы метод jobconf.setjar() в своей программе-драйвере. Будет полезно, если вы разместите здесь свою программу-драйвер. А также, вы пытаетесь запустить код через eclipse? - person Tanveer Dayan; 08.11.2015
comment
Я опубликую свой код в ближайшее время. Я использовал метод setjar. Я запускаю свой код через eclipse, командную строку hadoop, и работа работает нормально. Но получение класса не нашло исключения через oozie. Можете ли вы проверить, нужно ли мне добавить какое-либо другое свойство? - person Ajay; 08.11.2015
comment
Вы добавили свою банку в hdfs? Можете ли вы попробовать добавить его в папку oozie lib и попытаться запустить банку? - person Tanveer Dayan; 08.11.2015
comment
Да.. я создал одну структуру папок в hdfs по документации. Позвольте мне добавить банку в папку oozie lib и сообщить вам о прогрессе. - person Ajay; 08.11.2015
comment
Пожалуйста, добавьте его и дайте мне знать. - person Tanveer Dayan; 08.11.2015
comment
получение класса, не найденного исключения. Пожалуйста, смотрите мои правки выше. - person Ajay; 08.11.2015
comment
Вы можете использовать три решения, которые могут быть причиной того, что это происходит: 1. удалите .class Postfix из вашего DecomperesMapper 2. вы используете user/uname/mapr/DecompressMapper.class, вы должны заменить его на packagename.DecompressMapper.Как я уже сказал ранее вы не должны включать маппер в виде отдельного файла. Вы должны упаковать его в пакет в своей банке вместе с другими вашими классами. 3. Пожалуйста, установите JobConf.setJar() из вашей программы-драйвера. - person Tanveer Dayan; 08.11.2015
comment
Спасибо Танвир. Ты гений. Ваше предложение помогло мне решить мою проблему. - person Ajay; 08.11.2015
comment
Не могли бы вы помочь мне, указав, какое из трех предложений вы выполнили? - person Tanveer Dayan; 08.11.2015
comment
Извините, был занят на Дивали. Я реализовал все 3. - person Ajay; 12.11.2015
comment
Любые советы по stackoverflow.com/questions/33667660 / - person Ajay; 12.11.2015