Hadoop搭建HA的时候,开启NameNode服务的时候总有其中一个挂掉的原因及解决方法

搭建HA的情况下,开启start-dfs.sh服务的时候,masterslave两个NameNode服务总有一个挂掉,

  • 原因:start-dfs.sh的时候,
    • 首先开启的是 master:NameNode
    • 后是 slave1:NameNode
    • 最后是 JournalNode

即是: namenode–>datanode–>journalnode–>zkfc ,两个NameNode的服务冲突,必须的先开启JournalNode服务才行(三个节点都要先开)

为防止这种情况,有两个解决方法:

方法1:服务开启顺序:
HA集群开启服务的过程

  • step1:开启zookeeper服务:
    zkServer.sh start
    
  • step2:开启hdfs
    #说明:namenode-->datanode-->journalnode-->zkfc
    start-dfs.sh    
    
  • step3:开启journalnode守护进程(在qjournal协议指定的节点上执行):
    hadoop-daemon.sh start journalnode 
    
  • step4:开启namenode守护进程(在nn1nn2上执行)
    hadoop-daemon.sh start namenode  # 过时
    hdfs --daemon start
    
  • step5:开启datanode守护进程(在namenode节点上执行hadoop-daemons.sh开启所有datanode节点)
    hadoop-daemons.sh start datanode
    
  • step6:开启zkfc守护进程
    hadoop-daemon.sh --script $HADOOP_PREFIX/bin/hdfs start zkfc
    

守护进程的说明:

	5458 QuorumPeerMain            【zookeeper Server端】
	7715 Jps                       【java进程】
	7626 DFSZKFailoverController   【ZKFC:zookeeper client客户端】
	7324 JournalNode               【QJM:日志节点进程】
	7405 NameNode                  【名称节点】
    6015 DataNode                  【数据节点】

方法2:
core-site.xml添加下述内容:
【core-site.xml 】,默认是内容,IPC协议

 <property>
         <name>ipc.client.connect.max.retriesname>
         <value>20value>  //最大连接次数,修改大一点,为20,默认10
         <description>Indicates the number of retries a client will make to establish
              a server connection.
         description>
 property>

 <property>
         <name>ipc.client.connect.retry.intervalname>
         <value>1000value> //重复连接的间隔1000ms=1s
         <description>Indicates the number of milliseconds a client will wait for
                       before retrying to establish a server connection.
         description>
 property>

因为:NameNode连接不上JournalNode,超过一定的次数,就会挂掉,所以要增加连接的最大次数。

你可能感兴趣的:(Hadoop)