2012-04-13 3 views
0

Я новичок в Hadoop. Я использую Hadoop 0.22. В драйвере I'used этого кода:Распределенный кеш Hadoop не работает

Job job = Job.getInstance(configuration); 
    ... 
    job.addArchiveToClassPath(new Path(JAR_DIR); 
    ... 

В классе карт, что код, который я должен использовать, чтобы добавить банку в местных классах?

Подробнее

У меня есть работа, которая нужна на карте и уменьшить фазы htmlunit.jar.I добавить баночку с пути к классам выше кода, но когда я подать работу, у меня есть ClassNotFoundException на линии что я использую ссылки htmlunit.Если код выше, это нормально, а DistributedCache автоматически добавляет банку в путь класса tasktrackers, что может быть проблемой? Мне также нужно использовать опцию -libjars htmlunit.jar, когда я отправляю задание? Мне нужно использовать другой компонент hadoop?

+0

Пробуйте эту ссылку: [ссылка] http://hadoop.apache.org/common/docs/r0.20.0/api/org/apache/hadoop/filecache/DistributedCache.html. В нем приведен пример использования нарушенного кеша. Кроме того, вы можете уточнить вопрос? –

+0

В чем вопрос? Невозможно помочь вам, если вы не дадите больше деталей, чем просто «не работайте». –

ответ

0

Вам ничего не нужно.

После того, как вы добавляете банку в работе, что вы классы говорите,

«включить это в классе пути карты и сократить рабочие места»

До тех пор, как ваши картографы и редукторы простираются от базовых классов Mapper и Reducer, тогда он будет «просто работать».

Стоит отметить, что вместо этого вы должны использовать addFileToClassPath для каждого отдельного Jar, который вам нужен.

Альтернативой (мы делаем это) является создание одной единственной банки, содержащей ваш источник и ваши зависимости.

Создайте свой флеш-код как обычно, а затем создайте подкаталог в банке под названием «lib» и добавьте сюда все ваши банки с зависимостями. Тогда вся ваша работа самодостаточна, и вам не нужно беспокоиться о добавлении других банок в распределенный кеш.

Так, например, вы бы баночку со следующим содержанием:

/com/example/Something.class 
/com/example/SomethingElse.class 
/lib/dependency.jar 
/lib/dependency2.jar 

(баночка просто почтовый файл, так что вы можете использовать обычные утилиты создания почтового индекса, чтобы построить его)

По разным причинам это также лучше, чем добавление файлов .class вашей зависимости к банке напрямую.

Смежные вопросы