Skip to main content

CDH4 & YARN на Ubuntu Lucid

Устанавливаем CDH4 (YARN) на Ubuntu 10.4 lucid в pseudo-distributed mode

ДО шагов из довольно подробного туториала https://ccp.cloudera.com/display/CDH4DOC/Installing+CDH4+on+a+Single+Linux+Node+in+Pseudo-distributed+Mode делаем следующее:

1) Беспарольный ssh: http://www.ibm.com/developerworks/ru/library/l-hadoop-1/

2) Отключаем IPv6: http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-single-node-cluster/ Зачем? Не ясно, там по ссылке что-то умное написано...

3) Проверяем, что свободны нужные порты: netstat -tnlp (был занят 9000 - освобождаем).

После этих трех шагов останавливаем и запускаем снова все 6 демонов CDH4. И наконец-то видим результаты. Кстати, посмотреть состояние кластера можно по адресу: http://<url_машины>:8088/cluster


Устанавливаем CDH4 (YARN) на Ubuntu 10.4 Lucid 

В принципе, вот подробные руководства:
https://ccp.cloudera.com/display/CDH4DOC/CDH4+Installation и
https://ccp.cloudera.com/display/CDH4DOC/Deploying+CDH4+on+a+Cluster


На всех компьютерах:

0. Предполагаем, что
0.1. Java установлена, JAVA_HOME прописана
0.2. Есть беспарольный ssh (см. выше)
0.3. Отключен IPv6 (см. выше)
0.4. Свободны нужные порты (какие? позже будет понятно =) )

То, чего нет в руководстве или непонятно, подсвечено коричневым. Все остальное из руководства.

На "главном" компьютере должны работать ResourceManager (главный по YARN) и NameNode (главный по HDFS):

1. Загрузить и распаковать пакет:

wget http://archive.cloudera.com/cdh4/one-click-install/lucid/amd64/cdh4-repository_1.0_all.deb
sudo dpkg -i cdh4-repository_1.0_all.deb


2. Добавить репозиторий:
В файле /etc/apt/sources.list.d/cloudera.list для Ubuntu Lucid должно быть:

deb [arch=amd64] http://archive.cloudera.com/cdh4/ubuntu/lucid/amd64/cdh lucid-cdh4 contrib
deb-src http://archive.cloudera.com/cdh4/ubuntu/lucid/amd64/cdh lucid-cdh4 contrib


3. Устанавливаем ResourceManager:
sudo apt-get update; sudo apt-get install hadoop-yarn-resourcemanager
NameNode:
sudo apt-get update; sudo apt-get install hadoop-hdfs-namenode
HystoryServer:
sudo apt-get update; sudo apt-get install hadoop-mapreduce-historyserver hadoop-yarn-proxyserver

Может и еще что-то из https://ccp.cloudera.com/display/CDH4DOC/CDH4+Installation#CDH4Installation-Step3, но главная нода у меня "переродилась" из pseudo-distributed mode и после частичного удаления останков предыдущей установки этого хватило.

4. Прописываем JAVA_HOME в /usr/lib/hadoop/libexec/hadoop-layout.sh

5. Конфигурирование сети:
5.1 Задаем имя узла:
sudo hostname myhost-1.full.qualified.domain.name
5.2. Меняем /etc/hosts: дописываем туда этот узел и главный узел

6.  Конфигурация HDFS
6.1. Копируем пустую кофигурацию
sudo cp -r /etc/hadoop/conf.empty /etc/hadoop/conf.my_cluster

6.2. Общая конфигурация. В конфигурации my_cluster меняем...
...core-site.xml:
<configuration>
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://namenode-host.company.com/</value>
  </property>
</configuration>


...hdfs-site.xml:

<property>
 <name>dfs.permissions.superusergroup</name>
 <value>hadoop</value>
</property>


6.3. Конфигурируем директории, где HDFS будет хранить данные:
В hdfs-site.xml допишем:
<property>
 <name>dfs.namenode.name.dir</name>
 <value>/data/1/dfs/nn,/nfsmount/dfs/nn</value>
</property>

(Теперь в hdfs-site.xml только 2 вышеперечисленных свойства!)

И создадим эти директории, задав права:
sudo mkdir -p /data/1/dfs/nn /nfsmount/dfs/nn
sudo chown -R hdfs:hdfs /data/1/dfs/nn /nfsmount/dfs/nn
sudo chmod 700 /data/1/dfs/nn /nfsmount/dfs/nn

6.4 Отформатируем NameNode:
sudo service hadoop-hdfs-namenode init

7. Конфигурация YARN

7.1. Изменить файлы конфигурации mapred-site.xml, yarn-site.xml согласно  https://ccp.cloudera.com/display/CDH4DOC/Deploying+MapReduce+v2+%28YARN%29+on+a+Cluster

7.2. Создаем необходимые директории:
sudo mkdir -p /data/1/yarn/local /data/2/yarn/local /data/3/yarn/local /data/4/yarn/local
sudo mkdir -p /data/1/yarn/logs /data/2/yarn/logs /data/3/yarn/logs /data/4/yarn/logs
sudo chown -R yarn:yarn /data/1/yarn/local /data/2/yarn/local /data/3/yarn/local /data/4/yarn/local
sudo chown -R yarn:yarn /data/1/yarn/logs /data/2/yarn/logs /data/3/yarn/logs /data/4/yarn/logs
7.3. В yarn-env.sh дописать JAVA_HOME (где-нибудь повыше, до первого ее упоминания)
# JAVA_HOME
export JAVA_HOME=/usr/lib/jvm/java-7-oracle

7.4. Пора синхронизироваться с установкой на подчиненных нодах кластера (см инструкцию ниже): здесь впору дойти  до шага 7 и выполнить его.

8. alternatives каждой ноды должен показывать на нашу конфигурацию:
Или update-alternatives или создать новую линку через
rm /etc/alternatives/hadoop-conf
ln -s /etc/hadoop/conf.my_cluster /etc/alternatives/hadoop-conf

9. Стартуем HDFS (фактически только DataNode):

for service in /etc/init.d/hadoop-hdfs-*
> do
> sudo $service start
> done

9.1. Выполни шаг 9 для подчиненных нодов.

10-12 - Есть и в инструкции для подчиненных нодов, но там их делать не надо. Эти шаги выполняются на главном ноде - результаты будут видны по всей HDFS, в том числе и на подчиненных нодов. Хотя создание на клиенте не повредит - просто скажет, что файлы уже существуют.
10. Создаем HDFS /tmp директорию:

sudo -u hdfs hadoop fs -mkdir /tmp
sudo -u hdfs hadoop fs -chmod -R 1777 /tmp


11. Создаем history директорию:

sudo -u hdfs hadoop fs -mkdir /user/history
sudo -u hdfs hadoop fs -chmod -R 1777 /user/history


12. Создаем директорию пользователя и для логов:
sudo -u hdfs hadoop fs -mkdir /user/mydir
sudo -u hdfs hadoop fs -chown myuser:myuser /user/mydir
sudo -u hdfs hadoop fs -mkdir /var/log/hadoop-yarn
sudo -u hdfs hadoop fs -chown yarn:mapred /var/log/hadoop-yarn


13. Проверка успехов:
sudo -u hdfs hadoop fs -ls -R /

14. Стартуем ResourceManager
sudo service hadoop-yarn-resourcemanager start

На клиентских машинах (после старта ResourceManager'а) стартуем NodeManager'ы

Стартуем HystoryServer
sudo service hadoop-mapreduce-historyserver start

15. Создаем домашнюю директорию для всех, кто будет пользоваться MapReduce (опять же мы и на подчиненных машинах увидим, что она создалась):
sudo -u hdfs hadoop fs -mkdir  /user/<user>
sudo -u hdfs hadoop fs -chown <user> /user/<user>

16. Устанавливаем export HADOOP_MAPRED_HOME=/usr/lib/hadoop-mapreduce

Надеюсь работает....




На всех компьютерах кроме ResourceManager:

1. Загрузить и распаковать пакет:

wget http://archive.cloudera.com/cdh4/one-click-install/lucid/amd64/cdh4-repository_1.0_all.deb
sudo dpkg -i cdh4-repository_1.0_all.deb


2. Добавить репозиторий:
В файле /etc/apt/sources.list.d/cloudera.list для Ubuntu Lucid должно быть:

deb [arch=amd64] http://archive.cloudera.com/cdh4/ubuntu/lucid/amd64/cdh lucid-cdh4 contrib
deb-src http://archive.cloudera.com/cdh4/ubuntu/lucid/amd64/cdh lucid-cdh4 contrib


3. Устанавливаем DataNode и NodeManager
sudo apt-get update; sudo apt-get install hadoop-yarn-nodemanager hadoop-hdfs-datanode hadoop-mapreduce

4. Прописываем JAVA_HOME в /usr/lib/hadoop/libexec/hadoop-layout.sh

5. Конфигурирование сети:
5.1 Задаем имя узла:
sudo hostname myhost-2.full.qualified.domain.name
5.2. Меняем /etc/hosts: дописываем туда этот узел и главный узел

6.  Конфигурация HDFS
6.1. Копируем пустую кофигурацию
sudo cp -r /etc/hadoop/conf.empty /etc/hadoop/conf.my_cluster

6.2. Общая конфигурация. В конфигурации my_cluster меняем...
...core-site.xml:
<configuration>
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://namenode-host.company.com/</value>
  </property>
</configuration>


...hdfs-site.xml:

<property>
 <name>dfs.permissions.superusergroup</name>
 <value>hadoop</value>
</property>


6.3. Конфигурируем директории, где HDFS будет хранить данные:
В hdfs-site.xml допишем:
<property>
 <name>dfs.datanode.data.dir</name>
 <value>/data/1/dfs/dn,/data/2/dfs/dn,/data/3/dfs/dn</value>
</property>

(Теперь в hdfs-site.xml только 2 вышеперечисленных свойства!)

И создадим эти директории, задав права:
sudo mkdir -p /data/1/dfs/dn /data/2/dfs/dn /data/3/dfs/dn
sudo chown -R hdfs:hdfs /data/1/dfs/dn /data/2/dfs/dn /data/3/dfs/dn
sudo chmod 700 /data/1/dfs/dn /data/2/dfs/dn /data/3/dfs/dn

7. Конфигурация YARN
Скопируйте mapred-site.xml, yarn-site.xml с "главного" нода.
7.1. Добавить имя нода в /etc/hosts главного нода.
7.2. Скопировать файл с "главного" нода (так он окажется в домашнем каталоге):
scp file user_name@remote_server:~/
7.3. Создаем необходимые директории:
sudo mkdir -p /data/1/yarn/local /data/2/yarn/local /data/3/yarn/local /data/4/yarn/local
sudo mkdir -p /data/1/yarn/logs /data/2/yarn/logs /data/3/yarn/logs /data/4/yarn/logs
sudo chown -R yarn:yarn /data/1/yarn/local /data/2/yarn/local /data/3/yarn/local /data/4/yarn/local
sudo chown -R yarn:yarn /data/1/yarn/logs /data/2/yarn/logs /data/3/yarn/logs /data/4/yarn/logs
7.4. В yarn-env.sh дописать JAVA_HOME (где-нибудь повыше, до первого ее упоминания)
# JAVA_HOME
export JAVA_HOME=/usr/lib/jvm/java-7-oracle

8. alternatives каждой ноды должен показывать на нашу конфигурацию:
Или update-alternatives или создать новую линку через
rm /etc/alternatives/hadoop-conf
ln -s /etc/hadoop/conf.my_cluster /etc/alternatives/hadoop-conf

9. Стартуем HDFS (фактически только DataNode):

for service in /etc/init.d/hadoop-hdfs-*
> do
> sudo $service start
> done


10-12 - выполняются на главном ноде - результаты будут видны по всей HDFS
10. Зачем-то создаем HDFS /tmp директорию (хотя она уже создана):

sudo -u hdfs hadoop fs -mkdir /tmp
sudo -u hdfs hadoop fs -chmod -R 1777 /tmp


11. Создаем history директорию:

sudo -u hdfs hadoop fs -mkdir /user/history
sudo -u hdfs hadoop fs -chmod -R 1777 /user/history


12. Создаем директорию пользователя и для логов:
sudo -u hdfs hadoop fs -mkdir /user/mydir
sudo -u hdfs hadoop fs -chown myuser:myuser /user/mydir
sudo -u hdfs hadoop fs -mkdir /var/log/hadoop-yarn
sudo -u hdfs hadoop fs -chown yarn:mapred /var/log/hadoop-yarn


13. Проверка успехов:
sudo -u hdfs hadoop fs -ls -R /

14. Стартуем NodeManager (после старта ResourceManager'а на главной)
sudo service hadoop-yarn-nodemanager start

15. Создаем домашнюю директорию для всех, кто будет пользоваться MapReduce (на главной машине - шаг 15, на клиентской мы увидим результат создания):
sudo -u hdfs hadoop fs -mkdir  /user/<user>
sudo -u hdfs hadoop fs -chown <user> /user/<user>

16. Устанавливаем export HADOOP_MAPRED_HOME=/usr/lib/hadoop-mapreduce

Надеюсь работает....



Чтобы добавить еще одну ноду к кластеру:
1. Проделать все шаги для еще одной "подчиненной" ноды.
Если НЕ заработало сразу, то:
2. Все остановить
3. Отформатировать NameNode на "главной" ноде, удалить все в папках на подчиненных, где хранит HDFS (в примере /data/1/dfs/dn, ...)
4. Запустить все снова, не забыв создать необходимые папки в HDFS (шаги 10-12, 15 для главной ноды)

Comments

Popular posts from this blog

Блочный, строчный, ...

Сборник советов: 1. Прижать элемент к нижнему краю контейнера: 2 . Две колонки: 3 . Что означает символ ">" в селекторе? Означает, что будут выбраны только прямые потомки. По-умному, direct descendant combinator. Иными словами, если есть: То "div a {color: blue;}" изменит цвет всех ссылок, а "div > a {color: blue;}" - только первой и третьей. 4 . TODO

Hibernate

1. Hibernate Session . Javadoc называет её главным интерфейсом между java-приложением и Hibernate. Иногда её называют единицей работы или логической транзакцией. Основная функция сессии - обеспечить операции создания, чтения, удаления объектов. Объекты могут находиться в одном из 3 состояний (см. 2) Сессия создается с помощью SessionFactory. SessionFactory знает конфигурацию ORM, её внутреннее состояния immutable. При вызове Configuration().configure() загружается файл hibernate.cfg.xml. После того, как конфигурация загружена, можно изменить настройки программно. Данные корректировки возможны только до создания экземпляра фабрики сессий. // Initialize the Hibernate environment Configuration cfg = new Configuration().configure(); // Create the session factory ServiceRegistryBuilder srb = new ServiceRegistryBuilder(); ServiceRegistry sr = srb.applySettings(cfg.getProperties()).buildServiceRegistry(); SessionFactory factory = cfg.buildSessionFactory(sr); // Obtain the new session obj...

Первые шаги в Selenium

Цель расплывчата: понять и сделать хоть что-нибудь =) Selenium Selenium - группа продуктов. Отличное описание в статье Что такое Selenium? Selenium IDE - плагин для Firefox, позволяет записать тест, выполняя действия в браузере. Казалось бы, Selenium WebDriver должен дать больше возможностей: всё таки не из графического интерфейса тесты пишем, а с помощью языка программирования, но интересная мысль в другой статье того же автора  Что такое Selenium WebDriver? : "... WebDriver не имеет прямого отношения к тестированию. Он всего лишь предоставляет автотестам доступ к браузеру. На этом его функции заканчиваются.Структурирование, группировку и запуск тестов, а также генерацию отчётов о тестировании, обеспечивает фреймворк тестирования, такой как JUnit или TestNG для Java, .."  Локаторы Выбрать элемент на странице можно используя локаторы. Локаторы (в Selenium IDE в поле target) используют DOM, XPath или CSS (или просто ищут по id/name). Полезное: XPath: XML Path La...