Як встановити 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 Намір полягає у тому, щоб знайти відповідь, яка насправді позначена як прийнята, дуже детальна та подобається. Оскільки, здається, такого немає, я можу зрозуміти, що Хорхе додав щедрості.
Thomas Ward

@TheLordofTime Детальна відповідь містить хоча б 5 рядків, оскільки питання занадто локалізовано. І якщо очікується відповідь, що містить інструкції з установки Hadoop, вона буде зайвою, оскільки посилання, згадане у питанні, це чудово пояснює. Більше того, оскільки відповідь, що отримала найбільше голосів, опублікував запитуючий сам, малоймовірно, що він / вона прийме будь-яку іншу відповідь.
зелений

@ green7, якщо питання занадто локалізоване, тоді голосуйте, щоб закрити його як таке?
Thomas Ward

Відповіді:


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  
    

    Якщо ви зіткнулися з проблемою, яка каже вам, у вас немає дозволів, просто запустіть попередню команду з кореневим обліковим записом (У випадку, якщо судо-ва не вистачить. Для мене це було)

  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.

  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 / Зменшує демонів, трекер та роботу.

    stop-mapred.sh - Зупиняє карту Hadoop / Зменшує демони.

    start-all.sh- Запускає всі демони Hadoop, Namodeode, вузли даних, трекер завдань і трекер завдань. Застарілий; використовувати 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під час запуску послуг ви отримаєте помилку, ви забули прокоментувати попередній рядок (просто видаліть #).

    core-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. Ви можете використовувати його для того, щоб усі сервіси працювали. У вашій папці bin hadoop:

    jps
    

    Він повинен показати вам всі процеси, пов'язані з Hadoop.

    ПРИМІТКА. Оскільки це було зроблено близько 6 місяців тому для мене, якщо якась частина не працює, дайте мені знати.

Hadoop, використовуючи джуджу (чарівність джуджу для Hadoop)

Взяті з Чарівного Hadoop

Я припускаю, що вже налаштовано:

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

Гаразд, виконайте ці дії, щоб запустити службу Hadoop:

  1. Завантажте середовище для Hadoop

    juju bootstrap
    

    Зачекайте, поки воно закінчиться, тоді перевірте, чи правильно він підключається:

    juju status
    
  2. Розгорнути Hadoop (Master and Slave)

    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. Розкрийте Hadoop (оскільки ви вже розгорнули та створили відносини, сервіс повинен працювати)

    juju expose hadoop-master
    

    І перевірте стан, щоб перевірити, чи працює він правильно:

    juju status hadoop-master
    

На сьогоднішній день у вас працює Hadoop. Є багато інших речей, які ви можете зробити, ви можете знайти за посиланням або в офіційному Джуджу Чарі для Hadoop

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



hduser (ALL)=(ALL:ALL) ALL кидає синтаксичну помилку ...
tutuca

спробуйте hduser ALL=(ALL:ALL) ALL, видаліть першу пару дужок
ssoto

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 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

Переконайтесь, що ви hduserможете віддалено локально відтворити без пароля

$ 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 / тощо / 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
Раптор

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.