Статьи

Объясненные режимы Hadoop — автономный, псевдо-распределенный, распределенный

После понимания, что такое Hadoop Давайте запустим Hadoop на одной машине:

Этот пост содержит инструкции по установке Hadoop на Ubuntu. Это краткое пошаговое руководство по установке Hadoop. Здесь вы получите все команды и их описание, необходимые для установки Hadoop в автономном режиме (кластер с одним узлом),   Hadoop в псевдо-распределенном режиме (кластер с одним узлом) и Hadoop в распределенном режиме (кластер с несколькими узлами).

Основная цель этого руководства — запустить «простую» установку Hadoop, чтобы вы могли поиграться с программным обеспечением и узнать о нем больше.

Этот учебник был протестирован на:

  • Ubuntu Linux (10.04 LTS)
  • Hadoop 0.20.2

Предпосылки:
Установите Java:
Java 1.6.x (Sun Java или Open Java) рекомендуется для Hadoop

1. Добавьте репозиторий Canonical Partner Repository в свои подходящие репозитории:

1
$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"

2. Обновите список источников

1
$ sudo apt-get update

3. Установите sun-java6-jdk

1
$ sudo apt-get install sun-java6-jdk

4. После установки быстро проверьте, правильно ли настроен Sun JDK:

1
2
3
4
user@ubuntu:~# java -version
java version "1.6.0_20"
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
Java HotSpot(TM) Client VM (build 16.3-b01, mixed mode, sharing)

Добавление выделенного пользователя системы Hadoop:
Мы будем использовать выделенную учетную запись пользователя Hadoop для запуска Hadoop. Хотя это и не требуется, но рекомендуется, потому что это помогает отделить установку Hadoop от других программных приложений и учетных записей пользователей, работающих на одном компьютере (подумайте: безопасность, разрешения, резервные копии и т. Д.)

1
$ sudo adduser hadoop_admin 

Авторизуйтесь под пользователем hadoop_admin:

1
user@ubuntu:~$ su - hadoop_admin

Установка Hadoop:

1
2
3
$ cd /usr/local
$ sudo tar xzf hadoop-0.20.2.tar.gz
$ sudo chown -R hadoop_admin /usr/local/hadoop-0.20.2  

Определить JAVA_HOME:

Отредактируйте файл конфигурации /usr/local/hadoop-0.20.2/conf/hadoop-env.sh и установите JAVA_HOME:
export JAVA_HOME = путь к корневому каталогу вашей установки Java (например, / usr / lib / jvm / java-6-sun)

1
$ vi conf/hadoop-env.sh

Перейдите в каталог установки hadoop (HADOOP_HOME, т.е. /usr/local/hadoop-0.20.2/):

1
$ bin/hadoop 

Будет сгенерирован следующий вывод:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Usage: hadoop [--config confdir] COMMAND
where COMMAND is one of:
namenode -format                format the DFS filesystem
secondarynamenode               run the DFS secondary namenode
namenode                        run the DFS namenode
datanode                        run a DFS datanode
dfsadmin                        run a DFS admin client
mradmin                         run a Map-Reduce admin client
fsck                            run a DFS filesystem checking utility
fs                              run a generic filesystem user client
balancer                        run a cluster balancing utility
jobtracker                      run the MapReduce job Tracker node
pipes                           run a Pipes job
tasktracker                     run a MapReduce task Tracker node
job                             manipulate MapReduce jobs
queue                           get information regarding JobQueues
version                         print the version
jar <jar>                       run a jar file
distcp <srcurl>                 <desturl> copy file or directories recursively
archive -archiveName NAME <src>*<dest> create a hadoop archive
daemonlog                       get/set the log level for each daemon
or
CLASSNAME                       run the class named CLASSNAME
Most commands print help when invoked w/o parameters:

Настройка Hadoop в автономном режиме завершена ……. !!!!!!!

Теперь давайте запустим несколько примеров:
1. Запустите пример Classic Pi:

1
$ bin/hadoop jar hadoop-*-examples.jar pi 10 100  

2. Запустите пример grep:

1
2
3
4
$ mkdir input
$ cp conf/*.xml input
$ bin/hadoop jar hadoop-*-examples.jar grep input output 'dfs[a-z.]+'
$ cat output/*

3. Запустите пример подсчета слов:

1
2
3
$ mkdir inputwords
$ cp conf/*.xml inputwords
$ bin/hadoop jar hadoop-*-examples.jar wordcount inputwords outputwords

Если вы обнаружите какую-либо ошибку, посетите страницу Hadoop

После запуска Hadoop в автономном режиме. Запустите Hadoop в псевдораспределенном режиме (кластер с одним узлом):

Настройка SSH:
Hadoop требует SSH-доступа для управления своими узлами, т. Е. Удаленными машинами и вашим локальным компьютером. Поэтому для нашей установки Hadoop с одним узлом нам необходимо настроить SSH-доступ к localhost для пользователя hadoop_admin.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
user@ubuntu:~$ su - hadoop_admin  
hadoop_admin@ubuntu:~$ sudo apt-get install openssh-server openssh-client
 
hadoop_admin@ubuntu:~$ ssh-keygen -t rsa -P ""
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hadoop_admin/.ssh/id_rsa):
Created directory '/home/hadoop_admin/.ssh'.
Your identification has been saved in /home/hadoop_admin/.ssh/id_rsa.
Your public key has been saved in /home/hadoop_admin/.ssh/id_rsa.pub.
The key fingerprint is:
9b:82:ea:58:b4:e0:35:d7:ff:19:66:a6:ef:ae:0e:d2 hadoop_admin@ubuntu
The key's randomart image is:
[...snipp...]
hadoop_admin@ubuntu:~$

Разрешите SSH доступ к вашему локальному компьютеру и подключитесь по ssh

01
02
03
04
05
06
07
08
09
10
$ cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
$ ssh localhost
The authenticity of host 'localhost (::1)' can't be established.
RSA key fingerprint is e7:89:26:49:ae:02:30:eb:1d:75:4f:bb:44:f9:36:29.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
Linux ubuntu 2.6.32-22-generic #33-Ubuntu SMP Wed Apr 30 13:27:30 UTC 2010 i686 GNU/Linux
Ubuntu 10.04 LTS
[...snipp...]
$

Редактировать файлы конфигурации:

01
02
03
04
05
06
07
08
09
10
11
12
13
$ vi conf/core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
 
<property>
<name>hadoop.tmp.dir</name>
<value>/tmp/hadoop-${user.name}</value>
</property>
 
</configuration>

Если вы указываете какой-то другой путь, убедитесь, что у пользователя hadoop_admin есть права на чтение и запись в этом каталоге (sudo chown hadoop_admin / your / path)

1
2
3
4
5
6
7
$ vi conf/hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
1
2
3
4
5
6
7
$ vi conf/mapred.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>

Форматирование имени узла:

1
$ /hadoop/bin/hadoop namenode -format  

Будет сгенерирован следующий вывод:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
$ bin/hadoop namenode -format
10/05/10 16:59:56 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = ubuntu/127.0.1.1
STARTUP_MSG: args = [-format]
STARTUP_MSG: version = 0.20.2
STARTUP_MSG: build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.20 -r 911707; compiled by 'chrisdo' on Fri Feb 19 08:07:34 UTC 2010
************************************************************/
10/05/10 16:59:56 INFO namenode.FSNamesystem: fsOwner=hadoop_admin,hadoop
10/05/08 16:59:56 INFO namenode.FSNamesystem: supergroup=supergroup
10/05/08 16:59:56 INFO namenode.FSNamesystem: isPermissionEnabled=true
10/05/08 16:59:56 INFO common.Storage: Image file of size 96 saved in 0 seconds.
10/05/08 16:59:57 INFO common.Storage: Storage directory .../.../dfs/name has been successfully formatted.
10/05/08 16:59:57 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at ubuntu/127.0.1.1
************************************************************/
$

НАЧАЛО ОДИНОЧНОГО КЛАСТЕРА:

1
$ /bin/start-all.sh  

Будет сгенерирован следующий вывод:

1
2
3
4
5
6
7
hadoop_admin@ubuntu:/usr/local/hadoop$ bin/start-all.sh
starting namenode, logging to /usr/local/hadoop/bin/../logs/hadoop-hadoop-namenode-ubuntu.out
localhost: starting datanode, logging to /usr/local/hadoop/bin/../logs/hadoop-hadoop-datanode-ubuntu.out
localhost: starting secondarynamenode, logging to /usr/local/hadoop/bin/../logs/hadoop-hadoop-secondarynamenode-ubuntu.out
starting jobtracker, logging to /usr/local/hadoop/bin/../logs/hadoop-hadoop-jobtracker-ubuntu.out
localhost: starting tasktracker, logging to /usr/local/hadoop/bin/../logs/hadoop-hadoop-tasktracker-ubuntu.out
hadoop_admin@ubuntu:/usr/local/hadoop$

проверьте, работают ли ожидаемые процессы Hadoop с помощью jps

1
2
3
4
5
6
$ jps
14799 NameNode
14977 SecondaryNameNode
15183 DataNode
15596 JobTracker
15897 TaskTracker

Настройка Hadoop в псевдораспределенном режиме завершена ……. !!!!!!!

ОСТАНОВКА ОДИНОЧНОГО КЛАСТЕРА:

1
$ /bin/stop-all.sh  

Будет сгенерирован следующий вывод:

1
2
3
4
5
6
7
$ bin/stop-all.sh
stopping jobtracker
localhost: stopping tasktracker
stopping namenode
localhost: stopping datanode
localhost: stopping secondarynamenode
$

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

Веб-интерфейс для NameNode
HTTP: // локальный: 50070
Веб-интерфейс для JobTracker
HTTP: // локальный: 50030
Веб-интерфейс для TaskTracker
HTTP: // локальный: 50060

После запуска Hadoop в автономном режиме. Запускаем Hadoop в распределенном режиме (многоузловой кластер).

Предварительное условие : перед запуском hadoop в распределенном режиме вы должны настроить hadoop в псевдораспределенном режиме, и вам нужно как минимум две машины, одна для главного, а другая для подчиненного (вы можете создать более одной виртуальной машины на одной машине).

КОМАНДА ОПИСАНИЕ
$ bin / stop-all.sh

Перед запуском hadoop в распределенном режиме сначала остановите каждый кластер.

запустите этот cmd на всех машинах в кластере (master и slave)  

$ vi / etc / hosts Затем введите
Мастер добавления IP (например, мастер 192.168.0.1)
IP-слэйв (например: 192.168.0.2 раб)

запустите этот cmd на всех машинах в кластере (master и slave)  

$ ssh-copy-id -i $ HOME / .ssh / id_rsa.pub slave установка пароля без пароля
( на всех машинах вы должны войти под тем же именем пользователя )

запустите этот cmd на master

или же
$ cat .ssh / id_rsa.pub

Затем его содержимое затем копируется в
Файл $ .ssh / authorized_keys ведомого (система, к которой вы хотите подключиться по SSH, без запроса пароля)

мы также можем установить ssh manuall без пароля
$ vi conf / master

затем введите мастер
Файл conf / masters определяет наменоды нашего многоузлового кластера

запустите этот cmd на master  

$ vi conf / slaves

тогда типа раб
В этом файле conf / slaves перечислены хосты, по одному на строку, где будут запускаться подчиненные демоны Hadoop (датододы и средства отслеживания задач).

запустите этот cmd на всех машинах в кластере (master и slave)    

$ vi conf / core-site.xml

затем введите:

<Свойство>
<Имя> fs.default.name </ имя>

<значение> HDFS: // мастер: 54310 </ значение>

</ Недвижимость>
Отредактируйте файл конфигурации core-site.xml

запустите этот cmd на всех машинах в кластере (master и slave)  

$ vi conf / mapred-site.xml

затем введите:

<Свойство>
<Имя> mapred.job.tracker </ имя>

<значение> мастер: 54311 </ значение>

</ Недвижимость>
Отредактируйте файл конфигурации mapred-site.xml

запустите этот cmd на всех машинах в кластере (master и slave)  

$ vi conf / hdfs-site.xml
затем введите:

<Свойство>
<Имя> dfs.replication </ имя>

<value> 2 </ value> </ property>

Отредактируйте файл конфигурации hdfs-site.xml

запустите этот cmd на всех машинах в кластере (master и slave)

$ vi conf / mapred-site.xml
затем введите:

<Свойство>
<Имя> mapred.local.dir </ имя>

<значение> $ {hadoop.tmp.dir} / mapred / местный </ значение>
</ Недвижимость>

<Свойство>
<Имя> mapred.map.tasks </ имя>

<значение> 20 </ значение>

</ Недвижимость>
<Свойство>
<Имя> mapred.reduce.tasks </ имя>

<значение> 2 </ значение>
</ Недвижимость>

Отредактируйте файл конфигурации mapred-site.xml

запустите этот cmd на master

$ bin / start-dfs.sh

Запуск многоузлового кластера. Сначала запускаются демоны HDFS. демон namenode запускается на master, а демоны datanode запускаются на всех slave

запустите этот cmd на master    

$ jps

Это должно дать вывод, как это:

14799 NameNode
15314 Jps
16977 вторичное_имя

запустите этот cmd на master

$ jps

Это должно дать вывод, как это:

15183 DataNode
15616 Jps

запустить этот cmd на всех рабах

$ bin / start-mapred.sh

Демоны MapReduce запускаются: трекер заданий запускается на главном сервере, а демоны таскера запускаются на всех подчиненных

запустите этот cmd на master  

$ jps

Это должно дать вывод, как это:

16017 Jps
14799 NameNode
15596 JobTracker
14977 SecondaryNameNode

запустите этот cmd на master  

$ jps
Это должно дать вывод, как это:

15183 DataNode
15897 TaskTracker
16284 Jps

запустить этот cmd на всех рабах  

Поздравляем, установка Hadoop завершена
HTTP: // локальный: 50070 / веб-интерфейс для имени узла
HTTP: // локальный: 50030 / веб-интерфейс для отслеживания работы
Теперь давайте запустим несколько примеров
$ bin / hadoop jar hadoop — * — examples.jar pi 10 100 пример запуска пи
$ bin / hadoop dfs -mkdir input

$ bin / hadoop dfs -put conf input

$ bin / hadoop jar hadoop — * — examples.jar grep ввод-вывод ‘dfs [az.] +’

$ bin / hadoop dfs -cat output / *

запустить пример grep
$ bin / hadoop dfs -mkdir inputwords

$ bin / hadoop dfs -put conf inputwords

$ bin / hadoop jar hadoop — * — examples.jar wordcount входные слова выходные слова

$ bin / hadoop dfs -cat outputwords / *

запустить пример wordcount
$ bin / stop-mapred.sh
$ bin / stop-dfs.sh
Чтобы остановить демонов

запустите этот cmd на master   

Справка: Hadoop в автономном режиме , Hadoop в псевдораспределенном режиме и Hadoop в распределенном режиме от нашего партнера JCG