Этот пост содержит инструкции по установке 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
|
|
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 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