利用QJM实现HDFS的HA策略部署与验证工作记录分享(3)

在这里说说我在切换时遇到过的几个小问题:

在住备节点上一定要配置双向的RSA免密码登陆,不然再切换时会出错,sshfence方式不能找到旧的Active NameNode,直接被reject掉。

第二,在切换的过程中我遇到了这个错误:

wKiom1PLymCDvQ-tAAnc5Wu1wVg264.jpg

这个是权限问题,解决方法是直接在core-site.xml文件添加下面权限控制选项:

<property>
   <name>Hadoop.http.filter.initializers</name>
    <value>org.apache.hadoop.security.AuthenticationFilterInitializer</value>
</property>
<property>
   <name>hadoop.http.authentication.type</name>
    <value>simple</value>
</property>
<property>
   <name>hadoop.http.authentication.token.validity</name>
    <value>36000</value>
</property>
<property>
   <name>hadoop.http.authentication.signature.secret.file</name>
   <value>/home/hadoop/hadoop-http-auth-signature-secret</value>
</property>
<property>
   <name>hadoop.http.authentication.cookie.domain</name>
    <value></value>
</property>
<property>
   <name>hadoop.http.authentication.simple.anonymous.allowed</name>
   <value>true</value>
</property>

然后建立/home/hadoop/hadoop-http-auth-signature-secret文件,并且在文件写入访问用户,我写入的是hadoop,然后将这个文件scp到各个节点,问题解决。

如果你将Active NameNodenn1转到nn2后,在各个DataNode日志出现一个“错误”信息:

wKioL1PLy9KB-KjfAAUasSkPxVg154.jpg

其实这个是我意料之中的“错误”信息,其实是没有任何问题的。因为,当你的Acive NameNodenn1切换至nn2时,nn1就会被kill(即hadoop-msater中的NameNode进程会被kill掉),在上面切换日志我标注红方框的地方已经很清楚了。此时,各个DataNode还是会同时向Active NameNodeStandBy NameNode同时发送心跳信息的,因为nn1已经被kill掉了,所有会报这个信息,对系统没有任何影响,切换后正常使用,如果你重启nn1则不会再报信息了,新启动的nn1是处于StandBy模式的。

我们知道,StandByNameNode是不处理DataNodeRPC请求的,那么各个DataNode为什么还会同时向Active NameNodeStandBy NameNode同时发送心跳呢?这是因为这2个心跳的用途是不同的,各个DataNodeActive NameNode发送心跳主要是汇报数据块的状态信息,而向StandBy NameNode发心跳的主要目的是通知StandBy NameNode告诉它Active NameNode元数据发生了改变,要求StandBy NameNodeQJM区下载更改过的Edit Log信息。 

linux

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/fa97acd4894c9bc4b3c2cd2ee8cb8a14.html