Решение настолько очевидно, что я не вижу его и оставил проблему нерешенной в течение некоторого времени, пока она не ударила меня, делая некоторые проверки.
Ответ 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 файлов на выбранных хостах. Но если вы уже установили их (если они управляются), вы можете начать добавлять к ним сервисы. просто перейдите на страницу "Услуги" и продолжите свой процесс. Если вы правильно настроили хосты и видите, что они управляются, добавление сервиса очень просто и не проблематично (по крайней мере для меня).
пришлите нам свой комментарий. он добрый. возможно, не обязательно. но я попытался добавить каждую деталь.