Prélude
1. Modifiez ensuite le nom d'hôte pour faciliter l'accès entre les clusters
Modification: hostnamectl set-hostname centos1
Voir: nom d'hôte
2. Modifiez le fichier de mappage de résolution de nom de domaine (ajoutez une nouvelle ligne) afin qu'il soit accessible directement par le nom d'hôte à l'avenir
vi / etc / hosts
#Content ajoute une nouvelle ligne à la fin
192.168.190.130 cenos1
192.168.190.131 centos2
192.168.190.132 centos3
service redémarrage du réseau #Redémarrez le service de carte réseau
redémarrer #Restart
ping centos1 #Le test est efficace
3. Désactivez le pare-feu et interdisez le démarrage
firewall-cmd --state #View firewall status
systemctl stop firewalld.service #Arrêter le pare-feu
systemctl disable firewalld.service #Prohibit firewall startup
4. Fermez selinux
vim / etc / sysconfig / selinux
Modifier le contenu SELINUX = désactivé
SELINUXTYPE = ciblé commenté
scp / etc / sysconfig / selinux centos2: / etc / sysconfig /
scp / etc / sysconfig / selinux centos3: / etc / sysconfig /
Télécharger vers le bas
http://mirrors.shu.edu.cn/apache/hadoop/common/
hadoop-2.7.7.tar.gz
Plus tard, changé en hadoop-2.6.5.tar.gz afin d'installer oozie
Installer
cd / usr / local
rz
tar xzvf hadoop-2.7.7.tar.gz
rm -rf hadoop-2.7.7.tar.gz
mv hadoop-2.7.7.tar.gz Hadoop
Configurer les variables d'environnement
vim / etc / profile #Configurez les variables d'environnement, entrez en bas pour démarrer la configuration:
export HADOOP_HOME = / usr / local / hadoop
export PATH = $ PATH: $ JAVA_HOME / bin: $ HADOOP_HOME / bin: $ HADOOP_HOME / sbin
wq
Configurer hadoop-env.sh, yarn-env.sh, mapred-env.sh (les trois systèmes ont été modifiés)
vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh
修改 : export JAVA_HOME = $ {JAVA_HOME} 为 : export JAVA_HOME = / usr / local / jdk
wq
vim /usr/local/hadoop/etc/hadoop/yarn-env.sh
export JAVA_HOME = / usr / local / jdk
vim /usr/local/hadoop/etc/hadoop/mapred-env.sh
export JAVA_HOME = / usr / local / jdk
source / etc / profile #effective immédiatement
Test
Après avoir testé la configuration distribuée hadoop, assurez-vous que Hadoop est démarré et qu'il existe un répertoire correspondant.
hadoop version
A l'heure actuelle, l'environnement hadoop le plus basique (ce n'est pas un environnement de développement), teste un programme de test fourni avec hadoop (implémentation de wordcount "bonjour le monde hadoop")
cd / usr / local / hadoop
entrée mkdir
echo bonjour sm bonjour zhangsan bonjour lisi salut sm> input / info.txt
entrée cd
cat info.txt
cd / usr / local / hadoop
hadoop jar share / hadoop / mapreduce / sources / hadoop-mapreduce-examples-2.7.7-sources.jar org.apache.hadoop.examples.WordCount entrée sortie
sortie cd
ll
0
Test sur hdfs:
hadoop fs -put /songtemptest/worldcount.txt / test / input
cd / usr / local / hadoop / share / hadoop / mapreduce
hadoop jar hadoop-mapreduce-examples-2.6.5.jar wordcount / test / input / test / output
La configuration de hadoop de système distribué
Traitement sans connexion SSH
ll ~ #Si vous avez configuré ssh pour qu'il soit supprimé
rm -rf ~ / .ssh
ssh-keygen -t rsa #generate clé ssh sur l'hôte centos1
Entrez le traitement par défaut
cat ~ / .ssh / id_rsa.pub >> ~ / .ssh / authorized_keys #Copiez la clé publique dans le fichier d'autorisation
racine ssh @ centos1 #Login
quitter #Logout
Remarque: Synchronisez d'autres machines: ssh-copy-id centos2
Configuration: core-site.xml Informations de base Hadoop, y compris le répertoire temporaire, l'adresse d'accès, etc.
Configuration: traitement des travaux liés à la configuration yarn-site.xml
Configuration: hdfs-site.xml est très important, vous pouvez déterminer le nombre de sauvegardes de fichiers et le chemin du dossier de données
Configuration: core-site.xml (les trois systèmes sont modifiés)
core-site.xml est les informations de base de Hadoop, y compris le répertoire temporaire, l'adresse d'accès, etc.
vim /usr/local/hadoop/etc/hadoop/core-site.xml
<configuration>
<propriété>
<name> hadoop.tmp.dir </name>
<value> / home / root / hadoop_tmp </value>
<description> Abase pour d'autres répertoires temporaires. </description>
</property>
<propriété>
<name> fs.defaultFS </name>
<value> hdfs: // centos1: 9000 </value>
</property>
</configuration>
Les informations "/ Home / root / hadoop_tmp" sont les plus importantes. Les informations sur les fichiers temporaires de cette configuration de chemin de fichier, si elles ne sont pas configurées, un fichier "tmp" sera généré dans le dossier hadoop (beaucoup de gens le définiront dans "/ user / local / hadoop / tmp "), si configuré de cette manière, toutes les informations seront effacées une fois redémarré, ce qui signifie que l'environnement de Hadoop ne sera pas valide à ce moment.
Le message " centos1: 9000 " décrit le chemin d'accès du gestionnaire de pages qui sera ouvert à l'avenir;
La version hadoop 2.x par défaut est le port 9000. Si la version 1.x est utilisée, la valeur par défaut est 8020.
Afin de vous assurer que l'opération globale est sans erreur, vous pouvez créer directement un répertoire "/ home / root / hadoop_tmp";
cd ~
mkdir hadoop_tmp
Configuration: yarn-site.xml (modifiez uniquement le nœud maître)
Traitement des travaux liés à la configuration Yarn-site.xml
vim /usr/local/hadoop/etc/hadoop/yarn-site.xml
<configuration>
<propriété>
<name> yarn.resourcemanager.admin.address </name>
<value> centos1: 8033 </value>
</property>
<propriété>
<name> yarn.nodemanager.aux-services </name>
<value> mapreduce_shuffle </value>
</property>
<propriété>
<name> yarn.nodemanager.aux-services.mapreduce_shuffle.class </name>
<value> org.apache.hadoop.mapred.ShuffleHandler </value>
</property>
<propriété>
<name> yarn.resourcemanager.resource-tracker.address </name>
<value> centos1: 8025 </value>
</property>
<propriété>
<name> yarn.resourcemanager.scheduler.address </name>
<value> centos1: 8030 </value>
</property>
<propriété>
<name> yarn.resourcemanager.address </name>
<value> centos1: 8050 </value>
</property>
<propriété>
<name> yarn.resourcemanager.webapp.address </name>
<value> centos1: 8088 </value>
</property>
<propriété>
<name> yarn.resourcemanager.webapp.https.address </name>
<value> centos1: 8090 </value>
</property>
</configuration>
Configuration: hdfs-site.xml (les trois systèmes sont modifiés)
hdfs-site.xml est très important, vous pouvez déterminer le nombre de sauvegardes de fichiers et le chemin du dossier de données
vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml
<configuration>
<propriété>
<name> dfs.replication </name>
<value> 1 </value>
</property>
<propriété>
<name> dfs.namenode.name.dir </name>
Fichier <valeur>: /// usr / local / hadoop / dfs / nom </value>
</property>
<propriété>
<name> dfs.datanode.data.dir </name>
<value> fichier: /// usr / local / hadoop / dfs / data </value>
</property>
<propriété>
<name> dfs.namenode.http-address </name>
<value> centos1: 50070 </value>
</property>
<propriété>
<name> dfs.namenode.secondary.http-address </name>
<value> centos1: 50090 </value>
</property>
<propriété>
<name> dfs.permissions </name>
<value> false </value>
</property>
<propriété>
<name> dfs.namenode.datanode.registration.ip-hostname-check </name>
<value> false </value>
</property>
</configuration>
"Dfs.replication": le nombre de copies du fichier, dans des circonstances normales, le fichier sera sauvegardé 3 copies;
"Dfs.namenode.name.dir": définir le chemin du nœud de nom;
"Dfs.datanode.data.dir": définir le chemin du nœud du fichier de données;
"Dfs.namenode.http-address": accès au chemin http du service de noms;
"Dfs.namenode.secondary.http-address": le deuxième nœud de nom;
"Dfs.permissions": problème d'authentification des autorisations, car s'il est défini, il ne sera peut-être plus possible d'accéder aux fichiers à l'avenir;
dfs.namenode.datanode.registration.ip-hostname-check est false hadoop version 2.7.7 pour configurer cela, ou télécharger des fichiers est invité: "Datanode a refusé la communication avec namenode car le nom d'hôte ne peut pas être résolu (ip = 192.168.190.138, hostname = 192.168.190.138) "tm lit ipv6, il devrait en fait être ipv4 ip.
Configuration: mapred-site.xml (modifiez uniquement le nœud maître)
cp /usr/local/hadoop/etc/hadoop/mapred-site.xml.template /usr/local/hadoop/etc/hadoop/mapred-site.xml
vim /usr/local/hadoop/etc/hadoop/mapred-site.xml
<configuration>
<propriété>
<name> mapreduce.framework.name </name>
<value> fil </value>
</property>
</configuration>
Autre configuration
Créer des fichiers maîtres, esclaves
vim / usr / local / hadoop / etc / hadoop / masters # 加入 «centos1»
vim / usr / local / hadoop / etc / hadoop / slaves #Changez "localhost" en
centos2
centos3
hadoop appartient à un environnement de développement distribué, étant donné que le cluster sera construit à l'avenir;
Il est recommandé de créer un fichier maître dans le répertoire "/ usr / local / hadoop / etc / hadoop /", d'écrire le nom de l'hôte, le contenu est centos1 (le nom de l'hôte défini dans le fichier hosts avant): s'il ne se trouve pas dans un environnement autonome, Peu importe
Créer un nom de dossier, des données
cd / usr / local / hadoop
mkdir dfs dfs / nom dfs / data
Parce qu'à l'heure actuelle, tous les chemins de stockage du namenode et du datanode sont définis dans le répertoire hadoop, si vous voulez être sûr, vous pouvez créer le vôtre;
Remarque: S'il y a un problème avec votre hadoop et qu'il est reconfiguré, assurez-vous de supprimer complètement ces deux dossiers
Format
cd / usr / local / hadoop / bin
hdfs intentode -format
Système de fichiers formaté "INFO util.ExitUtil: sortie avec le statut 0" réussie
Démarrer / vérifier / accéder / arrêter
1. Démarrer
cd / usr / local / hadoop / bin
start-all.sh #start hadoop
2. Vérification
jps #Vérifiez le processus java, s'il y en a 6 comme ci-dessous
2536 DataNode
2408 NameNode
3034 NodeManager
2907 ResourceManager
3339 Jps
2748 SecondaryNameNode
Remarque: S'il s'agit d'un déploiement en cluster, il n'y en a que 4, et les deux autres NodeManager et DataNode sont sur la machine esclave
3. Visite
http://192.168.190.130:50070
Si vous souhaitez également utiliser le nom centos1 en externe (Windows), vous devez modifier le fichier hosts et ajouter la configuration de mappage:
Augmentation de C: \ Windows \ System32 \ drivers \ etc \ hosts: 192.168.190.130 centos1
http://192.168.190.130:8088/cluster
4. Arrêtez
stop-all.sh
Tester la connexion sans mot de passe
ssh centos2
accès au système de fichiers hdfs
http://192.168.190.130:50070/explorer.html#/
Si l'accès au nom d'hôte est requis, le mappage du nom d'hôte doit être effectué dans C: \ Windows \ System32 \ drivers \ etc \ hosts.
Tai Hang
1. Le naménode secondaire ne démarre pas
Hadoop doit être supprimé après avoir changé la version: / home / root / hadoop_tmp ce répertoire,
Ne vous confondez pas avec le répertoire / root / hadoop_tmp
Un autre fichier journal est le suivant:
/usr/local/hadoop/logs/hadoop-root-secondarynamenode-centos1.log
Pas ceci: /usr/local/hadoop/logs/hadoop-root-secondarynamenode-centos1.out
2. Configuration de hdfs-site.xml
dfs.namenode.datanode.registration.ip-hostname-check est false hadoop version 2.7.7 pour configurer cela, ou télécharger des fichiers est invité: "Datanode a refusé la communication avec namenode car le nom d'hôte ne peut pas être résolu (ip = 192.168.190.138, hostname = 192.168.190.138) "tm lit ipv6, il devrait en fait être ipv4 ip.
Opérations communes à Hadoop
hadoop fs et hdfs dfs sont les mêmes
Opérations d'annuaire
hadoop dfsadmin -safemode quitter # Quitter le mode sans échec
hadoop fs -mkdir -p / test / test1 #Cascade pour créer un répertoire
hadoop fs -ls / #View répertoire racine
hadoop fs -ls #View / user / root /
hadoop fs -rm -r -f / test #Cascade supprimer le répertoire
Opérations sur les fichiers
hadoop fs -put / usr / local / hadoop / output / part-r-00000 / test / #upload fichiers locaux vers le répertoire hdfs / test
hadoop fs -put / usr / local / hadoop / output / part-r-00000 hdfs: // centos1: 9000 / test #ou l'écrire comme ceci
hadoop fs -rm / test / part-r-00000 #Effacer les fichiers
hadoop fs -get / test / part-r-00000 #Téléchargez le fichier sur hdfs dans le répertoire courant