Tutoriel d'installation de Hadoop (machine unique/configuration pseudo-distribuée)

Le fichier d'installation Hadoop peut être téléchargé à partir du site Web officiel de Hadoop, ou vous pouvez cliquer ici pour le télécharger à partir du disque cloud Baidu (code extrait : 99bg). Après avoir entré le lien du disque cloud Baidu, recherchez le fichier d'installation Hadoop hadoop-2.7.1 .tar.gz (ce tutoriel). Peut également être utilisé pour installer Hadoop version 2.7.1).

environnement

Ce didacticiel utilise Ubuntu 14.04 64 bits comme environnement système (Ubuntu 12.04, Ubuntu 16.04 fonctionnent également, à la fois 32 bits et 64 bits).

VMware peut être utilisé comme une machine virtuelle ( tutoriel de sélection et d'installation de la version de la machine virtuelle VMware - blog de slag slag ye - blog CSDN )

Créer un utilisateur hadoop

Si vous n'avez pas installé Ubuntu en tant qu'utilisateur "hadoop", vous devrez ajouter un utilisateur nommé hadoop.

Tout d'abord, appuyez sur  ctrl+alt+t  pour ouvrir une fenêtre de terminal et saisissez la commande suivante pour créer un nouvel utilisateur :

sudo useradd -m hadoop -s /bin/bash

Cette commande crée un utilisateur hadoop qui peut se connecter et utilise /bin/bash comme shell.

Utilisez ensuite la commande suivante pour définir le mot de passe, qui peut être simplement défini sur hadoop, et saisissez le mot de passe deux fois lorsque vous y êtes invité :

sudo passwd hadoop

Vous pouvez ajouter des privilèges d'administrateur pour les utilisateurs hadoop afin de faciliter le déploiement :

sudo adduser hadoop sudo

Enfin, déconnectez-vous de l'utilisateur actuel (cliquez sur l'engrenage dans le coin supérieur droit de l'écran et sélectionnez déconnexion) pour revenir à l'interface de connexion. Dans l'interface de connexion, sélectionnez l'utilisateur hadoop que vous venez de créer pour vous connecter.

mettre à jour apt 

Après vous être connecté avec l'utilisateur hadoop, nous mettons d'abord à jour apt, puis nous utilisons apt pour installer le logiciel. S'il n'est pas mis à jour, certains logiciels peuvent ne pas être installés. Appuyez sur ctrl+alt+t pour ouvrir une fenêtre de terminal et exécutez la commande suivante : 

sudo apt-get update

Certains fichiers de configuration doivent être modifiés ultérieurement, vous pouvez utiliser vim (version améliorée de vi, l'utilisation de base est la même), il est recommandé de l'installer (si vous ne savez vraiment pas comment utiliser vi/vim, veuillez modifier le endroit où vim est utilisé plus tard pour gedit, vous pouvez donc l'utiliser dans l'éditeur de texte et fermer l'intégralité du programme gedit après chaque modification de fichier, sinon il occupera le terminal) :

sudo apt-get install vim

Si vous avez besoin d'une confirmation lors de l'installation du logiciel, entrez simplement y à l'invite.

 

Installez SSH, configurez la connexion sans mot de passe SSH

Les modes cluster et nœud unique nécessitent une connexion SSH (similaire à la connexion à distance, vous pouvez vous connecter à un hôte Linux et y exécuter des commandes).Ubuntu a installé le client SSH par défaut et doit également installer le serveur SSH :

sudo apt-get install openssh-server

Après l'installation, vous pouvez utiliser la commande suivante pour vous connecter à la machine :

ssh localhost

À ce stade, il y aura l'invite suivante (première invite de connexion SSH), entrez oui. Entrez ensuite le mot de passe hadoop en fonction de l'invite, afin de pouvoir vous connecter à la machine.

Mais cette connexion nécessite un mot de passe à chaque fois, nous devons configurer la connexion sans mot de passe SSH est plus pratique.

Quittez d'abord ssh tout à l'heure, puis revenez à notre fenêtre de terminal d'origine, puis utilisez ssh-keygen pour générer la clé et ajoutez la clé à l'autorisation :

exit                           # 退出刚才的 ssh localhost
cd ~/.ssh/                     # 若没有该目录,请先执行一次ssh localhost
ssh-keygen -t rsa              # 会有提示,都按回车就可以
cat ./id_rsa.pub >> ./authorized_keys  # 加入授权

signification de ~

Dans le système Linux, ~ représente le dossier personnel de l'utilisateur, c'est-à-dire le répertoire "/home/username". Si votre nom d'utilisateur est hadoop, alors ~ représente "/home/hadoop/". De plus, le texte après le # dans la commande est un commentaire, entrez simplement la commande précédente.

À ce stade , vous pouvez à nouveau utiliser la commande pour vous connecter directement sans entrer de mot de passe, comme illustré dans la figure suivante. ssh localhost 

Installer l'environnement Java

Pour une installation manuelle
, vous pouvez cliquer ici pour télécharger le package d'installation JDK1.8 à partir de Baidu Cloud Disk (code d'extraction : 99bg). Veuillez télécharger le fichier compressé jdk-8u162-linux-x64.tar.gz sur l'ordinateur local, en supposant qu'il est enregistré dans le répertoire "/home/linziyu/Downloads/".

Dans l'interface de ligne de commande Linux, exécutez la commande shell suivante (remarque : le nom d'utilisateur de connexion actuel est hadoop ) :

cd /usr/lib
sudo mkdir jvm #创建/usr/lib/jvm目录用来存放JDK文件
cd ~ #进入hadoop用户的主目录
cd Downloads  #注意区分大小写字母,刚才已经通过FTP软件把JDK安装包jdk-8u162-linux-x64.tar.gz上传到该目录下
sudo tar -zxvf ./jdk-8u162-linux-x64.tar.gz -C /usr/lib/jvm  #把JDK文件解压到/usr/lib/jvm目录下

Après avoir décompressé le fichier JDK, vous pouvez exécuter la commande suivante pour vérifier le répertoire /usr/lib/jvm :

cd /usr/lib/jvm
ls

Comme vous pouvez le voir, il existe un répertoire jdk1.8.0_162 dans le répertoire /usr/lib/jvm.
Continuez maintenant à exécuter la commande suivante pour définir la variable d'environnement :

cd ~
vim ~/.bashrc

La commande ci-dessus est éditée avec vim et ouvre le fichier de configuration de la variable d'environnement de l'utilisateur hadoop. Veuillez ajouter les lignes suivantes au début du fichier :

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

Enregistrez le fichier .bashrc et quittez l'éditeur vim. Ensuite, continuez à exécuter la commande suivante pour que la configuration du fichier .bashrc prenne effet immédiatement :

source ~/.bashrc

À ce stade, vous pouvez utiliser la commande suivante pour vérifier si l'installation a réussi :

java -version

Si les informations suivantes peuvent être renvoyées à l'écran, l'installation est réussie :

hadoop@ubuntu:~$ java -version
java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)

Installer Hadoop 2

Le fichier d'installation Hadoop peut être téléchargé à partir du site Web officiel de Hadoop, ou vous pouvez cliquer ici pour le télécharger à partir du disque cloud Baidu (code extrait : 99bg). Après avoir entré le lien du disque cloud Baidu, recherchez le fichier d'installation Hadoop hadoop-2.7.1 .tar.gz (ce tutoriel). Peut également être utilisé pour installer Hadoop version 2.7.1).

Nous choisissons d'installer Hadoop dans /usr/local/ :

sudo tar -zxf ~/下载/hadoop-2.6.0.tar.gz -C /usr/local    # 解压到/usr/local中
cd /usr/local/
sudo mv ./hadoop-2.6.0/ ./hadoop            # 将文件夹名改为hadoop
sudo chown -R hadoop ./hadoop       # 修改文件权限

Hadoop peut être utilisé après décompression. Entrez la commande suivante pour vérifier si Hadoop est disponible, en cas de succès, les informations de version de Hadoop seront affichées :

cd /usr/local/hadoop
./bin/hadoop version

Configuration autonome Hadoop (non distribuée)

Le mode par défaut de Hadoop est le mode non distribué (mode local), qui peut s'exécuter sans configuration supplémentaire. Processus Java non distribué ou unique, facile à déboguer.

Ici, nous choisissons d'exécuter l'exemple grep, nous prenons tous les fichiers du dossier d'entrée comme entrée, filtrons les mots qui correspondent à l'expression régulière dfs[az.]+ et comptons le nombre d'occurrences, et enfin sortons les résultats vers la sortie dossier.

cd /usr/local/hadoop
mkdir ./input
cp ./etc/hadoop/*.xml ./input   # 将配置文件作为输入文件
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep ./input ./output 'dfs[a-z.]+'
cat ./output/*          # 查看运行结果

Une fois l'exécution réussie, comme indiqué ci-dessous, les informations pertinentes du travail sont sorties et le résultat de sortie est que le mot normal dfsadmin apparaît une fois

Notez que Hadoop n'écrase pas le fichier de résultats par défaut, donc réexécuter l'instance ci-dessus provoquera une erreur, qui doit d'  ./output abord être supprimée.

rm -r ./output

Configuration pseudo-distribuée Hadoop

Hadoop peut s'exécuter de manière pseudo-distribuée sur un seul nœud. Le processus Hadoop s'exécute comme un processus Java distinct. Le nœud agit à la fois comme un NameNode et un DataNode, et en même temps, il lit les fichiers dans HDFS.

Le fichier de configuration de Hadoop se trouve dans /usr/local/hadoop/etc/hadoop/, et la pseudo-distribution doit modifier deux fichiers de configuration  core-site.xml  et  hdfs-site.xml  . Les fichiers de configuration Hadoop sont au format xml et chaque configuration est implémentée en déclarant le nom et la valeur de la propriété.

Modifiez le fichier de configuration  core-site.xml  (il est plus pratique de l'éditer via gedit:  gedit ./etc/hadoop/core-site.xml), mettez le

<configuration>
</configuration>

Modifiez-le à la configuration suivante :

<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/hadoop/tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

De même, modifiez le fichier de configuration  hdfs-site.xml :

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/data</value>
    </property>
</configuration>

Description du fichier de configuration Hadoop

La façon dont Hadoop s'exécute est déterminée par le fichier de configuration (le fichier de configuration est lu lors de l'exécution de Hadoop), donc si vous devez passer du mode pseudo-distribué au mode non distribué, vous devez supprimer les éléments de configuration dans core-site. xml.

De plus, bien que la pseudo-distribution n'ait besoin que de configurer fs.defaultFS et dfs.replication pour s'exécuter (c'est le tutoriel officiel), mais si le paramètre hadoop.tmp.dir n'est pas configuré, le répertoire temporaire par défaut utilisé est /tmp/ hadoo-hadoop, Et ce répertoire peut être nettoyé par le système lors du redémarrage, donc le format doit être ré-exécuté. Nous l'avons donc configuré et spécifions également dfs.namenode.name.dir et dfs.datanode.data.dir, sinon cela pourrait mal tourner dans les étapes suivantes.

Une fois la configuration terminée, exécutez le formatage du NameNode :

cd /usr/local/hadoop
./bin/hdfs namenode -format

En cas de succès, vous verrez les invites "Formaté avec succès" et "Sortie avec le statut 0", si c'est "Sortie avec le statut 1", c'est une erreur.

Si l'erreur Erreur : JAVA_HOME n'est pas défini et est introuvable. s'affiche à cette étape   , cela signifie que la variable d'environnement JAVA_HOME n'a pas été définie bien avant. Veuillez d'abord définir la variable JAVA_HOME conformément au didacticiel, sinon ce qui suit le processus sera Impossible de continuer. Si vous avez défini JAVA_HOME dans le fichier .bashrc selon le tutoriel précédent, et que l'  erreur Error: JAVA_HOME is not set and could not be found. persiste  , alors veuillez vous rendre dans le répertoire d'installation de hadoop pour modifier le fichier de configuration "/ usr/local/hadoop/etc/hadoop/hadoop-env.sh", recherchez la ligne "export JAVA_HOME=${JAVA_HOME}" dedans, puis remplacez-la par l'adresse spécifique du chemin d'installation JAVA, par exemple, export JAVA_HOME=/usr/lib/jvm/default-java", puis redémarrez Hadoop.

Démarrez ensuite les démons NameNode et DataNode.

cd /usr/local/hadoop
./sbin/start-dfs.sh  #start-dfs.sh是个完整的可执行文件,中间没有空格

L'invite WARN suivante peut apparaître au démarrage : WARN util.NativeCodeLoader : impossible de charger la bibliothèque native-hadoop pour votre plate-forme… en utilisant les classes Java intégrées, le cas échéant. L'invite WARN peut être ignorée et n'affectera pas l'utilisation normale .

Impossible de résoudre l'invite de nom d'hôte lors du démarrage de Hadoop

Si vous rencontrez de nombreuses exceptions « ssh : Impossible de résoudre le nom d'hôte xxx » lors du démarrage de Hadoop, comme illustré dans la figure suivante :

Ce n'est pas un problème avec ssh et peut être résolu en définissant des variables d'environnement Hadoop. Tout d'abord, appuyez sur ctrl + c sur le clavier pour   interrompre le démarrage, puis dans ~/.bashrc, ajoutez les deux lignes suivantes (le processus de configuration est le même que la variable JAVA_HOME, où HADOOP_HOME est le répertoire d'installation de Hadoop) :

export HADOOP_HOME=/usr/local/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

Après l'enregistrement, assurez-vous d'exécuter le paramètre de variable pour qu'il prenne effet, puis exécutez à nouveau Start Hadoop. source ~/.bashrc  ./sbin/start-dfs.sh 

Une fois le démarrage terminé, vous pouvez utiliser la commande  jps pour juger si le démarrage a réussi. Si le démarrage est réussi, les processus suivants seront répertoriés : "NameNode", "DataNode" et "SecondaryNameNode" (si SecondaryNameNode n'est pas démarré, veuillez exécuter sbin/stop-dfs.sh pour fermer le processus, puis réessayez la tentative de lancement). S'il n'y a pas de NameNode ou de DataNode, la configuration échoue, veuillez vérifier attentivement les étapes précédentes ou vérifier la cause en consultant le journal de démarrage.

Après un démarrage réussi, vous pouvez visiter l'interface Web  http://localhost:50070 pour  afficher les informations NameNode et Datanode, et vous pouvez afficher les fichiers dans HDFS en ligne.

Exécuter une instance pseudo-distribuée de Hadoop

Dans le mode autonome ci-dessus, l'exemple grep lit les données locales, tandis que la pseudo-distribution lit les données sur HDFS. Pour utiliser HDFS, vous devez d'abord créer un répertoire utilisateur dans HDFS :

./bin/hdfs dfs -mkdir -p /user/hadoop

Copiez ensuite le fichier xml dans ./etc/hadoop en tant que fichier d'entrée dans le système de fichiers distribué, c'est-à-dire copiez /usr/local/hadoop/etc/hadoop vers /user/hadoop/input dans le système de fichiers distribué. L'utilisateur hadoop est utilisé et le répertoire utilisateur correspondant /user/hadoop a été créé, de sorte que le chemin relatif tel que input peut être utilisé dans la commande, et le chemin absolu correspondant est /user/hadoop/input :

./bin/hdfs dfs -mkdir input
./bin/hdfs dfs -put ./etc/hadoop/*.xml input

Une fois la copie terminée, vous pouvez afficher la liste des fichiers avec la commande suivante :

./bin/hdfs dfs -ls input

La manière pseudo-distribuée d'exécuter les tâches MapReduce est la même que le mode autonome, la différence est que la pseudo-distribution lit les fichiers dans HDFS (vous pouvez supprimer le dossier d'entrée local créé à l'étape autonome et le dossier de sortie du résultat de sortie à vérifier à ce stade).

./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'

Commande pour afficher le résultat en cours d'exécution (affichage de la sortie dans HDFS) :

./bin/hdfs dfs -cat output/*

Les résultats sont les suivants, notez que nous venons de modifier le fichier de configuration, donc les résultats en cours sont différents.

Nous pouvons également transmettre les résultats au local :

rm -r ./output    # 先删除本地的 output 文件夹(如果存在)
./bin/hdfs dfs -get output ./output     # 将 HDFS 上的 output 文件夹拷贝到本机
cat ./output/*

Lorsque Hadoop exécute le programme, le répertoire de sortie ne peut pas exister, sinon l'erreur "org.apache.hadoop.mapred.FileAlreadyExistsException : le répertoire de sortie hdfs://localhost:9000/user/hadoop/output existe déjà" s'affichera, donc si vous souhaitez l'exécuter à nouveau, vous devez exécuter la commande suivante pour supprimer le dossier de sortie :

./bin/hdfs dfs -rm -r output    # 删除 output 文件夹

Lors de l'exécution du programme, le répertoire de sortie ne doit pas exister

Lors de l'exécution d'un programme Hadoop, afin d'éviter d'écraser les résultats, le répertoire de sortie (tel que la sortie) spécifié par le programme ne peut pas exister, sinon une erreur sera signalée, vous devez donc supprimer le répertoire de sortie avant l'exécution. Lors du développement d'une application, envisagez d'ajouter le code suivant au programme, qui peut automatiquement supprimer le répertoire de sortie à chaque exécution, évitant ainsi les opérations fastidieuses en ligne de commande :

Configuration conf = new Configuration();
Job job = new Job(conf);
 
/* 删除输出目录 */
Path outputPath = new Path(args[1]);
outputPath.getFileSystem(conf).delete(outputPath, true);

Pour arrêter Hadoop, exécutez

./sbin/stop-dfs.sh

Avis

La prochaine fois que vous démarrerez hadoop, vous n'aurez pas besoin d'initialiser le NameNode, lancez-le simplement ! ./sbin/start-dfs.sh 

Je suppose que tu aimes

Origine blog.csdn.net/yyfloveqcw/article/details/124472610
conseillé
Classement