Получение "sudo: неизвестный пользователь: hadoop" и "sudo: невозможно инициализировать ошибку плагина политики" в Google Cloud Platform при работе кластера hadoop

Я пытаюсь развернуть образец приложения Hadoop, предоставленного Google по адресу https://github.com/GoogleCloudPlatform/solutions-google-compute-engine-cluster-for-hadoop на облачной платформе Google.

Я следовал всем инструкциям по установке, приведенным там, шаг за шагом. Мне удалось настроить среду и запустить кластер успешно. Но я не могу запустить часть MapReduce. Я выполняю эту команду на моем терминале:

./compute_cluster_for_hadoop.py mapreduce <project ID> <bucket name> [--prefix <prefix>]
--input gs://<input directory on Google Cloud Storage>  \
--output gs://<output directory on Google Cloud Storage>  \
--mapper sample/shortest-to-longest-mapper.pl  \
--reducer sample/shortest-to-longest-reducer.pl  \
--mapper-count 5  \
--reducer-count 1

И я получаю следующую ошибку:

sudo: unknown user: hadoop
sudo: unable to initialize policy plugin
Traceback (most recent call last):
File "./compute_cluster_for_hadoop.py", line 230, in <module>
main()
File "./compute_cluster_for_hadoop.py", line 226, in main
ComputeClusterForHadoop().ParseArgumentsAndExecute(sys.argv[1:])
File "./compute_cluster_for_hadoop.py", line 222, in ParseArgumentsAndExecute
params.handler(params)
File "./compute_cluster_for_hadoop.py", line 51, in MapReduce
gce_cluster.GceCluster(flags).StartMapReduce()
File "/home/ubuntu-gnome/Hadoop-sample-app/solutions-google-compute-engine-cluster-for-hadoop-master/gce_cluster.py", line 545, in StartMapReduce
input_dir, output_dir)
File "/home/ubuntu-gnome/Hadoop-sample-app/solutions-google-compute-engine-cluster-for-hadoop-master/gce_cluster.py", line 462, in _StartScriptAtMaster
raise RemoteExecutionError('Remote execution error')
gce_cluster.RemoteExecutionError: Remote execution error

Поскольку я выполнил все шаги, приведенные там, как есть, я не могу понять, почему возникает эта проблема?

Пользователь 'hadoop' на самом деле не создан в предыдущих выполненных сценариях, или есть проблема с разрешениями пользователя? Или проблема в другом?

Пожалуйста, помогите мне с этой ошибкой..!! Я застрял здесь и не могу идти дальше.

1 ответ

Решение

Обычно ожидается, что процесс установки создаст пользователя 'hadoop' автоматически; это делается внутри startup-script.sh в строке 75-76:

# Set up user and group
groupadd --gid 5555 hadoop
useradd --uid 1111 --gid hadoop --shell /bin/bash -m hadoop

Вполне возможно, что какая-то часть установки действительно не удалась.

Тем не менее, пример, на который вы ссылаетесь, хотя и полезен в качестве отправной точки, если вы пишете свое собственное приложение Python, напрямую взаимодействующее с API GCE, не рекомендуется использовать как способ развертывания Hadoop в Google Compute Engine. Если вы действительно хотите использовать Hadoop, вам следует использовать поддерживаемый Google инструмент развертывания bdutil и связанный с ним быстрый запуск. В кластере, который развертывается, есть некоторые сходства, включая настройку пользователя hadoop, Ключевое отличие, однако, заключается в том, что bdutil также будет включать и настраивать соединитель GCS для Hadoop, чтобы ваш MapReduce мог работать непосредственно с данными в GCS, а не копировать их сначала в HDFS.

Другие вопросы по тегам