Comment installer Hadoop?

26

J'essaie d'installer Hadoop dans la version Ubuntu 12.04. En suivant les instructions de http://michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-single-node-cluster/ , j'ai installé à java-6-openjdkpartir du centre logiciel Ubuntu. J'ai mis java_homeen .bashrc. Également défini java_homedans Hadoop conf/env.sh. Lors du formatage du namenode, j'obtiens l'erreur suivante:

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

Merci. Mais c'est un OS 64 bits.

Anitha
la source
1
Pourquoi y a-t-il une prime lorsque l'utilisateur a trouvé la solution? Quel genre de réponse est attendu?
vert
1
@ green7 L'intention est de trouver une réponse qui est en fait marquée comme acceptée, très détaillée, etc. Puisqu'il ne semble pas y en avoir, je peux comprendre que Jorge ajoute la prime.
Thomas Ward
@TheLordofTime La réponse détaillée contiendrait au maximum 5 lignes car la question est trop localisée. Et si une réponse contenant les instructions d'installation de Hadoop est attendue, elle serait redondante car le lien mentionné dans la question l'explique à merveille. De plus, puisque la réponse, avec le plus de votes, a été postée par le demandeur lui-même, il est très peu probable qu'il accepte une autre réponse.
vert
@ green7 si la question est trop localisée alors votez pour la fermer comme telle?
Thomas Ward

Réponses:

39

Les guides que j'ai suivis quand j'avais 12.04 étaient:

J'étais en fait opposé à celui de MyLearning parce que la première chose qu'il recommandait était Oracle Java 7 au lieu d'OpenJDK 7, mais j'ai eu quelques problèmes avec OpenJDK 7 lors de l'essai, j'ai donc dû aller avec Oracle.

Le guide est principalement simple et le voici:

  1. Installer Java

    sudo add-apt-repository ppa:webupd8team/java  
    sudo apt-get update && sudo apt-get upgrade  
    sudo apt-get install oracle-java7-installer  
    
  2. Créer un utilisateur Hadoop

    sudo addgroup hadoop  
    sudo adduser --ingroup hadoop hduser
    

    Où hduser est l'utilisateur Hadoop que vous souhaitez avoir.

  3. Configuration de SSH

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

    Pour être sûr que l'installation SSH s'est bien passée, vous pouvez ouvrir un nouveau terminal et essayer de créer une session ssh à l'aide hduserde la commande suivante:

    ssh localhost
    

    réinstaller ssh si localhost ne se connecte pas (vous devrez peut-être ajouter hduserà sudo comme ci-dessous)

    sudo apt-get install openssh-server
    
  4. Modifier les Sudoers

    sudo visudo
    
  5. Ajoutez à la fin la ligne pour ajouter hduser dans sudoers

    hduser ALL=(ALL:ALL) ALL
    

    Pour enregistrer, appuyez sur CTRL+ X, tapez Yet appuyez surENTER

  6. Désactiver IPv6

    sudo gedit /etc/sysctl.conf
    

    ou

    sudo nano /etc/sysctl.conf
    

    Copiez les lignes suivantes à la fin du fichier:

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

    Si vous rencontrez un problème pour vous le dire, vous n'avez pas les autorisations, il suffit d'exécuter la commande précédente avec le compte root (au cas où sudo ne suffirait pas. Pour moi c'était le cas)

  7. Redémarrez maintenant.

    Vous pouvez également le faire sudo sysctl -pmais je préfère redémarrer.

    Après le redémarrage, vérifiez que IPv6 est désactivé:

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

    il faut dire 1 . S'il indique 0 , vous avez manqué quelque chose.

  8. Installer Hadoop

    Il existe plusieurs façons de procéder, celle suggérée par le Guide est de télécharger à partir du site Apache Hadoop et de décompresser le fichier dans votre hduserdossier de départ. Renommez le dossier extrait en hadoop.

    L'autre façon est d'utiliser un PPA qui a été testé pour 12.04:

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

    REMARQUE: le PPA peut fonctionner pour certains et pour d'autres non. Celui que j'ai essayé était de télécharger sur le site officiel parce que je ne connaissais pas le PPA.

  9. Mise à jour $HOME/.bashrc

    Vous devrez mettre à jour le .bashrcpour hduser(et pour chaque utilisateur dont vous avez besoin pour administrer Hadoop). Pour ouvrir le .bashrcfichier, vous devrez l'ouvrir en tant que root:

    sudo gedit /home/hduser/.bashrc  
    

    ou

    sudo nano /home/hduser/.bashrc  
    

    Ensuite, vous ajouterez les configurations suivantes à la fin du .bashrcfichier

    # 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  
    

    Maintenant, si vous avez OpenJDK7, cela ressemblerait à ceci:

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

    La chose à surveiller ici est le dossier où réside Java avec la version AMD64. Si ce qui précède ne fonctionne pas, vous pouvez essayer de chercher dans ce dossier particulier ou de définir le Java qui sera utilisé avec:

    sudo update-alternatives --config java  
    

    Maintenant, pour un alias utile:

    # 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. Configuration de Hadoop

    Les fichiers de configuration suivants peuvent être utilisés pour effectuer la configuration appropriée. Certains des fichiers que vous utiliserez avec Hadoop sont (Plus d'informations sur ce site ):

    start-dfs.sh- Démarre les démons Hadoop DFS, le namenode et les datanodes. Utilisez-le avant start-mapred.sh

    stop-dfs.sh - Arrête les démons Hadoop DFS.

    start-mapred.sh - Démarre les démons Hadoop Map / Reduce, le jobtracker et le tasktrackers.

    stop-mapred.sh - Arrête les démons Hadoop Map / Reduce.

    start-all.sh- Démarre tous les démons Hadoop, le namenode, les datanodes, le jobtracker et le tasktrackers. Obsolète; utilisez start-dfs.sh puis start-mapred.sh

    stop-all.sh- Arrête tous les démons Hadoop. Obsolète; utilisez stop-mapred.sh puis stop-dfs.sh

    Mais avant de commencer à les utiliser, nous devons modifier plusieurs fichiers dans le /confdossier.

    hadoop-env.sh

    Recherchez le fichier hadoop-env.sh, nous devons uniquement mettre à jour la variable JAVA_HOME dans ce fichier:

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

    ou

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

    ou dans les dernières versions, ce sera

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

    ou

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

    Modifiez ensuite la ligne suivante:

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

    À

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

    Remarque: si vous obtenez une Error: JAVA_HOME is not seterreur lors du démarrage des services, vous avez oublié de décommenter la ligne précédente (supprimez simplement #).

    core-site.xml

    Nous devons maintenant créer un répertoire temporaire pour le framework Hadoop. Si vous avez besoin de cet environnement pour les tests ou d'un prototype rapide (par exemple développer des programmes hadoop simples pour votre test personnel ...), je suggère de créer ce dossier sous /home/hduser/répertoire, sinon, vous devriez créer ce dossier dans un endroit partagé sous dossier partagé ( comme / usr / local ...) mais vous pouvez rencontrer des problèmes de sécurité. Mais pour surmonter les exceptions qui peuvent être causées par la sécurité (comme java.io.IOException), j'ai créé le dossier tmp sous l'espace hduser.

    Pour créer ce dossier, tapez la commande suivante:

    sudo mkdir /home/hduser/tmp   
    

    Veuillez noter que si vous souhaitez créer un autre utilisateur administrateur (par exemple hduser2 dans le groupe hadoop), vous devez lui accorder une autorisation de lecture et d'écriture sur ce dossier à l'aide des commandes suivantes:

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

    Maintenant, nous pouvons ouvrir hadoop/conf/core-site.xmlpour modifier l'entrée hadoop.tmp.dir. Nous pouvons ouvrir le core-site.xml en utilisant l'éditeur de texte:

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

    ou

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

    Ajoutez ensuite les configurations suivantes entre les <configure>éléments 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>
    

    Maintenant éditez 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>
    

    Maintenant éditez 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. Formatage de NameNode

    Vous pouvez maintenant commencer à travailler sur le nœud. Premier format:

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

    ou

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

    Vous devez formater le NameNode dans votre HDFS. Vous ne devez pas effectuer cette étape lorsque le système est en cours d'exécution. Il est généralement effectué une première fois lors de votre installation.

  12. Démarrage du cluster Hadoop

    Vous devrez accéder au répertoire hadoop / bin et exécuter le ./start-all.shscript.

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

    Si vous avez une version différente de celle montrée dans les guides (que vous aurez très probablement si vous le faites avec le PPA ou une version plus récente), essayez-la de cette façon:

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

    Cela démarrera un Namenode, Datanode, Jobtracker et un Tasktracker sur votre machine.

  13. Vérifier si Hadoop est en cours d'exécution

    Il y a un bel outil appelé jps. Vous pouvez l'utiliser pour vous assurer que tous les services sont en place. Dans votre dossier hadoop bin, tapez:

    jps
    

    Il devrait vous montrer tous les processus liés à Hadoop.

    REMARQUE: Puisque cela a été fait il y a environ 6 mois pour moi, s'il y a une partie qui ne fonctionne pas, faites-le moi savoir.

Hadoop utilisant Juju (un charme Juju pour Hadoop)

Extrait de Charming Hadoop

Je suppose que les éléments suivants sont déjà configurés:

  • Vous avez un serveur avec Juju déjà configuré
  • Vous avez accès au serveur (localement ou à distance)
  • Vous avez Juju configuré et prêt à commencer à ajouter des charmes
  • Vous utilisez 12.04 (C'est parce que j'ai testé tout cela avec 12.04)
  • Vous avez déjà configuré ~/.juju/environments.yamlavec les informations concernant le serveur que vous utiliserez, y compris l'origine PPA.

Maintenant, suivez ces étapes pour exécuter un service Hadoop:

  1. Bootstrap l'environnement pour Hadoop

    juju bootstrap
    

    Attendez qu'il se termine puis vérifiez s'il se connecte correctement:

    juju status
    
  2. Déployer Hadoop (maître et esclave)

    juju deploy --constraints="instance-type=m1.large" hadoop hadoop-master   
    
    juju deploy --constraints="instance-type=m1.medium" -n 5 hadoop hadoop-slave
    
  3. Créer des relations

    juju add-relation hadoop-master:namenode hadoop-slave:datanode  
    
    juju add-relation hadoop-master:jobtracker hadoop-slave:tasktracker
    
  4. Exposer Hadoop (puisque vous avez déjà déployé et créé des relations, le service doit être en cours d'exécution)

    juju expose hadoop-master
    

    Et vérifiez l'état pour voir s'il fonctionne correctement:

    juju status hadoop-master
    

Jusqu'à présent, vous disposez d'un Hadoop en cours d'exécution. Il y a beaucoup d'autres choses que vous pouvez faire qui peuvent être trouvées dans le lien fourni ou dans le Juju Charm officiel pour Hadoop

Pour des charmes JuJu à jour (configurations, guide étape par étape et plus), vous pouvez visiter: Charms JuJu et créer votre propre environnement JuJu et voir comment chaque fichier est configuré et comment chaque service se connecte.

Luis Alvarado
la source
hduser (ALL)=(ALL:ALL) ALL jette une erreur de syntaxe ...
tutuca
essayez avec hduser ALL=(ALL:ALL) ALL, retirez la première paire de supports
ssoto
1
@ssoto vient de vérifier et oui. Peut-être l'ont-ils changé dans les dernières versions.
Luis Alvarado
1
.bachrc- attendez que Johann Sebastian entende cela. Oh, attends, il ne peut pas… parce qu'il est sourd. :-D
David Foerster
6

J'ai installé Hadoop avec succès en définissant le chemin d'accès en JAVA_HOMEtant que usr/lib/jvm/java-6-openjdk-amd64.

Anitha
la source
Pouvez-vous être un peu plus descriptif?
Panther
3

Dérivé de la réponse de @Luis Alvarado , voici ma version pour Ubuntu 14.04 et Hadoop 2.5.1

En bref

  1. Installer Java
  2. Préparer un utilisateur exécutif pour Hadoophduser
  3. Passez à hduserpartir de maintenant
  4. Autoriser hduserà distance via ssh avec mot de passe sans phrase
  5. Désactiver IPv6
  6. Télécharger et configurer le package Hadoop
  7. Préparez le chemin système $ HADOOP_HOME et $ JAVA_HOME
  8. Services de Config Hadoop
  9. Démarrez les services Hadoop

Terminé. Bonne chance!

Étapes de détail

Installer Java

Télécharger et installer

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

Assurez-vous que Java7 est installé

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

nous devrions avoir un javapoint/usr/lib/jvm/java-7-oracle/jre/bin/java

Préparer un utilisateur exécutif pour Hadoophduser

Créer un utilisateur hduseren groupehadoop

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

Accordez hduserle privilège sudo

Modifier sudo

$ sudo visudo

Ajouter à la fin cette ligne

hduser ALL=(ALL:ALL) ALL

Passez à hduserpartir de maintenant

$ su - hduser

Autoriser hduserà distance via ssh avec mot de passe sans phrase

Installer openssh

$ sudo apt-get install openssh-server

Générer une clé publique / privée RSA pour la connexion SSH; la phrase de passe est vide carparameter -P ""

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

Assurez-vous que hduserssh peut être distant localement sans mot de passe

$ ssh localhost

Désactiver IPv6

Editez le fichier de configuration

$ sudo nano /etc/sysctl.conf

Copier jusqu'à la fin

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

Assurez-vous que IPv6 est désactivé par un redémarrage ou un appel

$ sudo sysctl -p 

Appelez ensuite

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

Il faut dire 1 ce qui signifie OK ^^

Télécharger et configurer le package Hadoop

Télécharger les packages Hadoop 2.5.1 depuis le site Apache Hadoop

L'URL directe de ce package est ce lien

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

Alors téléchargeons dans hduserle dossier de départ, extrayons-le et renommez-le enhadoop

$ 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

Assurez-vous que Hadoop est stocké à la hdusermaison

$ ls /home/hduser/hadoop

Préparez le chemin système $ HADOOP_HOME et $ JAVA_HOME

Modifier hduserle fichier .bashrc

$ nano .bashrc

Mettre à la fin des valeurs pour $HADOOP_HOMEet$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 

Ajouter les binarydossiers Hadoop au système$PATH

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

Ouvrez un nouveau terminal, connectez-vous en tant que hduseret assurez-vous d'avoir $ HADOOP_HOME avec les commandes disponibles

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

Nous devrions voir le chemin complet de ces noms.

Services de Config Hadoop

Chaque composant dans Hadoop est configuré à l'aide d'un fichier XML.

  • Les propriétés communes vont dans core-site.xml

  • Les propriétés HDFS vont dans hdfs-site.xml

  • Les propriétés MapReduce vont dans mapred-site.xml

entrez la description de l'image ici

Ces fichiers se trouvent tous dans le dossier $ HADOOP_HOME / etc / hadoop

Définissez à nouveau JAVA_HOME en modifiant hadoop-env.shla ligne

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

Définissez Hadoop temp folderet file systemnom dans 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>

Nous devons préparer cela temp foldercomme configuré à/home/hduser/tmp

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

Définir file systemles block replicationdans 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>

Définir map-reduce jobdans 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

Démarrer le service Hadoop

Appel

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

ces deux commandes sont situées dans $ HADOOP_HOME / sbin que nous avons ajoutées au système $ PATH auparavant.

Assurez-vous que les services Hadoop sont démarrés correctement

$ jps

on devrait voir

entrez la description de l'image ici

Nam G VU
la source
1
Très beau guide à suivre. Il y a une petite erreur: mapred-site.xmln'existe pas au début. Il devrait être créé parcp mapred-site.xml.template mapred-site.xml
Raptor
1

Pour pouvoir installer sun-javaavec la apt-getcommande, vous devez ajouter une ligne à un fichier appelé sources.list. Ce fichier se trouve dans /etc/apt/sources.list.

Ouvrez le fichier à l'aide de cette commande:

sudo nano /etc/apt/sources.list

Puis à la toute fin (en bas) de ce fichier, vous copiez / collez la ligne:

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

Appuyez maintenant sur Ctrl+ Xpour quitter et ypour enregistrer.


Tapez maintenant la commande:

sudo apt-get update 

Et lorsque cela est fait, vous pouvez exécuter la commande avec succès:

sudo apt-get install sun-java6-jdk
Daniel Adeniji
la source
0

Pour un tutoriel plus à jour (pas sûr des différences), regardez les tutoriels vidéo des screencasts hadoop . Ils fournissent la vidéo et les commandes réelles à installer en dessous. De plus, si vous envoyez un e-mail à l'auteur, il est très heureux de répondre et de vous aider si vous êtes coincé avec quoi que ce soit.

Ces instructions sont largement similaires à celles avec lesquelles @Luis a répondu.

planty182
la source