Haute disponibilité construction Hadoop

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
Insérer ici l'image Description

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

Insérer ici l'image Description
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
Insérer ici l'image Description
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! ! ! ! ! !
Insérer ici l'image Description

les commandes fréquemment utilisées processus NameNode commence: hadoop-daemon.sh Démarrer le NameNode
processus DataNode commence: hadoop-daemon.sh début DataNode

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

journalnode commande cluster hadoop-daemon.sh démarrage journalnode démarrage hadoop-daemon.sh
STOP Arrêt journalnode

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

les 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

  1. Utilisez l'ID de processus Voir NameNode de
jps
  1. 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
Publié 39 articles originaux · louange gagné 13 · vues 2314

Je suppose que tu aimes

Origine blog.csdn.net/qq_43205282/article/details/103433702
conseillé
Classement