structures de cluster HA peuvent être construits dans une base entièrement distribuée
objectif:
Réduire l'incidence des points de défaillance uniques
Schéma de configuration de la planification
NN1 | NN2 | DN | zK | ZKFC | JNN | RM | |
---|---|---|---|---|---|---|---|
hadoop100 | * | * | * | * | * | * | |
hadoop101 | * | * | * | * | * | * | |
hadoop102 | * | * | * |
. La figure NN, DN, ZK, ZKFC, JNN, RM est ci - après dénommé
NN: le NameNode
le DN: DataNodes
ZK: le Zookeeper
ZKFC: le client Zookeeper
JNN: Journalnode
RM: resourceManager
préparations:
1, le serveur de synchronisation d'horloge de configuration ( en option)
Tous les nœuds exécutent
yum -y install ntp
ntpdate ntp1.aliyun.com
2, configurer la mise en correspondance de chaque hôte (ne savent pas à résoudre leurs propres Baidu)
3, éviter fermer Login
Tous les nœuds exécutent
ssh-keygen-t rsa //生成密钥 中途停下询问的一直按回车到执行成功为止
ssh-copy-id hadoop101 //发送公钥到其他节点上
4, désactivez les paramètres de pare-feu
systemctl stop firewalld.service //暂时关闭
systemctl disable firewalld.service //永久关闭
A commencé à construire une haute disponibilité grappe Hadoop
l'installation Jdk (si elle est une installation minimale Centos par défaut JDK est pas installé extraire directement le bien, l'installation graphique nécessite de désinstaller le JDK d'origine pour installer)
Package d'installation Hadoop extraction
tar xf hadoop2.7.7... -C /module/ha/
fichier de configuration Hadoop dans le répertoire
cd /module/ha/hadoop/etc/hadoop
Trois (Hadoop, fil, mapred) fichier -env.sh, trouver le chemin d'installation de jeu JAVA_HOME
Placé à noyau-site.xml
vi core-site.xml
<!-- 设置hdfs的nameservice服务 名称自定义 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://mycluster</value>
</property>
<!-- 设置hadoop的元数据存放路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/moudle/ha/hadoop/data</value>
</property>
<!-- 指定zookeeper地址 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoop100:2181,hadoop101:2181,hadoop102:2181</value>
</property>
vi hdfs-site.xml
<!-- 完全分布式集群名称 -->
<property>
<name>dfs.nameservices</name>
<value>mycluster</value>
</property>
<!-- 集群中NameNode节点都有哪些 -->
<property>
<name>dfs.ha.namenodes.mycluster</name>
<value>nn1,nn2</value>
</property>
<!-- nn1的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.mycluster.nn1</name>
<value>hadoop100:9000</value>
</property>
<!-- nn2的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.mycluster.nn2</name>
<value>hadoop101:9000</value>
</property>
<!-- nn1的http通信地址 -->
<property>
<name>dfs.namenode.http-address.mycluster.nn1</name>
<value>hadoop100:50070</value>
</property>
<!-- nn2的http通信地址 -->
<property>
<name>dfs.namenode.http-address.mycluster.nn2</name>
<value>hadoop101:50070</value>
</property>
<!-- 指定NameNode元数据在JournalNode上的存放位置 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hadoop100:8485;hadoop101:8485;hadoop102:8485/mycluster</value>
</property>
<!-- 配置隔离机制,即同一时刻只能有一台服务器对外响应 -->
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<!-- 使用隔离机制时需要ssh无秘钥登录-->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property>
<!-- 声明journalnode服务器存储目录-->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/module/ha/hadoop/data/jn</value>
</property>
<!-- 关闭权限检查-->
<property>
<name>dfs.permissions.enable</name>
<value>false</value>
</property>
<!-- 访问代理类:client,mycluster,active配置失败自动切换实现方式-->
<property>
<name>dfs.client.failover.proxy.provider.mycluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!--设置开启HA故障自动转移-->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
Placé mapred-site.xml
vi mapred-site.xml
Ajouter la configuration suivante
<!-- 指定mr框架为yarn方式 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
fil-site.xml configuration (facultatif)
vi yarn-site.xml
Ajouter la configuration suivante
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!--启用resourcemanager ha-->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!--声明两台resourcemanager的地址-->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>cluster-yarn1</value>
</property>
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>hadoop100</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>hadoop101</value>
</property>
<!--指定zookeeper集群的地址-->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>hadoop100:2181,hadoop101:2181,hadoop102:2181</value>
</property>
<!--启用自动恢复-->
<property>
<name>yarn.resourcemanager.recovery.enabled</name>
<value>true</value>
</property>
<!--指定resourcemanager的状态信息存储在zookeeper集群-->
<property>
<name>yarn.resourcemanager.store.class</name> <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>
esclaves de configuration
vi slaves
hadoop100
hadoop101
hadoop102
Configuration fini distribué à tous les noeuds
scp –r -p /usr/local/hadoop/ root@master2:/usr/local/
Installation Zookeeper
Décompressez le fichier
tar xf 文件名 -C 存放路径
Bon environnement d'auto-configuration variable
zoo_sample.cfg dans le répertoire modifié conf
mv zoo_sample.cfg zoo.cfg
vi zoo.cfg
Stocker les métadonnées stockées dans le paramètre de chemin zk
dataDir=/module/zookeeper/zk
Dans le bas du fichier ajouter les données suivantes
Server.1=hadoop100:2888:3888
Server.2=hadoop101:2888:3888
Server.3=hadoop102:2888:3888
Génération de journaux l'emplacement de la modification zookeeperNe peut pas être modifié
vi bin/zkEnv.sh
modificationDeuxième flèche pointant vers le cheminPour placer leur propre voulez stocker
Création d'un méta-données de fichier stocké dans le chemin de stockage de ZK
mkdir /module/zookeeper/zk
Distribuer zookeeper fichiers de configuration de Zookeeper à tous les nœuds
écrits dans différents noeuds correspondant à id
echo 1 > /module/zookeeper/zk/myid # hadoop100节点上:
ZooKeeper sur chaque nœud du cluster, exécutez le script de démarrage des services de ZooKeeper
zkServer.sh start
détails du déploiement
1, vous devez commencer journalnode
hadoop-daemons.sh start journalnode
2, dans lequel la sélection est configuré pour exécuter un format de tableau sur le noeud hadoop NN
bin/hdfs namenode –format
3. Sélectionnez un début NN NameNode
sbin/hadoop-daemon.sh start namenode
4, la synchronisation des données est effectuée sur un autre noeud NN
bin/hdfs namenode -bootstrapStandby
5, sur un NN dans lequel la mise en forme effectuée zkfc
bin/hdfs zkfc –formatZK
Où le NN start grappe Hadoop
sbin/start-dfs.sh
La commande de l'utilisation à la vuechaqueY at - il un noeud suivant nœud
point de la complète Hadoop de cluster HA! ! ! !
RM est ouverte est disposée sur le HA effectue noeud RM
sbin/start-yarn.sh
Dans une autre configuration est également effectuée sur le noeud RM
sbin/yarn-daemon.sh start resourcemanager
Voir tous les noeuds ont le noeud suivant de la configuration du cluster HA RM jusqu'à présent avec succès! ! ! ! ! !
les commandes fréquemment utilisées processus NameNode commence: hadoop-daemon.sh Démarrer le NameNode
processus DataNode commence: hadoop-daemon.sh début DataNodeHA environnement de haute disponibilité, vous devez démarrer le processus: Zookeeper: zkServer.sh début zkServer.sh arrêt démarrage arrêt
état zkServer.sh pour afficher l'état du chef follwerjournalnode commande cluster hadoop-daemon.sh démarrage journalnode démarrage hadoop-daemon.sh
STOP Arrêt journalnodeZKFC Format: hdfs zkfc -formatZK démarrer le processus zkfc: hadoop-daemon.sh début zkfc
processus zkfc d'arrêt: hadoop-daemon.sh arrêt zkfcles données de synchronisation NameNode nom: hdfs NameNode -bootstrapStandby
Démarrez le processus de fil:
yarn-daemon.sh commencer ResourceManager
Commutateur analogique état de veille automatiquement le basculement NN
- Utilisez l'ID de processus Voir NameNode de
jps
- Arrêter processus NameNode
kill -9 namenode的进程id
Ensuite , voir si les deux pages Web NameNode pour afficher l'état de commutation
3. Redémarrez processus NameNode:
hadoop-daemon.sh start namenode