Запрос Hadoop относительно метода setJarByClass класса Job - PullRequest
21 голосов
/ 12 октября 2010

В документации по Hadoop API указано

, что

setJarByClass 

public void setJarByClass(Class<?> cls)

Set the Jar by finding where a given class came from.

Что именно означает это объяснение? это создает файл JAR из аргумента файла класса, указанного в методе выше? и выполняет ли этот файл JAR для задачи MapReduce .?

Ответы [ 3 ]

24 голосов
/ 21 сентября 2011

Этот метод устанавливает файл jar, в котором каждый узел будет искать классы Mapper и Reducer.

Он не создает банку из данного класса. Скорее, он идентифицирует банку, содержащую данный класс. И да, этот файл jar «выполняется» (в действительности выполняются Mapper и Reducer в этом файле jar) для задания MapReduce.

(см. Также ответ Стэнли Сюй на аналогичный вопрос о необходимости этого метода, поскольку вы задаете банку в командной строке)

8 голосов
/ 02 июля 2014

Обратите внимание, что вышеуказанный метод класса Job вызывается в драйвере.Ваш драйвер вызывается из клиента, обычно это ваш рабочий стол или пограничный компьютер, который не является частью кластера, и ваши классы (в jar-файлах) будут находиться на этом компьютере.Чтобы ваше задание mapreduce выполнялось в кластере, вам необходимо отправить свой Mapper, редуктор и любые другие необходимые классы в кластер с вашего клиентского компьютера.Ваш класс драйверов заботится об отправке JAR-файла, содержащего необходимые классы, в кластер.Какой JAR-файл нужно отправить, нужно указать, так как драйвер не знает, какой из них следует отправить из кучи JAR-файлов, которые есть в пути к классу вашего драйвера.Это делается с помощью метода setJarByClass или setJar или любого другого варианта аналогичного метода в классе Job.

Очевидно, что если вы не укажете это, то есть не вызывая этот метод или не комментируя его, вы получите исключение ClassNotFoundна подчиненных узлах.

Надеюсь, это проясняет!

0 голосов
/ 20 апреля 2014
job.setJarByClass(WordCount.class);

Помогает определить Jar, который содержит Mapper и Reducer, указав класс в этом Jar.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...