Я только начал работать с 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.
Должно быть что-то, чего мне не хватает!