Hadoop на Google Compute Engine: как добавить внешнее ПО

Мне нужно настроить кластер Hadoop на Google Compute Engine. Хотя это кажется простым либо с помощью веб-консоли Click&Deploy, либо с помощью командной строки. инструмент bdutil, я обеспокоен тем, что для моих задач требуются дополнительные зависимости, присутствующие на машинах, например Xvfb, Firefox и другие, хотя все они устанавливаются через apt-get.

Мне не ясно, как лучше пойти. Варианты, которые приходят мне в голову:

1) Я создаю собственный образ с дополнительными материалами и использую его для развертывания кластера Hadoop либо с помощью, либо с помощью щелчка и развертывания. Будет ли это работать?

2) Используйте стандартный образ и bdutil с настраиваемыми файлами конфигурации (редактирование существующего), чтобы выполнить все sudo apt-get install xxx. Это жизнеспособный вариант?

Вариант 1) — это в основном то, что мне приходилось делать в прошлом, чтобы запустить Hadoop на AWS, и, честно говоря, его сложно поддерживать. Я буду более чем доволен вариантом 2), но я не уверен, что butil разрешено это делать.

Видите ли вы какой-либо другой способ настроить кластер Hadoop? Любая помощь приветствуется!


person legrass    schedule 15.01.2015    source источник


Ответы (1)


bdutil на самом деле предназначен для поддержки пользовательских расширений; вы, безусловно, можете отредактировать существующий, чтобы упростить начало работы, но рекомендуется создать собственное расширение "_env.sh", которое при необходимости можно смешивать с другими расширениями bdutil. Таким образом, вы можете легко объединять любые обновления, которые Google делает, с ядром bdutil, не беспокоясь о конфликтах с вашими настройками. Вам нужно всего лишь создать два файла, например:

Файл с командами оболочки:

# install_my_custom_tools.sh

# Shell commands to install whatever you want
apt-get -y install Xvfb

Файл со ссылкой на файл команд, который вы подключите к bdutil:

# my_custom_tools_env.sh

COMMAND_GROUPS+=(
  "install_my_custom_tools_group:
     install_my_custom_tools.sh
  "
)

COMMAND_STEPS+=(
  'install_my_custom_tools_group,install_my_custom_tools_group'
)

Затем при запуске bdutil вы можете просто смешать его с флагом -e:

./bdutil -e my_custom_tools_env.sh deploy

Если вы хотите организовать вспомогательные сценарии в несколько файлов, вы можете легко перечислить больше сценариев оболочки в одном COMMAND_GROUP:

COMMAND_GROUPS+=(
  "install_my_custom_tools_group:
     install_my_custom_tools.sh
     my_fancy_configuration_script.sh
  "
)

Если вы хотите, чтобы что-то работало только на мастере, просто укажите * во втором аргументе в COMMAND_STEPS:

COMMAND_GROUPS+=(
  "install_my_custom_tools_group:
     install_my_custom_tools.sh
  "
  "install_on_master_only:
     install_fancy_master_tools.sh
  "
)
COMMAND_STEPS+=(
  'install_my_custom_tools_group,install_my_custom_tools_group'
  'install_on_master_only,*'
)

При их использовании вы все равно можете легко смешивать их с другими файлами env, например:

./bdutil -e my_custom_tools_env.sh -e extensions/spark/spark_env.sh deploy

Для файлов, находящихся в том же каталоге, что и bdutil, или в каталоге extensions, вы также можете использовать сокращенную нотацию, указав только базовое имя файла без суффикса _env.sh:

./bdutil -e my_custom_tools -e spark deploy
person Dennis Huo    schedule 16.01.2015
comment
очень информативно, именно так должна была быть написана документация. Также через bdutil устанавливаются параметры hadoop, например, mapreduce.job.map и т. д.? - person legrass; 17.01.2015
comment
Правильно, значения конфигурации немного сложнее настроить. Если вы заглянете внутрь bdutil-dir/conf/hadoop*, вы увидите такие файлы, как mapred-template.xml. Самый простой способ внести изменения — просто отредактировать эти файлы в процессе работы; любые ключи, которые вы поместите в mapred-template.xml, будут смешаны с mapred-site.xml в кластере, core-template.xml с core-site.xml и т. д. Вам просто нужно быть более осторожным при объединении любых изменений в core bdutil для обновления версии. Для более продвинутого использования хорошим примером является bdutil-dir/libexec/configure_hadoop.sh; найдите bdconfig cmds для примеров. - person Dennis Huo; 17.01.2015
comment
Я вижу, может быть действительно сложно. Я запустил Hadoop на AWS и смог установить все параметры через Cloudera Manager. Я удивлен, что вычислительный движок Google не имеет аналогичного веб-интерфейса для Hadoop. Поскольку я спрашиваю здесь, есть ли способ получить cloudera менеджер или аналогичный на GCE? - person legrass; 17.01.2015
comment
Есть некоторая работа и сотрудничество; см. здесь последнюю работу bdutil, которая еще не была включена в какой-либо официальный выпуск: github.com/GoogleCloudPlatform/bdutil/tree/platform_extensions/ — есть еще некоторые ожидаемые исправления ошибок, прежде чем он станет полностью пригодным для использования, и будут более полные инструкции по использованию подключаемых модулей платформы после официального выпуска, но а пока вы можете поэкспериментировать с платформами/hdp/ambari_env.sh - person Dennis Huo; 17.01.2015
comment
Большой! Какой образ лучше всего подходит для Амбари? Убунту 14? - person legrass; 17.01.2015
comment
В случае расширения Ambari bdutil существует зависимость от использования CentOS, и ambari_env.sh действительно переопределяет GCE_IMAGE по умолчанию для использования centos-6. Если вам нужно настроить изображение, вам нужно начать с образа GCE centos-6, в противном случае лучше всего оставить настройку GCE_IMAGE по умолчанию, чтобы получить что-то, что было хорошо протестировано. - person Dennis Huo; 18.01.2015
comment
Мне удалось выполнить развертывание с помощью ambari_env.sh, следуя инструкциям на странице bdutil git. Однако, поскольку мне нужен hadoop1 для какой-то старой работы, я попытался установить HDP 1.3, установив переменную AMBARI_STACK_VERSION='1.3' в ambari.conf. Процесс застрял на Invoking on master: ./install-ambari-components.sh Waiting on async 'ssh' jobs to finish. Might take a while.... Возможно ли, что для установки стека 1.3 также необходимо изменить AMBARI_SERVICES? - person legrass; 29.01.2015
comment
Глядя на install-ambari-components_deploy.stdout, он говорит: Provisioning ambari cluster. { "status" : 400, "message" : "Unable to update configuration property with topology information. Component 'JOBTRACKER' is not mapped to any host group or is mapped to multiple groups."} в то время как install-ambari-components_deploy.stderr показывает циклическую печать ambari_wait status: curl: no URL specified! curl: try 'curl --help' or 'curl --manual' for more information - person legrass; 29.01.2015
comment
Я открыл проблему - person legrass; 29.01.2015