Задокументированы ли где-нибудь артефакты сборки Apache Hadoop? - PullRequest
0 голосов
/ 23 ноября 2018

Я только начал работать с Apache Hadoop, поэтому моя первая цель - запустить приложение "hello world".Первой задачей всегда является настройка среды разработки и возможность компилирования кода.Более конкретно, я пытаюсь скомпилировать найденные классы здесь .Эти файлы представляют простое задание MapReduce как часть книги по Hadoop.

Автор книги использовал hadoop-client в качестве зависимости ( source ), но поскольку существует так много артефактов - которыеЯ вернусь к - интересно, не могу ли я использовать другую зависимость.Я всегда пытаюсь «импортировать» или зависеть только от самого минимального набора артефактов и типов.

Автор книги (пока) не затронул тему, какие артефакты распространяет Hadoop, почему я бы использовал одинили другой.Сайт Hadoop и остальная часть Интернета, похоже, тоже не утруждают себя этой маленькой «деталью».Некоторые потоки SO как-то касались этого раньше (см. this и that ), на которые есть ответы с мнениями о том, какой артефакт «должен» быть представлен как зависимость для полученияконкретный код для компиляции.

Это не мой вопрос. Получение моего кода для компиляции довольно "легко" и уже выполнено.Я пытаюсь выяснить, какие существуют артефакты, какие из них мне следует использовать, когда.Как бы я знал, чтобы перейти от Java типа A к бинарной зависимости артефакта B?Наиболее важно, где все это задокументировано?

Для начала, какие существуют артефакты сборки?

Ну, согласно этой странице , есть такие:

hadoop-client
hadoop-client-api
hadoop-client-minicluster
hadoop-client-runtime
hadoop-hdfs-client
hadoop-hdfs-native-client
hadoop-mapreduce-client-app
hadoop-mapreduce-client-common
hadoop-mapreduce-client-core
hadoop-mapreduce-client-jobclient
hadoop-mapreduce-client-nativetask
hadoop-yarn-client

Но, согласно JCenter , их примерно на пять миллионов больше.В частности, около четырех миллионов девятьсот девяносто девять тысяч девятьсот девяносто девять из них содержат слово «клиент».Сильно сбивает с толку!

Отрабатывая список из Hadoop, я мог бы просто проверить, что работает, а что нет.Чтобы получить всех импортов, используемых в классах, представленных в моей книге, сработало следующее:

hadoop-client
hadoop-client-api
hadoop-client-minicluster
hadoop-клиент-среда выполнения
hadoop-mapreduce-client-app
hadoop-mapreduce-client-nativetask

Те, которые я оставил, не работали,в разной степени.Некоторые не могли разрешить все операции импорта, некоторые могли разрешать только их часть.

Моя личная ставка здесь - если я хочу зависеть от как можно меньшего количества дерьма, это использовать hadoop-mapreduce-client-app.Но чертовски неприятно, что мне приходится прибегать к этой войне с Гориллой только для того, чтобы заставить работать самое приземленное приложение «Привет, мир».Я не хочу знать, сколько слез я буду проливать в будущем, когда я действительно буду падать в грязи с Hadoop.

Должно быть что-то, чего мне не хватает!

1 Ответ

0 голосов
/ 23 ноября 2018

Я предлагаю вам просто использовать Maven / Gradle для транзитивного извлечения всего, что вам нужно.

Если все, что вам нужно, это зависимости MapReduce, это сработало отлично для меня в Gradle

implementation group: 'org.apache.hadoop', name: 'hadoop-client', version: "2.8.5"

Это агрегатор POM ,который имеет зависимости компиляции (прокрутить вниз) на несколько других библиотек.

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