Come installare Hadoop?


26

Sto cercando di installare Hadoop nella versione Ubuntu 12.04. Seguendo le istruzioni di http://michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-single-node-cluster/ , ho installato java-6-openjdkdal centro software Ubuntu. Ho impostato java_homein .bashrc. Ambientato anche java_homein Hadoop conf/env.sh. Durante la formattazione del namenode, viene visualizzato il seguente errore:

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

Grazie. Ma è un sistema operativo a 64 bit.


1
Perché c'è una taglia quando l'utente ha trovato la soluzione? Che tipo di risposta è prevista?
verde

1
@ green7 L'intenzione è quella di trovare una risposta che sia effettivamente contrassegnata come accettata, altamente dettagliata e simili. Dato che non sembra essercene uno, riesco a capire Jorge che aggiunge la taglia.
Thomas Ward

@TheLordofTime La risposta dettagliata conterrebbe al massimo 5 righe poiché la domanda è troppo localizzata. E se è prevista una risposta contenente le istruzioni di installazione per Hadoop, sarebbe ridondante poiché il link menzionato nella domanda lo spiega meravigliosamente. Inoltre, poiché la risposta, con il maggior numero di voti, è stata pubblicata dal richiedente stesso, è molto improbabile che accetterebbe qualsiasi altra risposta.
verde

@ green7 se la domanda è troppo localizzata, vota per chiuderla come tale?
Thomas Ward

Risposte:


39

Le guide che ho seguito quando avevo 12.04 erano:

In realtà ero contrario a quello di MyLearning perché la prima cosa che raccomandava era Oracle Java 7 invece di OpenJDK 7, ma avevo dei problemi con OpenJDK 7 quando provavo questo, quindi ho dovuto andare con Oracle.

La guida è per lo più semplice ed eccola qui:

  1. Installa Java

    sudo add-apt-repository ppa:webupd8team/java  
    sudo apt-get update && sudo apt-get upgrade  
    sudo apt-get install oracle-java7-installer  
    
  2. Crea un utente Hadoop

    sudo addgroup hadoop  
    sudo adduser --ingroup hadoop hduser
    

    Dove hduser è l'utente Hadoop che desideri avere.

  3. Configurazione di SSH

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

    Per essere sicuri che l'installazione di SSH sia andata bene, puoi aprire un nuovo terminale e provare a creare una sessione ssh usando hduseril seguente comando:

    ssh localhost
    

    reinstallare ssh se localhost non si connette (potrebbe essere necessario aggiungere hdusera sudo come sotto passaggio)

    sudo apt-get install openssh-server
    
  4. Modifica sudatori

    sudo visudo
    
  5. Aggiungi alla fine la riga per aggiungere hduser nei sudoers

    hduser ALL=(ALL:ALL) ALL
    

    Per salvare premere CTRL+ X, digitare Ye premereENTER

  6. Disabilita IPv6

    sudo gedit /etc/sysctl.conf
    

    o

    sudo nano /etc/sysctl.conf
    

    Copia le seguenti righe alla fine del file:

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

    Se incontri un problema che ti dice, non hai i permessi, esegui il comando precedente con l'account root (Nel caso in cui sudo non fosse abbastanza. Per me lo era)

  7. Ora riavvia.

    Puoi anche farlo, sudo sysctl -pma preferisco riavviare.

    Dopo il riavvio, verificare che IPv6 sia disattivato:

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

    dovrebbe dire 1 . Se dice 0 , hai perso qualcosa.

  8. Installazione di Hadoop

    Esistono diversi modi per farlo, quello che la Guida suggerisce è di scaricare dal sito Apache Hadoop e decomprimere il file nella hdusercartella principale. Rinominare la cartella estratta in hadoop.

    L'altro modo è utilizzare un PPA che è stato testato per 12.04:

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

    NOTA: PPA potrebbe funzionare per alcuni e per altri no. Quello che ho provato è stato quello di scaricare dal sito ufficiale perché non sapevo del PPA.

  9. Aggiornare $HOME/.bashrc

    Dovrai aggiornare il .bashrcfor hduser(e per ogni utente che devi amministrare Hadoop). Per aprire il .bashrcfile, dovrai aprirlo come root:

    sudo gedit /home/hduser/.bashrc  
    

    o

    sudo nano /home/hduser/.bashrc  
    

    Quindi aggiungerai le seguenti configurazioni alla fine del .bashrcfile

    # 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  
    

    Ora, se hai OpenJDK7, sarebbe simile a questo:

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

    La cosa a cui fare attenzione qui è la cartella in cui risiede Java con la versione AMD64. Se quanto sopra non funziona, puoi provare a cercare in quella particolare cartella o impostare Java che verrà utilizzato con:

    sudo update-alternatives --config java  
    

    Ora per qualche utile alias:

    # 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. Configurazione di Hadoop

    Di seguito sono riportati i file di configurazione che è possibile utilizzare per eseguire la configurazione corretta. Alcuni dei file che utilizzerai con Hadoop sono (Ulteriori informazioni in questo sito ):

    start-dfs.sh- Avvia i demoni Hadoop DFS, il namenode e i datanodes. Usalo prima di start-mapred.sh

    stop-dfs.sh - Arresta i daemon DFS di Hadoop.

    start-mapred.sh - Avvia la mappa Hadoop / Riduce i daemon, il jobtracker e i tasktracker.

    stop-mapred.sh - Arresta la mappa di Hadoop / Riduce i demoni.

    start-all.sh- Avvia tutti i demoni Hadoop, il namenode, i datanodes, il jobtracker e i tasktrackers. deprecato; usa start-dfs.sh quindi start-mapred.sh

    stop-all.sh- Ferma tutti i demoni Hadoop. deprecato; usa stop-mapred.sh quindi stop-dfs.sh

    Ma prima di iniziare a usarli, dobbiamo modificare diversi file nella /confcartella.

    hadoop-env.sh

    Cerca il file hadoop-env.sh, dobbiamo solo aggiornare la variabile JAVA_HOME in questo file:

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

    o

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

    o nelle ultime versioni sarà

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

    o

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

    Quindi modificare la seguente riga:

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

    A

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

    Nota: se si riceve un Error: JAVA_HOME is not seterrore durante l'avvio dei servizi, si è dimenticato di rimuovere il commento dalla riga precedente (basta rimuovere #).

    core-site.xml

    Ora dobbiamo creare una directory temporanea per il framework Hadoop. Se hai bisogno di questo ambiente per il test o un prototipo rapido (ad es. Sviluppo di semplici programmi hadoop per il tuo test personale ...), ti suggerisco di creare questa cartella sotto la /home/hduser/directory, altrimenti, dovresti creare questa cartella in un posto condiviso sotto la cartella condivisa ( come / usr / local ...) ma potresti dover affrontare alcuni problemi di sicurezza. Ma per superare le eccezioni che possono essere causate dalla sicurezza (come java.io.IOException), ho creato la cartella tmp nello spazio hduser.

    Per creare questa cartella, digitare il comando seguente:

    sudo mkdir /home/hduser/tmp   
    

    Si noti che se si desidera creare un altro utente amministratore (ad esempio hduser2 nel gruppo hadoop), è necessario concedergli un'autorizzazione di lettura e scrittura su questa cartella utilizzando i seguenti comandi:

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

    Ora possiamo aprirci hadoop/conf/core-site.xmlper modificare la voce hadoop.tmp.dir. Possiamo aprire core-site.xml usando l'editor di testo:

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

    o

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

    Quindi aggiungere le seguenti configurazioni tra gli <configure>elementi 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>
    

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

    Ora modifica 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. Formattazione di NameNode

    Ora puoi iniziare a lavorare sul nodo. Primo formato:

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

    o

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

    Dovresti formattare il NameNode nel tuo HDFS. Non eseguire questo passaggio quando il sistema è in esecuzione. Di solito viene eseguito una volta alla prima installazione.

  12. Avvio di Hadoop Cluster

    Dovrai navigare nella directory hadoop / bin ed eseguire lo ./start-all.shscript.

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

    Se hai una versione diversa da quella mostrata nelle guide (che molto probabilmente avrai se lo fai con il PPA o una versione più recente) allora provalo in questo modo:

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

    Ciò avvierà un Namenode, Datanode, Jobtracker e un Tasktracker sul tuo computer.

  13. Verifica se Hadoop è in esecuzione

    C'è un bel strumento chiamato jps. Puoi usarlo per assicurarti che tutti i servizi siano attivi. Nella cartella del cestino di hadoop digitare:

    jps
    

    Dovrebbe mostrarti tutti i processi relativi a Hadoop.

    NOTA: poiché questo è stato fatto circa 6 mesi fa per me, se c'è qualche parte che non funziona fammelo sapere.

Hadoop utilizzando Juju (un fascino Juju per Hadoop)

Tratto da Hadoop affascinante

Presumo che sia già impostato quanto segue:

  • Hai già un server con Juju impostato
  • Hai accesso al server (localmente o in remoto)
  • Juju è configurato e pronto per iniziare ad aggiungere charms
  • Stai usando 12.04 (Questo perché ho provato tutto questo con 12.04)
  • Hai già configurato ~/.juju/environments.yamlle informazioni relative al server che utilizzerai, inclusa l'origine PPA.

Ok ora segui questi passaggi per avere un servizio Hadoop in esecuzione:

  1. Bootstrap l'ambiente per Hadoop

    juju bootstrap
    

    Attendi il termine, quindi controlla se si sta connettendo correttamente:

    juju status
    
  2. Distribuire 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. Crea relazioni

    juju add-relation hadoop-master:namenode hadoop-slave:datanode  
    
    juju add-relation hadoop-master:jobtracker hadoop-slave:tasktracker
    
  4. Esporre Hadoop (poiché hai già distribuito e creato relazioni, il servizio dovrebbe essere in esecuzione)

    juju expose hadoop-master
    

    E controlla lo stato per vedere se funziona correttamente:

    juju status hadoop-master
    

Fino ad ora hai un Hadoop in esecuzione. Ci sono molte altre cose che puoi fare che puoi trovare nel link fornito o nel Juju Charm ufficiale per Hadoop

Per aggiornamenti su JuJu Charms (configurazioni, guida passo passo e altro) è possibile visitare: JuJu Charms e creare il proprio ambiente JuJu e vedere come ogni file è configurato e come ogni servizio si connette.



hduser (ALL)=(ALL:ALL) ALL genera un errore di sintassi ...
tutuca,

prova con hduser ALL=(ALL:ALL) ALL, rimuovi la prima coppia di parentesi quadre
ssoto

1
@ssoto ha appena verificato e sì. Forse l'hanno cambiato nelle ultime versioni.
Luis Alvarado,

1
.bachrc- aspetta che Johann Sebastian lo senta. Oh aspetta, non può ... perché è sordo. MrGreen
David Foerster,

6

Ho installato correttamente Hadoop impostando il percorso di JAVA_HOMEas usr/lib/jvm/java-6-openjdk-amd64.


Puoi essere un po 'più descrittivo?
Pantera

3

Derivato dal di @Luis Alvarado risposta , ecco la mia versione per Ubuntu 14.04 e Hadoop 2.5.1

In breve

  1. Installa Java
  2. Preparare un utente esecutivo per Hadoophduser
  3. Passa a hduserda ora in poi
  4. Consenti hduseral telecomando via ssh con pass-frase-less
  5. Disabilita IPv6
  6. Scarica e configura il pacchetto Hadoop
  7. Preparare il percorso di sistema $ HADOOP_HOME e $ JAVA_HOME
  8. I servizi di Config Hadoop
  9. Avvia i servizi di Hadoop

Fatto. In bocca al lupo!

Passaggi di dettaglio

Installa Java

Scarica e installa

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

Assicurati di avere Java7 installato

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

dovremmo javapuntare a/usr/lib/jvm/java-7-oracle/jre/bin/java

Preparare un utente esecutivo per Hadoophduser

Crea un utente hdusernel gruppohadoop

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

Concedi hduseril privilegio sudo

Modifica sudo

$ sudo visudo

Aggiungi alla fine questa riga

hduser ALL=(ALL:ALL) ALL

Passa a hduserda ora in poi

$ su - hduser

Consenti hduseral telecomando via ssh con pass-frase-less

Installa openssh

$ sudo apt-get install openssh-server

Genera chiave pubblica / privata RSA per la connessione SSH; la passphrase è vuota comeparameter -P ""

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

Assicurati di hduserpoter ssh remoto localmente senza password

$ ssh localhost

Disabilita IPv6

Modifica il file di configurazione

$ sudo nano /etc/sysctl.conf

Copia fino alla fine

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

Assicurarsi che IPv6 sia disattivato al riavvio o alla chiamata

$ sudo sysctl -p 

Quindi chiama

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

Dovrebbe essere indicato 1 che significa OK ^^

Scarica e configura il pacchetto Hadoop

Scarica i pacchetti Hadoop 2.5.1 dal sito Apache Hadoop

L'URL diretto per questo pacchetto è questo link

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

Quindi scarichiamo nella hdusercartella home, estraiamola e rinominiamola inhadoop

$ 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

Assicurati che Hadoop sia archiviato in hdusercasa

$ ls /home/hduser/hadoop

Preparare il percorso di sistema $ HADOOP_HOME e $ JAVA_HOME

Modifica hduseril file .bashrc

$ nano .bashrc

Metti alla fine i valori per $HADOOP_HOMEe$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 

Aggiungi le binarycartelle Hadoop al sistema$PATH

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

Apri un nuovo terminale, accedi come hdusere assicurati di avere $ HADOOP_HOME con i comandi disponibili

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

Dovremmo vedere il percorso completo di quei nomi.

I servizi di Config Hadoop

Ogni componente in Hadoop è configurato usando un file XML.

  • Le proprietà comuni vanno in core-site.xml

  • Le proprietà HDFS vanno in hdfs-site.xml

  • Le proprietà di MapReduce vanno in mapred-site.xml

inserisci qui la descrizione dell'immagine

Questi file si trovano tutti nella cartella $ HADOOP_HOME / etc / hadoop

Definisci di nuovo JAVA_HOME hadoop-env.shmodificando la riga

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

Definisci Hadoop temp foldere file systemnome in core-site.xml su

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

Dobbiamo prepararlo temp foldercome configurato in/home/hduser/tmp

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

Definire file system's block replicationin 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>

Definire map-reduce jobin 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>

Formato name node

$ hdfs namenode -format

Avviare il servizio Hadoop

Chiamata

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

questi due comandi si trovano in $ HADOOP_HOME / sbin che abbiamo precedentemente aggiunto al sistema $ PATH.

Assicurarsi che i servizi Hadoop siano avviati correttamente

$ jps

dovremmo vedere

inserisci qui la descrizione dell'immagine


1
Guida molto bella da seguire. C'è un piccolo errore: mapred-site.xmlnon esiste all'inizio. Dovrebbe essere creato dacp mapred-site.xml.template mapred-site.xml
Raptor

1

Per poter installare sun-javacon il apt-getcomando, è necessario aggiungere una linea a un file chiamato sources.list. Questo file può essere trovato in /etc/apt/sources.list.

Apri il file usando questo comando:

sudo nano /etc/apt/sources.list

Quindi alla fine di (fondo) di quel file, copia / incolla la riga:

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

Ora premi Ctrl+ Xper uscire e yper salvare.


Ora digita il comando:

sudo apt-get update 

E una volta fatto, puoi eseguire correttamente il comando:

sudo apt-get install sun-java6-jdk

0

Per un tutorial più aggiornato (non sono sicuro delle differenze) guarda i tutorial video di screencast hadoop . Forniscono video e i comandi effettivi da installare al di sotto. Inoltre, se invii un'e-mail allo scrittore, è molto felice di rispondere e aiutarti se rimani bloccato con qualcosa.

Queste istruzioni sono in gran parte simili a quelle a cui @Luis ha risposto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.