2016-07-08 3 views
1

У меня ситуация, когда моя работа по сокращению карты зависит от сторонних библиотек, таких как hive-hcatalog-xxx.jar. Я выполняю все свои задания через oozie. Работы Mapreduce запускаются через java-действие. Каков наилучший способ включения сторонних библиотек в мою работу? У меня есть два варианта:сторонние банки на карте сокращают работу

  1. Объедините все зависящие банки в основную банку и создайте жирную банку.

  2. Держите все зависимые банки в месте HDFS и добавить его с помощью опции -libjars

Какой из них выбрать? Пожалуйста посоветуй.

Поскольку мое задание mapreduce вызывается через java-действие oozie, библиотеки, доступные в папке oozie lib, не добавляются в путь класса mapper/reducer. Если я изменю это действие java, чтобы отобразить действие уменьшения, будут ли банки доступны?

Заранее благодарен.

ответ

2

1.Вставьте все зависимые банки в основную банку и создайте жирную банку. OR 2. Сохраните все зависимые баночки в местоположении HDFS и добавьте его через -libjars option Какой из них я могу выбрать?

Хотя оба подхода на практике. Я бы предложил Uber jar i.e ваш первый подход.

Uber jar: банку, в которой есть папка lib/, внутри которой находятся более зависимые банки (структура, известная как банки uber), и вы отправляете задание с помощью обычной команды «hadoop jar», эти lib/.jars получить собранный фреймворк, потому что поставляемый банку явно указывается через conf.setJarByClass или conf.setJar. То есть, если этот пользовательский uber jar переходит в JT как отображаемый ... jar, тогда он обрабатывается каркасом должным образом, и все библиотеки lib/.jars рассматриваются и помещаются на classpath.

Почему

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

Поскольку моя работа MapReduce вызывается через Java действие oozie, то библиотеки, доступные в oozie Lib папки не добавляется к классам из картографа/редуктора. Если я изменю это действие java на карту, уменьшив действие, будут ли банки доступны?

Для приведенного выше вопроса, так как ответ широк,

У меня есть sharelib ссылки с CDH4.xx, CDH5.xx & How to configure Mapreduce action with Oozie shre lib. для вас

+0

Спасибо большое за ответ. Уберская банка будет больше по размеру и влияет ли она на время запуска? – sunitha

+0

через бит разницу есть с момента его единственной банки; искровое развитие также, большинство людей, использующих uber jar –

1

Вы можете явно принять подходы, предложенные вами, но Oozie имеет sharelib подготовлен для hcatalog.Вы можете использовать их из коробки с oozie.action.sharelib.for.actiontype в своем . Для java действий можно указать:

oozie.action.sharelib.for.java=hcatalog 

Это будет загружать библиотеки из oozie доли Lib hcatalog в вашу пусковой работу. Это должно выполнить эту работу.

Вы можете оформить содержание hcatalog здесь:

hdfs dfs -ls /user/oozie/share/lib/lib_*/hcatalog 
Смежные вопросы