Менеджер Cloudera не добавляет хосты

Я выполнил процедуру установки из здесь, и когда я достиг этапа Inspect Role Assignments, я вижу только один управляемый хост: 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.

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

Ответы

Ответ 1

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

$ host -v -t A `hostname`

My soution включал настройку локального DNS-сервера, но, возможно, просто было бы иметь одинаковые /etc/hosts на каждом node. YMMV.

Ответ 2

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

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

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

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

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

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

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

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

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

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

Oracle JDK. вы можете скачать его с сайта oracle. Просто зайдите туда и скачайте из браузера или скопируйте ссылку и используйте 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

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

Установите "ssh server"

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 требуется только для менеджера (мастер) node. нет необходимости в ведомых устройствах.

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

/etc/init.d/postgresql status

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

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

sudo yum install cloudera-manager-server-db

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

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

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

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

Script использование файла. Ниже приведена ручная настройка postgresql с файлом script

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

Необходимый параметр и описание

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

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

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

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

Подробнее об этой странице можно узнать: https://ccp.cloudera.com/display/ENT/Installation+Path + B + - + Установка + Использование + Your + Собственный + Метод # InstallationPathB-InstallationUsingYourOwnMethod-Step5% 3AConfigureaDatabasefortheClouderaManagerServer

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

/etc/init.d/postgresql start

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

проблемы. В этом случае есть 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

или просто (cloudera way) отключить iptables totaly. убедитесь, что он одинаковый для всех узлов

sudo /etc/init.d/iptables stop

проверить состояние iptables с параметром состояния

/etc/init.d/iptables status

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

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

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

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

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

sudo nano /etc/sysconfig/network

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

sudo nano /etc/hosts

пример: 127.0.0.1 localhost 192.168.1.2 masternode 192.168.1.3 namenode 192.168.1.4 datanode1 192.168.1.5 datanode2

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

sudo /sbin/service cloudera-scm-server start

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

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

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

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

Проверяйте время выполнения clodera scm.

sudo /sbin/service cloudera-scm-server status

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

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

эта строка очистит файлы cloudera realte и позволит вам снова перезапустить.

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 gui. в части хоста вы добавите новый узел в кластер. просто добавьте имя node в testbox и нажмите кнопку "Найти хосты". Имя хоста уже определено в файле /etc/hosts, если вы помните. Таким образом, вы можете использовать ip или hostname в текстовом поле, если они установлены правильно, mamanger найдет подходящий и отобразит их в списке выше. Если они еще не управляются (на них еще ничего не установлено), столбец "в настоящее время управляется" будет показывать "нет". в противном случае он покажет "да".

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

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

Ответ 3

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

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

Ответ 4

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

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/jdk 1.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

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

Ответ 5

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

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

причина:

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

Ответ 6

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