Cloudera Manager не может добавить хосты - PullRequest
14 голосов
/ 20 декабря 2011

Я следовал процедуре установки, начиная с здесь , и когда я достигаю этапа Проверка назначений ролей , я вижу только один управляемый хост: localhost.localdomain.

Любые последующие попытки добавить другие хосты имеют тот же результат:

  • установка каждого узла кластера прошла успешно
  • и хост не отображается как управляемый

Чего мне не хватает?

Обновление: Я не люблю отвечать на свои вопросы, поэтому я пишу свой ответ здесь.

Решение настолько очевидно, что я не вижу его в облаке и оставляю проблему нерешенной в течение достаточно долгого времени, пока она не ударила меня во время некоторых проверок.

Значение hostname, предоставленное во время установки, было установлено в /etc/hosts для IP 127.0.0.1, а ведьма localhost.localdomain вводила в заблуждение настройку Cloudera и в основном заставляла все хосты иметь одинаковые IP и имя хоста.

Я переделал настройку с помощью hostname.domain.local, и теперь в файле hosts есть отдельная строка с указанным IP и именем хоста, а в файле /etc/resolv.conf есть строка с search domain.local.

Даже после этого неприятного опыта я думаю, что документация по установке должна содержать эти мелкие детали, но это все равно что констатировать очевидное.

Ответы [ 6 ]

9 голосов
/ 02 марта 2012

Похоже, что Cloudera (возможно, недавно) добавила объявление об этом в свою документацию . У меня была эта проблема некоторое время, и ключом для меня было получение следующей команды для получения правильных результатов:

$ host -v -t A `hostname`

Моя задача состояла в том, чтобы настроить локальный DNS-сервер, но, возможно, было бы достаточно иметь одинаковые / etc / hosts на каждом узле. YMMV.

6 голосов
/ 04 апреля 2012

Хорошо, я внедрил кластер на виртуальных машинах, поэтому я хотел поделиться всем, что я сделал. В моем кластере я создал один узел менеджера (только для менеджера cloudera), один наменод, два датодода. Это позволило легко и без проблем добавить новый узел в кластер. Я также подготовил простой документ для инструкций. Это может быть немного подведено, но работает нормально. Большинство кодов взято с разных сайтов, поэтому я постарался сделать их простыми настолько, насколько я понимаю. Я добавил этот ответ здесь, потому что моя реализация также включает добавление нового хоста в кластер.

Примечание: я очень новичок в среде Linux, я старался изо всех сил делать что-то, я ожидаю, что любой, кто сможет исправить мои комментарии по использованию или объяснениям.

=============================================== ===================================

Эти инструкции реализованы в cenTOS 6.2 x64 (не для настольной версии). Если вы используете версию сервера, вам может потребоваться настроить конфигурацию сети самостоятельно.

Максимально используйте одну и ту же версию на всех машинах. Некоторые говорят, что значения IP-адресов машин важны, но я реализовал разные диапазоны IP-адресов, например, одна машина использует 192.168.12.13, а другая - 192.168.13.144. это не создает проблемы.

Я также использовал Oracle VirtualBox для среды виртуальных машин на Windows 7 Enterprise.

Предложение: когда вы создаете одну общую установку cenTOS, вам следует создать клон, если произойдет какая-либо неправильная конфигурация. Всегда сохраняйте резервный клон.

Сначала загрузите эти файлы вручную:

менеджер cloudera (вы можете скачать редакцию сообщества) . это нужно для главного узла, но это не означает, что главный узел является частью кластера. Я

используется менеджер на машине, которая не имеет namenode или трекер работы, просто приложение mamanger.

Oracle JDK . Вы можете скачать подходящий с сайта оракула. Просто зайдите туда и загрузите из браузера или скопируйте ссылку и используйте wget для ее загрузки. Это ваш выбор.

Обязательно удалите "open jdk":

yum remove java-1.6.0-openjdk

установка "oracle jdk" вручную Обратите внимание, что строку wget можно изменить. Вы можете скачать файл из браузера.

wget http://download.oracle.com/otn-pub/java/jdk/6u27-b07/jdk-6u27-linux-x64-rpm.bin

chmod u+x jdk-6u27-linux-x64-rpm.bin

./jdk-6u27-linux-x64-rpm.bin

Заставьте нашу систему и браузеры использовать нашу новую Java

/usr/sbin/alternatives --install /usr/bin/java java /usr/java/default/bin/java 20000 
/usr/sbin/alternatives --install /usr/lib/mozilla/plugins/libjavaplugin.so libjavaplugin.so /usr/java/default/jre/lib/i386/libnpjp2.so 20000

Добавить пользователя как sudoers

nano /etc/sudoers

найдите строку "root ALL = (ALL) ALL" и добавьте эту строку ниже

username  ALL=(ALL)   ALL

// Эта строка означает, что пользователь root может выполняться из ВСЕХ терминалов, // действуя как ВСЕ (любой) пользователь, и запускаем ВСЕ (любую) команду.

Установить "ssh сервер"

sudo yum install openssh-server

проверьте состояние сервера ssh, чтобы убедиться, что он работает

/sbin/service sshd status

запустить службу sshd, если она не запущена

/sbin/service sshd start

или вы можете просто протестировать ssh с помощью

ssh localhost

после успешного завершения теста вы можете выйти

exit

Эти инструкции также определены на веб-сайте cloudera. Если вы можете проверить файлы / var / log / cloudera-scm-agent / cloudera-scm-agent-log или .out и убедиться, что они связаны с постоянством или спящим режимом

исключение / ошибки, которые означают, что проблема связана с базой данных postgresql. возможно база данных еще не установлена. Все, что нам нужно сделать, это настроить его.

Не: postgresql необходим только для узла администратора (мастера). нет необходимости в рабах.

Убедитесь, что экземпляр postgresql установлен, проверив состояние службы

/etc/init.d/postgresql status

Не : инструкция ниже требует настройки репо !!! Если вы не знаете, как перейти к использованию файла сценария.

Установите встроенный пакет базы данных PostgreSQL на хосте Cloudera Manager Server:

sudo yum install cloudera-manager-server-db

Подготовьте встроенную базу данных PostgreSQL для использования с Cloudera Manager Server, выполнив эту команду

sudo /sbin/service  cloudera-scm-server-db initdb

Запустите встроенную базу данных PostgreSQL, выполнив следующую команду:

sudo /sbin/service cloudera-scm-server-db start

Использование файла скрипта : Инструкция ниже - это ручная настройка postgresql с файлом скрипта

/usr/share/cmf/schema/scm_prepare_database.sh database-type [options] database-name username password

Обязательный параметр и описание

тип базы данных Чтобы подключиться к базе данных MySQL, укажите mysql в качестве типа базы данных или укажите postgresql для подключения к внешней базе данных PostgreSQL.

database-name Имя базы данных сервера Cloudera Manager, которую вы хотите создать.

username Имя пользователя для базы данных сервера Cloudera Manager, которую вы хотите создать.

пароль Пароль для базы данных сервера Cloudera Manager, которую вы хотите создать. Если вы не укажете пароль в командной строке, скрипт предложит вам ввести его.

Вы можете проверить эту страницу для деталей : https://ccp.cloudera.com/display/ENT/Installation+Path+B+-+Installation+Using+Your+Own+Method#InstallationPathB-InstallationUsingYourOwnMethod-Step5%3AConfigureaDatabasefortheClouderaManagerServer

запустите postgresql, если он не запущен (вы можете проверить статус и, конечно, перезапустить его)

/etc/init.d/postgresql start

Если в Linux есть ограничение на рутирование / брандмауэр, то пульс агента не достигнет главного узла (менеджера), поэтому нам нужно устранить безопасность

проблемы. В этом случае есть Selinux и iptables, которые могут создать проблему. Cloudera говорит, что отключить iptables полностью, но если у вас есть опыт

о конфигурации iptables, тогда вы можете добавить такие правила:

открыть iptables и установить правило для доступа к порту 7180

nano /etc/sysconfig/iptables

добавив эту строку:

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 7180 -j ACCEPT

или просто (путём клудера) полностью отключите iptables. убедитесь, что это одинаково на всех узлах

sudo /etc/init.d/iptables stop

проверить статус iptables с помощью параметра статуса

/etc/init.d/iptables status

Нет: каждый раз, когда машина перезагружается, iptables снова активируется, поэтому вам может понадобиться способ остановить его автоматически. Проблема возникла из-за того, что iptables и selinuxun будут в файле журнала "cloudera-scm-agent.log". Вы можете увидеть некоторые «устаревшие» предупреждения о

фитонный код, просто игнорируйте их. Ошибка / исключение, как правило, "нет маршрута к хосту" или что-то в этом роде.

отключить selinux. но вам может потребоваться сделать это перед многими операциями выше. Особенно, когда вы пытаетесь установить менеджер Cloudera. linux предупредит вас о selinux.

sudo nano /etc/selinux/config
    (selinux=disabled)

Установить уникальное имя хоста для каждой машины. поэтому в каждом мейне отредактируйте этот файл и дайте имя этой машине. мы будем использовать это имя в файле hosts.

sudo nano /etc/sysconfig/network

remodify файл хоста со всеми значениями ip и именами узлов. Сделайте это во всех узлах. Вы также можете просто скопировать в другие узлы. все файлы хостов будут одинаковыми

sudo nano /etc/hosts

пример: 127.0.0.1 localhost 192.168.1.2 мастер-узел 192.168.1.3 наменоде 192.168.1.4 datanode1 192.168.1.5 датоде2

проверьте статус менеджера Cloudera и, если вам нужно, вы можете перезапустить его

sudo /sbin/service cloudera-scm-server start

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

если вы используете виртуальные машины в качестве узлов (что я и сделал), вы можете выбрать режим сетевого моста. Таким образом, вы можете предоставить подключение к Интернету всем узлам, но это имеет один недостаток. Если вы перезапустите свою физическую машину, вы можете потерять свои значения ip и автоматически восстановить новые. Который может заставить вас повторно модифицировать файл hosts на каждом узле. Но если вы используете NAT или что-то другое, например внутреннюю сеть, вы можете передавать статические значения ip своим узлам, чтобы не было необходимости в реконфигурации. но тогда вы должны предоставить IP-шлюз доступа в Интернет для всей машины. потому что не только менеджер, но и агентам нужен доступ в интернет для загрузки файлов. Конечно, когда вы закончите настройку кластера, вы можете исключить необходимость доступа агента (подчиненных) к Интернету.

Вам следует попробовать ifconfig при запуске виртуальной машины, чтобы увидеть, получает ли она значение ip из сети. Если нет, то конфигурация вашей виртуальной машины в вашем приложении VM должна быть изменена. если вы работаете на физической машине с кабельным и беспроводным подключением, то у вас будет более одного выбора адаптера Ethernet. но обязательно выберите правильный. неправильный не даст вам IP-адрес.

Обязательно используйте oracle JDK.

Время от времени проверяйте состояние clmdera scm.

sudo /sbin/service cloudera-scm-server status

проверьте, прослушиваются ли порты 7180 и другие порты менеджера cloudera. Вы можете использовать "nmap" или "netstat --listen"

Если вы не можете установить менеджер cloudera на главный узел (возможно, проблема с selinux, postgresql или загрузкой. Кстати, убедитесь, что загрузка не режется), вам может потребоваться очистить и перезапустить.

эта строка очистит файлы, хранящиеся в клоудере, и позволит вам перезапустить снова.

sudo rm -Rf /usr/share/{cmf,hue} /var/lib/cloudera* /var/cache/yum/cloudera*

вы можете перезапустить cloudera-scm-agent на подчиненных узлах, если вы что-то измените и убедитесь, что процесс работает правильно. Но вы должны скрыть чистые файлы журнала, чтобы увидеть, работает ли новая конфигурация правильно. Файлы журналов важны для того, чтобы понять, что происходит неправильно или правильно.

cd /var/log/cloudera-scm-agent
sudo rm *   

Следующие шаги - добавление хоста из веб-интерфейса менеджера cludera:

В машине менеджера я использовал "localhost: 7180" для подключения к графическому интерфейсу mamanger. в части hosts вы добавите новый хост в кластер. просто добавьте имя узла в testbox и нажмите кнопку «Найти хосты». Имя хоста уже определено в файле / etc / hosts, если вы помните. Таким образом, вы можете использовать ip или hostname в текстовом поле, если они установлены правильно, тогда mamanger найдет подходящий и перечислит их в списке выше. Если они еще не управляются (что означает, что на них еще ничего не установлено), в столбце «в данный момент управляется» будет показано «нет». в противном случае будет показано «да».

После этого вы можете продолжить установку агента cloudera и файлов hadoop на выбранные хосты. Но если вы уже установили их (если они управляются), то вы можете начать добавлять к ним сервисы. просто перейдите на страницу «Услуги» и продолжите процесс. Если вы правильно настроили хосты и видите, что они управляются, то добавить сервис очень легко и без проблем. (По крайней мере, для меня).

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

1 голос
/ 25 июля 2012

У меня тоже была похожая проблема. Cloudera Manager удалось установить все компоненты, но хосты не отображались в списке управляемых хостов.

В моем случае конфигурация имени ip / dns была в порядке. Я был в состоянии сделать поиск успешно. Позже я понял, что Cloudera нужен набор портов для управления узлами. Также дополнительные порты будут необходимы для различных сервисов Hadoop. Чтобы увидеть, не в этом ли причина проблемы, вы можете временно отключить брандмауэр. Если это проблема, обратитесь к документации Cloudera для получения списка портов. В настоящее время он находится в: https://ccp.cloudera.com/display/ENT4DOC/Configuring+Ports+for+Cloudera+Manager

0 голосов
/ 12 января 2017

вы можете проверить файл / etc / hostname. Он должен иметь имя хоста, за которым следует fqdn. HOSTNAME = hostname.fqdn Затем вы также можете запустить эту команду: имя хоста more /etc/hostname (`` not '')

0 голосов
/ 30 мая 2016

Если вы перепробовали все предложения, и по-прежнему не можете добавить новый хост в кластер,

, попробуйте следующее:

  1. выполнитеполные шаги удаления, следуя инструкциям Удаление Cloudera Manager и управляемого программного обеспечения из Удаление агента Cloudera Manager и управляемого программного обеспечения
  2. перезагрузите новый хост.

причина:

Поскольку агент управления Cloudera написан на Python.Если вам не удалось установить ранее, какой-то процесс зомби останется на вашем новом хосте, это трудно понять.

0 голосов
/ 20 июня 2015

Чтобы устранить эту ошибку, я сделал три вещи:

1) vim /etc/cloudera-scm-agent/config.ini Первоначально это было

# Hostname of Cloudera SCM Server
   server_host=localhost

Изменено имя хоста:

server_host=manager

Также убедитесь, что 'менеджер' добавлен в файл / etc / hosts

2) Установленный java в каталоге /usr/local/java/jdk1.7xxx В ~ / .bash_profile Включено после

export JAVA_HOME=/usr/local/java/jdk1.7xxx

Soft Link также может быть использован для этой цели:

export PATH=$PATH:$JAVA_HOME:bin

Cloudera, вероятно, принимает путь java как / usr / java. Поэтому я создал символическую ссылку в каталоге / usr.

3) Когда он все еще не работал, я установил MySQL Connector, используя следующее:

yum install mysql-connector-java

Перезагрузите сервер и перезапустите агенты. Тогда у меня это сработало.

...