1、DataNode起来后反复掉
反复掉我本人遇到的情况是:
由于我的datenode掉了之后我不明白原因,在没改任何东西的情况下对namenode进行了格式化,导致/opt/module/hadoop/data/tmp/dfs 中 data和name两个文件中current/下的VERSION文件中的版本号不一致,直接导致了datanode进程不起或起来就掉。
文件中就是这样的,一般是用namenode中的 clusterID 复制后 直接粘到datanode的对应位置上,或者还有一种更简单的办法,直接删除datanode的这个版本号文件,前提是你的datanode中没有数据, 命令为 rm -rf /opt/module/hadoop/data//tmp/dfs/data
删除后重启就可以,会自动生成版本号,这样问题就会解决。
2、NameNode起不来
一般起不来进程,第一个肯定是要看配置文件,
有关配置在 /opt/module/hadoop/etc/hadoop/hdfs-site.xml 中,
里面配置的是namenode的位置,下面是我使用的配置
dfs.replication 1 dfs.nameservices mycluster dfs.ha.namenodes.mycluster nn1,nn2 dfs.namenode.rpc-address.mycluster.nn1 hadoop-01:9000 dfs.namenode.rpc-address.mycluster.nn2 hadoop-02:9000 dfs.namenode.http-address.mycluster.nn1 hadoop-01:50070 dfs.namenode.http-address.mycluster.nn2 hadoop-02:50070 dfs.namenode.shared.edits.dir qjournal://hadoop-01:8485;hadoop-02:8485;hadoop-03:8485/mycluster dfs.ha.fencing.methods sshfence dfs.ha.fencing.ssh.private-key-files /root/.ssh/id_rsa dfs.journalnode.edits.dir /opt/module/hadoop-2.7.2 /data/jn dfs.permissions.enable false dfs.client.failover.proxy.provider.mycluster org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider dfs.ha.automatic-failover.enabled true
在core-site.xml 文件中,我们配置了namenode的地址,启动后文件存放的目录,zookeeper的地址(这个地址是直接影响namenode的自动转换状态功能的)
fs.defaultFS hdfs://mycluster hadoop.tmp.dir /opt/module/ha/data/tmp ha.zookeeper.quorum hadoop-01:2181,hadoop-02:2181,hadoop-03:2181
这两个配置文件就可以保证namenode成功启动。
3、NameNode不能自动切换acvite和standby状态
要知道为什么不能自动切换,就必须知道它自动切换靠的是什么东西,
namenode主要靠zookeeper来实现自动切换状态的功能,也就是zkfc(DFSZKFailoverController) 这个进程。
所以对ZK的配置显得极为关键,也就是 2 中提到的core-site.xml文件中的配置
在core-site.xml文件中增加ha.zookeeper.quorum hadoop-01:2181,hadoop-02:2181,hadoop-03:2181
还有就是没有初始化HA在Zookeeper中状态
命令: hdfs zkfc -formatZK
自动转换状态还有一个小配置,就是将自动装换功能打开,
在hdfs-site.xml中增加dfs.ha.automatic-failover.enabled true
最重要的一点,一定要先起zookeeper,再起hadoop。
总结一下:
我们的HA集群起不来时,主要就是看配置文件,任何有关配置文件有一点点小问题都会导致服务不起,或反复掉,甚至直接报错,出现问题先想自己动了那些配置文件,只要是动过的文件都要一遍遍核实清楚。



