Как установить Hadoop?


26

Я пытаюсь установить Hadoop в версии Ubuntu 12.04. Следуя инструкциям http://michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-single-node-cluster/ , я установил их java-6-openjdkиз программного центра Ubuntu. Я поставил java_homeв .bashrc. Также установлен java_homeв Hadoop conf/env.sh. При форматировании наменода я получаю следующую ошибку:

usr/lib/jvm/java-6-openjdk/bin/java no such file or directory.

Спасибо. Но это 64-битная ОС.


1
Почему существует щедрость, когда пользователь нашел решение? Какой ответ ожидается?
зеленый,

1
@ green7 Цель состоит в том, чтобы найти ответ, который на самом деле помечен как принятый, очень подробный и нравится. Так как, кажется, его нет, я могу понять, как Хорхе добавляет награду.
Томас Уорд

@TheLordofTime Подробный ответ должен содержать не более 5 строк, поскольку вопрос слишком локализован. И если ожидается ответ, содержащий инструкции по установке Hadoop, он будет излишним, поскольку ссылка, упомянутая в этом вопросе, прекрасно его объясняет. Более того, поскольку ответ, набравший наибольшее количество голосов, был опубликован самим спрашивающим, очень маловероятно, что он / она примет любой другой ответ.
зеленый,

@ green7 если вопрос слишком локализован, то проголосуй, чтобы закрыть его как таковой?
Томас Уорд

Ответы:


39

Руководства, за которыми я следовал, когда у меня было 12.04, были:

На самом деле я был против MyLearning, потому что первым, что он порекомендовал, была Oracle Java 7 вместо OpenJDK 7, но у меня были некоторые проблемы с OpenJDK 7, когда я пробовал это, поэтому мне пришлось пойти с Oracle.

Руководство в основном прямо вперед и вот оно:

  1. Установить Java

    sudo add-apt-repository ppa:webupd8team/java  
    sudo apt-get update && sudo apt-get upgrade  
    sudo apt-get install oracle-java7-installer  
    
  2. Создать пользователя Hadoop

    sudo addgroup hadoop  
    sudo adduser --ingroup hadoop hduser
    

    Где hduser - это пользователь Hadoop, которого вы хотите иметь.

  3. Настройка SSH

    su - hduser   
    ssh-keygen -t rsa -P ""
    cat .ssh/id_rsa.pub >> .ssh/authorized_keys
    

    Чтобы убедиться, что установка SSH прошла успешно, вы можете открыть новый терминал и попытаться создать сессию ssh, используя hduserследующую команду:

    ssh localhost
    

    переустановите ssh, если localhost не подключается (вам может потребоваться добавить hduserв sudo, как показано ниже)

    sudo apt-get install openssh-server
    
  4. Редактировать Судо

    sudo visudo
    
  5. Добавьте в конце строку, чтобы добавить hduser в sudoers

    hduser ALL=(ALL:ALL) ALL
    

    Для сохранения нажмите CTRL+ X, введите Yи нажмитеENTER

  6. Отключить IPv6

    sudo gedit /etc/sysctl.conf
    

    или

    sudo nano /etc/sysctl.conf
    

    Скопируйте следующие строки в конец файла:

    #disable ipv6  
    net.ipv6.conf.all.disable_ipv6 = 1  
    net.ipv6.conf.default.disable_ipv6 = 1   
    net.ipv6.conf.lo.disable_ipv6 = 1  
    

    Если у вас возникли проблемы с сообщением, у вас нет прав, просто запустите предыдущую команду с учетной записью root (на случай, если sudo недостаточно. Для меня это было)

  7. Теперь перезагрузитесь.

    Вы тоже можете сделать, sudo sysctl -pно я лучше перезагрузить.

    После перезагрузки убедитесь, что IPv6 выключен:

    cat /proc/sys/net/ipv6/conf/all/disable_ipv6
    

    это должно сказать 1 . Если он говорит 0 , вы что-то пропустили.

  8. Установка Hadoop

    Есть несколько способов сделать это, один из которых предлагает Руководство, это загрузить его с сайта Apache Hadoop и распаковать файл в вашей hduserдомашней папке. Переименуйте извлеченную папку в hadoop.

    Другой способ - использовать PPA, протестированный на 12.04:

    sudo add-apt-repository ppa:hadoop-ubuntu/stable  
    sudo apt-get update && sudo apt-get upgrade  
    sudo apt-get install hadoop  
    

    ПРИМЕЧАНИЕ: PPA может работать для некоторых, а для других - нет. Тот, который я попробовал, был загружен с официального сайта, потому что я не знал о PPA.

  9. Обновить $HOME/.bashrc

    Вам нужно будет обновить .bashrcдля hduser(и для каждого пользователя вам нужно администрировать Hadoop). Чтобы открыть .bashrcфайл, вам нужно открыть его как root:

    sudo gedit /home/hduser/.bashrc  
    

    или

    sudo nano /home/hduser/.bashrc  
    

    Затем вы добавите следующие конфигурации в конец .bashrcфайла

    # Set Hadoop-related environment variables   
    export HADOOP_HOME=/home/hduser/hadoop  
    
    # Set JAVA_HOME (we will also configure JAVA_HOME directly for Hadoop later on)`
    export JAVA_HOME=/usr/lib/jvm/java-7-oracle  
    

    Теперь, если у вас есть OpenJDK7, это будет выглядеть примерно так:

    export JAVA_HOME=/usr/lib/java-7-openjdk-amd64  
    

    Здесь следует обратить внимание на папку, в которой находится Java с версией AMD64. Если вышеупомянутое не работает, вы можете попробовать поискать в этой конкретной папке или настроить Java, который будет использоваться с:

    sudo update-alternatives --config java  
    

    Теперь для некоторого полезного псевдонима:

    # Some convenient aliases and functions for running Hadoop-related commands  
    unalias fs &> /dev/null   
    alias fs="hadoop fs"    
    unalias hls &> /dev/null  
    alias hls="fs -ls"  
    
    # Add Hadoop bin/ directory to PATH  
    export PATH=$PATH:$HADOOP_HOME/bin  
    
  10. Конфигурирование Hadoop

    Ниже приведены файлы конфигурации, которые мы можем использовать для правильной настройки. Вот некоторые из файлов, которые вы будете использовать с Hadoop (дополнительная информация на этом сайте ):

    start-dfs.sh- Запускает демоны Hadoop DFS, наменоды и датододы. Используйте это перед start-mapred.sh

    stop-dfs.sh - Останавливает демоны Hadoop DFS.

    start-mapred.sh - Запускает Hadoop Map / Снижение демонов, трекеров и треккеров.

    stop-mapred.sh - Останавливает карту Hadoop / Уменьшает демонов.

    start-all.sh- Запускает все демоны Hadoop, namenode, датододы, трекеры и треккеры. Устаревшие; используйте start-dfs.sh, затем start-mapred.sh

    stop-all.sh- Останавливает все демоны Hadoop. Устаревшие; используйте stop-mapred.sh, затем stop-dfs.sh

    Но прежде чем мы начнем их использовать, нам нужно изменить несколько файлов в /confпапке.

    hadoop-env.sh

    Ищите файл hadoop-env.sh, нам нужно только обновить переменную JAVA_HOME в этом файле:

    sudo gedit /home/hduser/hadoop/conf/hadoop-env.sh
    

    или

    sudo nano /home/hduser/hadoop/conf/hadoop-env.sh
    

    или в последних версиях он будет в

    sudo nano /etc/hadoop/conf.empty/hadoop-env.sh
    

    или

    sudo nano /etc/hadoop/hadoop-env.sh
    

    Затем измените следующую строку:

    # export JAVA_HOME=/usr/lib/j2sdk1.5-sun
    

    к

    export JAVA_HOME=/usr/lib/jvm/java-7-oracle
    

    Примечание: если вы получили сообщение об Error: JAVA_HOME is not setошибке при запуске служб, вы забыли раскомментировать предыдущую строку (просто удалите #).

    ядро-site.xml

    Теперь нам нужно создать временный каталог для фреймворка Hadoop. Если вам нужна эта среда для тестирования или быстрого прототипа (например, разработка простых программ hadoop для вашего личного теста ...), я предлагаю создать эту папку в /home/hduser/каталоге, в противном случае вам следует создать эту папку в общем месте в общей папке ( как / usr / local ...) но вы можете столкнуться с некоторыми проблемами безопасности. Но чтобы преодолеть исключения, которые могут быть вызваны безопасностью (например, java.io.IOException), я создал папку tmp в пространстве hduser.

    Чтобы создать эту папку, введите следующую команду:

    sudo mkdir /home/hduser/tmp   
    

    Обратите внимание, что если вы хотите сделать другого пользователя-администратора (например, hduser2 в группе hadoop), вы должны предоставить ему разрешение на чтение и запись для этой папки, используя следующие команды:

    sudo chown hduser:hadoop /home/hduser/tmp  
    sudo chmod 755 /home/hduser/tmp  
    

    Теперь мы можем открыть hadoop/conf/core-site.xmlдля редактирования записи hadoop.tmp.dir. Мы можем открыть core-site.xml с помощью текстового редактора:

    sudo gedit /home/hduser/etc/hadoop/core-site.xml  
    

    или

    nano /home/hduser/etc/hadoop/core-site.xml
    

    Затем добавьте следующие конфигурации между <configure>элементами xml :

    <property>
      <name>hadoop.tmp.dir</name>
      <value>/home/hduser/tmp</value>
      <description>A base for other temporary directories.</description>
    </property>
    
    <property>
      <name>fs.default.name</name>
      <value>hdfs://localhost:54310</value>
      <description>The name of the default file system.  A URI whose
      scheme and authority determine the FileSystem implementation.  The
      uri's scheme determines the config property (fs.SCHEME.impl) naming
      the FileSystem implementation class.  The uri's authority is used to
      determine the host, port, etc. for a filesystem.</description>
    </property>
    

    Сейчас редактирую mapred-site.xml

    <property>
      <name>mapred.job.tracker</name>
      <value>localhost:54311</value>
      <description>The host and port that the MapReduce job tracker runs
      at.  If "local", then jobs are run in-process as a single map
      and reduce task.
      </description>
    </property>
    

    Сейчас редактирую hdfs-site.xml

    <property>
      <name>dfs.replication</name>
      <value>1</value>
      <description>Default block replication.
      The actual number of replications can be specified when the file is created.
      The default is used if replication is not specified in create time.
      </description>
    </property> 
    
  11. Форматирование NameNode

    Теперь вы можете начать работу над узлом. Первый формат:

    ~/hduser/hadoop/bin/hadoop namenode -format
    

    или

    ./home/hduser/hadoop/bin/hadoop namenode -format
    

    Вы должны отформатировать NameNode в вашей HDFS. Вы не должны делать этот шаг, когда система работает. Обычно это делается один раз при первой установке.

  12. Запуск кластера Hadoop

    Вам нужно будет перейти в каталог hadoop / bin и запустить ./start-all.shскрипт.

    cd ~/hduser/hadoop/bin/  
    start-all.sh  
    

    Если у вас есть версия, отличная от показанной в руководствах (которая, скорее всего, будет у вас, если вы сделаете это с PPA или более новой версией), попробуйте это следующим образом:

    cd ~/hduser/hadoop/bin/   
    start-dfs.sh  
    start-mapred.sh   
    

    Это запустит Namenode, Datanode, Jobtracker и Tasktracker на вашей машине.

  13. Проверка, работает ли Hadoop

    Есть хороший инструмент под названием jps. Вы можете использовать его, чтобы убедиться, что все услуги работают. В вашей папке hadoop bin введите:

    jps
    

    Он должен показать вам все процессы, связанные с Hadoop.

    ПРИМЕЧАНИЕ: Поскольку это было сделано около 6 месяцев назад для меня, если какая-либо часть не работает, дайте мне знать.

Hadoop Используя Juju (Очарование Джуджу для Hadoop)

Взято из очаровательного Hadoop

Я предполагаю, что следующее уже установлено:

  • У вас есть сервер с уже установленным Juju
  • У вас есть доступ к серверу (локально или удаленно)
  • Вы настроили Juju и готовы начать добавлять чары
  • Вы используете 12.04 (это потому, что я проверил все это с 12.04)
  • Вы уже настроили ~/.juju/environments.yamlинформацию, касающуюся сервера, который вы будете использовать, включая источник PPA.

Хорошо, теперь выполните следующие действия, чтобы запустить сервис Hadoop:

  1. Загрузите среду для Hadoop

    juju bootstrap
    

    Подождите, пока он не закончится, затем проверьте, правильно ли он подключается:

    juju status
    
  2. Развернуть Hadoop (Мастер и Раб)

    juju deploy --constraints="instance-type=m1.large" hadoop hadoop-master   
    
    juju deploy --constraints="instance-type=m1.medium" -n 5 hadoop hadoop-slave
    
  3. Создать отношения

    juju add-relation hadoop-master:namenode hadoop-slave:datanode  
    
    juju add-relation hadoop-master:jobtracker hadoop-slave:tasktracker
    
  4. Expose Hadoop (поскольку вы уже развернули и создали отношения, служба должна работать)

    juju expose hadoop-master
    

    И проверьте статус, чтобы увидеть, работает ли он правильно:

    juju status hadoop-master
    

До сих пор у вас работает Hadoop. Есть еще много вещей, которые вы можете сделать, которые можно найти в приведенной ссылке или в официальном Чаржу Джуджу для Hadoop.

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



hduser (ALL)=(ALL:ALL) ALL выдает синтаксическую ошибку ...
tutuca

попробуй с hduser ALL=(ALL:ALL) ALL, убери первую пару скобок
ссото

1
@ssoto только что проверил и да. Возможно они изменили это в последних версиях.
Луис Альварадо

1
.bachrc- подожди, пока Иоганн Себастьян услышит это. Ой, подождите, он не может ... потому что он глухой. :-D
Дэвид Фёрстер

6

Я успешно установил Hadoop, установив путь JAVA_HOMEкак usr/lib/jvm/java-6-openjdk-amd64.


Можете ли вы быть немного более информативным?
Пантера

3

Производная от @Luis Альварадо ответа , вот моя версия для Ubuntu 14.04 и Hadoop 2.5.1

Вкратце

  1. Установить Java
  2. Подготовить исполнительного пользователя для Hadoophduser
  3. Переключиться на hduserс этого момента
  4. Разрешить hduserудаленный доступ через ssh с паролем
  5. Отключить IPv6
  6. Скачать и настроить пакет Hadoop
  7. Подготовьте системный путь $ HADOOP_HOME и $ JAVA_HOME
  8. Конфиг услуги Hadoop
  9. Запустите сервисы Hadoop

Выполнено. Удачи!

Подробные шаги

Установить Java

Загрузить и установить

$ sudo add-apt-repository ppa:webupd8team/java    
$ sudo apt-get update && sudo apt-get upgrade    
$ sudo apt-get install oracle-java7-installer

Убедитесь, что у вас установлена ​​Java7

$ which java
$ ls -l /usr/bin/java
$ ls -l /etc/alternatives/java

мы должны javaуказать на/usr/lib/jvm/java-7-oracle/jre/bin/java

Подготовить исполнительного пользователя для Hadoophduser

Создать пользователя hduserв группеhadoop

$ sudo addgroup hadoop  
$ sudo adduser --ingroup hadoop hduser

Грант hduserна SUDO привилегии

Редактировать sudo

$ sudo visudo

Добавьте в конец эту строку

hduser ALL=(ALL:ALL) ALL

Переключиться на hduserс этого момента

$ su - hduser

Разрешить hduserудаленный доступ через ssh с паролем

Установить openssh

$ sudo apt-get install openssh-server

Генерируйте открытый / закрытый ключ RSA для соединения SSH; парольная фраза пуста какparameter -P ""

$ ssh-keygen -t rsa -P ""
$ cat .ssh/id_rsa.pub >> .ssh/authorized_keys

Убедитесь, что hduserssh может удаленно удаленно без пароля

$ ssh localhost

Отключить IPv6

Отредактируйте файл конфигурации

$ sudo nano /etc/sysctl.conf

Копировать до конца

#disable ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1   
net.ipv6.conf.lo.disable_ipv6 = 1

Убедитесь, что IPv6 выключен перезагрузкой или вызовом

$ sudo sysctl -p 

Тогда позвони

$ cat /proc/sys/net/ipv6/conf/all/disable_ipv6

Должен сказать 1, что означает ОК ^^

Скачать и настроить пакет Hadoop

Загрузите пакеты Hadoop 2.5.1 с сайта Apache Hadoop

Прямой URL для этого пакета - это ссылка

http://www.eu.apache.org/dist/hadoop/core/hadoop-2.5.1/hadoop-2.5.1.tar.gz

Итак, давайте загрузим в hduserдомашнюю папку, распакуем ее и переименуем вhadoop

$ wget http://www.eu.apache.org/dist/hadoop/core/hadoop-2.5.1/hadoop-2.5.1.tar.gz
$ tar -xvzf hadoop-2.5.1.tar.gz
$ mv hadoop-2.5.1 hadoop

Убедитесь, что Hadoop хранится hduserдома

$ ls /home/hduser/hadoop

Подготовьте системный путь $ HADOOP_HOME и $ JAVA_HOME

Редактировать hduserфайл .bashrc

$ nano .bashrc

Положить в конец значения для $HADOOP_HOMEи$JAVA_HOME

# Set Hadoop-related environment variables   
export HADOOP_HOME=/home/hduser/hadoop  

# Set JAVA_HOME (we will also configure JAVA_HOME directly for Hadoop later on)
export JAVA_HOME=/usr/lib/jvm/java-7-oracle 

Добавьте binaryпапки Hadoop в систему$PATH

export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

Откройте новый терминал, войдите как hduserи убедитесь, что у вас есть $ HADOOP_HOME с доступными командами

$ echo $HADOOP_HOME
$ which start-all.sh
$ which start-dfs.sh
$ which start-yarn.sh

Мы должны увидеть полный путь этих имен.

Конфиг услуги Hadoop

Каждый компонент в Hadoop настраивается с использованием файла XML.

  • Общие свойства находятся в core-site.xml

  • Свойства HDFS находятся в hdfs-site.xml

  • Свойства MapReduce находятся в mapred-site.xml

введите описание изображения здесь

Все эти файлы находятся в папке $ HADOOP_HOME / etc / hadoop

Опять определим JAVA_HOME hadoop-env.sh, отредактировав строку

export JAVA_HOME=/usr/lib/jvm/java-7-oracle

Определите Hadoop temp folderи file systemимя в core-site.xml в

<configuration>
  ...
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/home/hduser/tmp</value>
    <description>A base for other temporary directories.</description>
  </property>

  <property>
    <name>fs.default.name</name>
    <value>hdfs://localhost:54310</value>
    <description>The name of the default file system.  A URI whose
    scheme and authority determine the FileSystem implementation.  The
    uri's scheme determines the config property (fs.SCHEME.impl) naming
    the FileSystem implementation class.  The uri's authority is used to
    determine the host, port, etc. for a filesystem.</description>
  </property>
  ...
</configuration>

Нам нужно подготовить это temp folderкак настроено в/home/hduser/tmp

$ cd /home/hduser
$ mkdir tmp
$ chown hduser:hadoop tmp
$ chmod 755 tmp

Определение file system«S block replicationв HDFS-site.xml

<configuration>
  ...
  <property>
    <name>dfs.replication</name>
    <value>1</value>
    <description>Default block replication.
    The actual number of replications can be specified when the file is created.
    The default is used if replication is not specified in create time.
    </description>
  </property>
  ...
</configuration>

Определить map-reduce jobв mapred-site.xml

<configuration>
  ...
  <property>
    <name>mapred.job.tracker</name>
    <value>localhost:54311</value>
    <description>The host and port that the MapReduce job tracker runs
    at.  If "local", then jobs are run in-process as a single map
    and reduce task.
    </description>
  </property>
  ...
</configuration>

Формат name node

$ hdfs namenode -format

Запустить сервис Hadoop

Вызов

$ start-dfs.sh && start-yarn.sh

Эти две команды находятся в каталоге $ HADOOP_HOME / sbin, который мы добавили в систему $ PATH ранее.

Убедитесь, что сервисы Hadoop запущены правильно

$ jps

мы должны увидеть

введите описание изображения здесь


1
Очень хорошее руководство для подражания. Есть небольшая ошибка: mapred-site.xmlне существует в начале. Он должен быть созданcp mapred-site.xml.template mapred-site.xml
Raptor

1

Чтобы установить sun-javaс помощью apt-getкоманды, вам нужно добавить строку в файл с именем sources.list. Этот файл можно найти в /etc/apt/sources.list.

Откройте файл с помощью этой команды:

sudo nano /etc/apt/sources.list

Затем в самом конце (внизу) этого файла вы копируете / вставляете строку:

deb http://us.archive.ubuntu.com/ubuntu/ hardy multiverse

Теперь нажмите Ctrl+ Xдля выхода и yсохранения.


Теперь введите команду:

sudo apt-get update 

И когда это будет сделано, вы можете успешно запустить команду:

sudo apt-get install sun-java6-jdk

0

Для более современного урока (не уверенного в различиях) посмотрите видео-уроки по скриншотам hadoop . Они предоставляют видео и фактические команды для установки снизу. Также, если вы напишите автору по электронной почте, он будет очень рад ответить и помочь вам, если вы застряли с чем-либо.

Эти инструкции в значительной степени похожи на те, на которые ответил @Luis.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.