Jak zainstalować Hadoop?


26

Próbuję zainstalować Hadoop w wersji Ubuntu 12.04. Postępując zgodnie z instrukcjami z http://michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-single-node-cluster/ , zainstalowałem java-6-openjdkz centrum oprogramowania Ubuntu. Mam ustawiony java_homew .bashrc. Również ustawiony java_homew Hadoop conf/env.sh. Podczas formatowania nazwy, pojawia się następujący błąd:

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

Dziękuję Ci. Ale to 64-bitowy system operacyjny.


1
Dlaczego nagroda jest przyznawana, gdy użytkownik znajdzie rozwiązanie? Jakiej odpowiedzi należy się spodziewać?
zielony

1
@ green7 Intencją jest znalezienie odpowiedzi, która faktycznie jest oznaczona jako zaakceptowana, jest bardzo szczegółowa i lubi. Ponieważ wydaje się, że nie istnieje, rozumiem, że Jorge dodaje nagrodę.
Thomas Ward

@TheLordofTime Szczegółowa odpowiedź zawiera 5 wierszy, ponieważ pytanie jest zbyt zlokalizowane. A jeśli oczekiwana jest odpowiedź zawierająca instrukcje instalacji dla Hadoop, byłaby zbędna, ponieważ link wspomniany w pytaniu wyjaśnia to cudownie. Ponadto, ponieważ odpowiedź, która uzyskała największą liczbę głosów, została wysłana przez pytającego, jest bardzo mało prawdopodobne, aby zaakceptował inną odpowiedź.
zielony

@ green7 jeśli pytanie jest zbyt zlokalizowane, to głosuj, aby je zamknąć?
Thomas Ward

Odpowiedzi:


39

Przewodniki, które stosowałem, gdy miałem 12.04, to:

Tak naprawdę byłem przeciwny MyLearningowi, ponieważ pierwszą rzeczą, którą polecił, była Oracle Java 7 zamiast OpenJDK 7, ale miałem pewne problemy z OpenJDK 7, kiedy to wypróbowałem, więc musiałem iść z Oracle.

Przewodnik jest w większości prosty i oto:

  1. Zainstaluj Javę

    sudo add-apt-repository ppa:webupd8team/java  
    sudo apt-get update && sudo apt-get upgrade  
    sudo apt-get install oracle-java7-installer  
    
  2. Utwórz użytkownika Hadoop

    sudo addgroup hadoop  
    sudo adduser --ingroup hadoop hduser
    

    Gdzie hduser to użytkownik Hadoop, którego chcesz mieć.

  3. Konfigurowanie SSH

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

    Aby upewnić się, że instalacja SSH przebiegła pomyślnie, możesz otworzyć nowy terminal i spróbować utworzyć sesję ssh za hduserpomocą następującego polecenia:

    ssh localhost
    

    zainstaluj ponownie ssh, jeśli localhost nie łączy się (może być konieczne dodanie hduserdo sudo jak poniżej)

    sudo apt-get install openssh-server
    
  4. Edytuj sudoers

    sudo visudo
    
  5. Dodaj na końcu linii, aby dodać hduser do sudoers

    hduser ALL=(ALL:ALL) ALL
    

    Aby zapisać, naciśnij CTRL+ X, wpisz Yi naciśnijENTER

  6. Wyłącz IPv6

    sudo gedit /etc/sysctl.conf
    

    lub

    sudo nano /etc/sysctl.conf
    

    Skopiuj następujące wiersze na końcu pliku:

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

    Jeśli napotykasz problem z informacją, że nie masz uprawnień, po prostu uruchom poprzednie polecenie z kontem głównym (w przypadku, gdy sudo nie wystarczy. Dla mnie to było)

  7. Teraz uruchom ponownie.

    Możesz także zrobić, sudo sysctl -pale wolę zrestartować komputer.

    Po ponownym uruchomieniu sprawdź, czy IPv6 jest wyłączony:

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

    powinien powiedzieć 1 . Jeśli mówi 0 , coś przeoczyłeś.

  8. Instalowanie Hadoop

    Jest na to kilka sposobów, sugerowanych przez Przewodnik, aby pobrać ze strony Apache Hadoop i rozpakować plik w hduserfolderze domowym. Zmień nazwę wyodrębnionego folderu na hadoop.

    Innym sposobem jest użycie PPA, który został przetestowany na 12.04:

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

    UWAGA: PPA może działać dla niektórych, a dla innych nie. Próbowałem pobrać z oficjalnej strony, ponieważ nie wiedziałem o PPA.

  9. Aktualizacja $HOME/.bashrc

    Musisz zaktualizować .bashrcdla hduser(i dla każdego użytkownika, którym musisz administrować Hadoop). Aby otworzyć .bashrcplik, musisz go otworzyć jako root:

    sudo gedit /home/hduser/.bashrc  
    

    lub

    sudo nano /home/hduser/.bashrc  
    

    Następnie dodasz następujące konfiguracje na końcu .bashrcpliku

    # 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  
    

    Teraz, jeśli masz OpenJDK7, wyglądałoby to mniej więcej tak:

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

    Należy tutaj zwrócić uwagę na folder, w którym znajduje się Java z wersją AMD64. Jeśli powyższe nie działa, możesz spróbować przeszukać ten konkretny folder lub ustawić Javę, która będzie używana z:

    sudo update-alternatives --config java  
    

    Teraz kilka przydatnych aliasów:

    # 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. Konfigurowanie Hadoop

    Poniżej znajdują się pliki konfiguracyjne, których możemy użyć do prawidłowej konfiguracji. Niektóre pliki, których będziesz używać w Hadoop to (Więcej informacji na tej stronie ):

    start-dfs.sh- Uruchamia demony DFS Hadoop, nazwę i węzły danych. Użyj tego przed start-mapred.sh

    stop-dfs.sh - Zatrzymuje demony Hadoop DFS.

    start-mapred.sh - Uruchamia demony Hadoop Map / Reduce, Jobtracker i Tasktrackers.

    stop-mapred.sh - Zatrzymuje demon Hadoop Map / Reduce.

    start-all.sh- Uruchamia wszystkie demony Hadoop, nazwę, węzły danych, moduł śledzenia zadań i moduł śledzenia zadań. Przestarzałe; użyj start-dfs.sh, a następnie start-mapred.sh

    stop-all.sh- Zatrzymuje wszystkie demony Hadoop. Przestarzałe; użyj stop-mapred.sh, a następnie stop-dfs.sh

    Ale zanim zaczniemy ich używać, musimy zmodyfikować kilka plików w /conffolderze.

    hadoop-env.sh

    Poszukaj pliku hadoop-env.sh, musimy tylko zaktualizować zmienną JAVA_HOME w tym pliku:

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

    lub

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

    lub w najnowszych wersjach będzie

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

    lub

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

    Następnie zmień następujący wiersz:

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

    Do

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

    Uwaga: jeśli pojawi się Error: JAVA_HOME is not setbłąd podczas uruchamiania usług, zapomniałeś odkomentować poprzednią linię (po prostu usuń #).

    core-site.xml

    Teraz musimy utworzyć katalog tymczasowy dla środowiska Hadoop. Jeśli potrzebujesz tego środowiska do testowania lub szybkiego prototypu (np. Opracuj proste programy hadoop do osobistego testu ...), sugeruję utworzenie tego folderu w /home/hduser/katalogu, w przeciwnym razie należy utworzyć ten folder w miejscu udostępnionym w folderze udostępnionym ( jak / usr / local ...), ale możesz napotkać pewne problemy z bezpieczeństwem. Ale aby przezwyciężyć wyjątki, które mogą być spowodowane bezpieczeństwem (np. Java.io.IOException), utworzyłem folder tmp w obszarze hduser.

    Aby utworzyć ten folder, wpisz następujące polecenie:

    sudo mkdir /home/hduser/tmp   
    

    Pamiętaj, że jeśli chcesz utworzyć innego użytkownika administratora (np. Hduser2 w grupie hadoop), powinieneś udzielić mu uprawnienia do odczytu i zapisu w tym folderze za pomocą następujących poleceń:

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

    Teraz możemy otworzyć, hadoop/conf/core-site.xmlaby edytować wpis hadoop.tmp.dir. Możemy otworzyć plik core-site.xml za pomocą edytora tekstu:

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

    lub

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

    Następnie dodaj następujące konfiguracje między <configure>elementami 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>
    

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

    Teraz edytuj 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. Formatowanie NameNode

    Teraz możesz rozpocząć pracę nad węzłem. Pierwszy format:

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

    lub

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

    Powinieneś sformatować NameNode w swoim HDFS. Nie należy wykonywać tego kroku, gdy system jest uruchomiony. Zwykle odbywa się to przy pierwszej instalacji.

  12. Uruchamianie klastra Hadoop

    Musisz przejść do katalogu hadoop / bin i uruchomić ./start-all.shskrypt.

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

    Jeśli masz inną wersję niż ta pokazana w przewodnikach (które najprawdopodobniej będziesz mieć, jeśli robisz to z PPA lub nowszą wersją), spróbuj tego w ten sposób:

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

    Spowoduje to uruchomienie Namenode, Datanode, Jobtracker i Tasktracker na twoim komputerze.

  13. Sprawdzanie, czy działa Hadoop

    Jest ładne narzędzie o nazwie jps. Możesz go użyć, aby upewnić się, że wszystkie usługi działają. W folderze bin hadoop wpisz:

    jps
    

    Powinien pokazać wszystkie procesy związane z Hadoop.

    UWAGA: Ponieważ zostało to zrobione około 6 miesięcy temu, jeśli jakaś część nie działa, daj mi znać.

Hadoop using Juju (A Juju Charm for Hadoop)

Zaczerpnięte z Uroczego Hadoopa

Zakładam, że następujące ustawienia są już skonfigurowane:

  • Masz serwer z ustawionym Juju
  • Masz dostęp do serwera (lokalnie lub zdalnie)
  • Skonfigurowałeś Juju i jesteś gotowy, aby zacząć dodawać uroki
  • Używasz 12.04 (ponieważ przetestowałem to wszystko z 12.04)
  • Skonfigurowałeś już ~/.juju/environments.yamlinformacje dotyczące serwera, którego będziesz używać, w tym źródło PPA.

Ok, teraz wykonaj następujące kroki, aby uruchomić usługę Hadoop:

  1. Uruchom środowisko dla Hadoop

    juju bootstrap
    

    Poczekaj na zakończenie, a następnie sprawdź, czy łączy się poprawnie:

    juju status
    
  2. Wdróż 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. Utwórz relacje

    juju add-relation hadoop-master:namenode hadoop-slave:datanode  
    
    juju add-relation hadoop-master:jobtracker hadoop-slave:tasktracker
    
  4. Ujawnij Hadoop (ponieważ już wdrożyłeś i utworzyłeś relacje usługa powinna być uruchomiona)

    juju expose hadoop-master
    

    I sprawdź status, aby zobaczyć, czy działa poprawnie:

    juju status hadoop-master
    

Do tej pory masz działający Hadoop. Istnieje wiele innych rzeczy, które możesz zrobić, które można znaleźć w podanym linku lub w oficjalnym Uroku Juju dla Hadoop

Aby uzyskać aktualne Charms JuJu (ustawienia, przewodnik krok po kroku i więcej), odwiedź: Charms JuJu i stwórz własne środowisko JuJu i zobacz, jak konfiguruje się każdy plik i jak łączy się każda usługa.



hduser (ALL)=(ALL:ALL) ALL zgłasza błąd składniowy ...
tutuca

spróbuj hduser ALL=(ALL:ALL) ALL, usuń pierwszą parę nawiasów
ssoto

1
@ssoto właśnie sprawdzone i tak. Może zmienili to w najnowszych wersjach.
Luis Alvarado,

1
.bachrc- poczekaj, aż Johann Sebastian to usłyszy. Och, czekaj, nie może ... ponieważ jest głuchy. :-D
David Foerster,

6

Pomyślnie zainstalowałem Hadoop, ustawiając ścieżkę JAVA_HOMEas usr/lib/jvm/java-6-openjdk-amd64.


Czy możesz być bardziej opisowy?
Panther

3

Pochodzące z @Luis Alvarado odpowiedź , oto moja wersja Ubuntu 14.04 i Hadoop 2.5.1

W skrócie

  1. Zainstaluj Javę
  2. Przygotuj użytkownika wykonawczego dla Hadoophduser
  3. Przełącz na hduserteraz
  4. Zezwalaj hduserna zdalne przesyłanie przez ssh bez użycia fraz
  5. Wyłącz IPv6
  6. Pobierz i skonfiguruj pakiet Hadoop
  7. Przygotuj ścieżkę systemową $ HADOOP_HOME i $ JAVA_HOME
  8. Skonfiguruj usługi Hadoop
  9. Uruchom usługi Hadoop

Gotowy. Powodzenia!

Szczegółowe kroki

Zainstaluj Javę

Ściągnij i zainstaluj

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

Upewnij się, że masz zainstalowaną Java7

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

powinniśmy javawskazać/usr/lib/jvm/java-7-oracle/jre/bin/java

Przygotuj użytkownika wykonawczego dla Hadoophduser

Utwórz użytkownika hduserw grupiehadoop

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

Grant hduserz sudo przywilej

Edytuj sudo

$ sudo visudo

Dodaj do końca tę linię

hduser ALL=(ALL:ALL) ALL

Przełącz na hduserteraz

$ su - hduser

Zezwalaj hduserna zdalne przesyłanie przez ssh bez użycia fraz

Zainstaluj openssh

$ sudo apt-get install openssh-server

Wygeneruj klucz publiczny / prywatny RSA dla połączenia SSH; hasło jest puste jakoparameter -P ""

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

Upewnij się, że hdusermożna ssh zdalnie lokalnie bez hasła

$ ssh localhost

Wyłącz IPv6

Edytuj plik konfiguracyjny

$ sudo nano /etc/sysctl.conf

Skopiuj do końca

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

Upewnij się, że IPv6 jest wyłączony przez ponowne uruchomienie lub połączenie

$ sudo sysctl -p 

Wtedy zadzwoń

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

Powinien powiedzieć 1, co oznacza OK ^^

Pobierz i skonfiguruj pakiet Hadoop

Pobierz pakiety Hadoop 2.5.1 ze strony Apache Hadoop

Bezpośrednim adresem URL tego pakietu jest ten link

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

Pobierzmy więc hduserfolder domowy, rozpakuj go i zmień nazwę nahadoop

$ 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

Upewnij się, że Hadoop jest przechowywany w hduserdomu

$ ls /home/hduser/hadoop

Przygotuj ścieżkę systemową $ HADOOP_HOME i $ JAVA_HOME

Edytuj hduserplik .bashrc

$ nano .bashrc

Dopisz wartości końcowe do $HADOOP_HOMEi$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 

Dodaj binaryfoldery Hadoop do systemu$PATH

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

Otwórz nowy terminal, zaloguj się jako hduser i upewnij się, że masz $ HADOOP_HOME z dostępnymi poleceniami

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

Powinniśmy zobaczyć pełną ścieżkę tych nazw.

Skonfiguruj usługi Hadoop

Każdy komponent w Hadoop jest konfigurowany przy użyciu pliku XML.

  • Wspólne właściwości znajdują się w pliku core-site.xml

  • Właściwości HDFS można znaleźć w pliku hdfs-site.xml

  • Właściwości MapReduce znajdują się w mapred-site.xml

wprowadź opis zdjęcia tutaj

Wszystkie pliki znajdują się w folderze $ HADOOP_HOME / etc / hadoop

Zdefiniuj ponownie JAVA_HOME, edytując hadoop-env.shwiersz

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

Zdefiniuj Hadoop temp folderi file systemnazwę w core-site.xml at

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

Musimy to przygotować temp folderzgodnie z konfiguracją na/home/hduser/tmp

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

Zdefiniuj file system„s block replicationw 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>

Zdefiniuj map-reduce jobw 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>

Format name node

$ hdfs namenode -format

Uruchom usługę Hadoop

Połączenie

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

te dwa polecenia znajdują się w $ HADOOP_HOME / sbin, które wcześniej dodaliśmy do systemu $ PATH.

Upewnij się, że usługi Hadoop są uruchomione poprawnie

$ jps

powinniśmy zobaczyć

wprowadź opis zdjęcia tutaj


1
Bardzo fajny przewodnik do naśladowania. Jest niewielki błąd: mapred-site.xmlna początku nie istnieje. Powinien zostać utworzony przezcp mapred-site.xml.template mapred-site.xml
Raptor

1

Aby móc zainstalować sun-javaza pomocą apt-getpolecenia, musisz dodać wiersz do pliku o nazwie sources.list. Ten plik można znaleźć w /etc/apt/sources.list.

Otwórz plik za pomocą tego polecenia:

sudo nano /etc/apt/sources.list

Następnie na samym końcu (na dole) tego pliku skopiuj / wklej wiersz:

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

Teraz naciśnij Ctrl+, Xaby wyjść i yzapisać.


Teraz wpisz polecenie:

sudo apt-get update 

A kiedy to zrobisz, możesz z powodzeniem uruchomić polecenie:

sudo apt-get install sun-java6-jdk

0

Aby uzyskać bardziej aktualny samouczek (nie jestem pewien co do różnic), obejrzyj samouczki wideo z zrzutami ekranowymi hadoop . Zapewniają wideo i rzeczywiste polecenia do zainstalowania pod spodem. Również, jeśli wyślesz e-maila do pisarza, z przyjemnością odpowie i pomoże ci, jeśli utkniesz z czymś.

Instrukcje te są w dużej mierze podobne do tych, na które @Luis odpowiedział.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.