Hadoop 启动namenode节点失败

问题产生

运行下面的命令启动namenode,jps命令查看namenode发现没有启动。查看生成的日志文件发现有如下的警告信息

[root@localhost hadoop-2.8.5]# sbin/hadoop-daemon.sh start namenode
starting secondarynamenode, logging to /opt/modules/hadoop-2.8.5/logs/hadoop-root-secondarynamenode-localhost.localdomain.out


WARN:Illegal reflective access by org.apache.hadoop.security.authentication.util.KerberosUtil (file:/opt/modules/hadoop-2.8.5/share/hadoop/common/lib/hadoop-auth-2.8.5.jar) to method sun.security.krb5.Config.getInstance()

问题解决

我们通过执行hostname命令可以看到:

[shirdrn@localhost?bin]#?hostname??
localhost.localdomain??

也就是说,Hadoop在格式化HDFS的时候,通过hostname命令获取到的主机名是localhost.localdomain,然后在/etc/hosts文件中进行映射的时候,没有找到,看下我的/etc/hosts内容

[root@localhost?bin]#?cat?/etc/hosts??
#?Do?not?remove?the?following?line,?or?various?programs??
#?that?require?network?functionality?will?fail.??
127.0.0.1???????????????localhost???????localhost??
192.168.1.103???????????localhost???????localhost??

也就说,通过localhost.localdomain根本无法映射到一个IP地址,所以报错了。

此时,我们查看一下/etc/sysconfig/network文件:

NETWORKING=yes??
NETWORKING_IPV6=yes??
HOSTNAME=localhost.localdomain??

可见,执行hostname获取到这里配置的HOSTNAME的值。

解决方法

第一种:修改主机名

修改/etc/sysconfig/network中HOSTNAME的值为localhost,或者自己指定的主机名,保证localhost在/etc/hosts文件中映射为正确的IP地址,然后重新启动网络服务:

[root@localhost?bin]#?/etc/rc.d/init.d/network?restart??
Shutting?down?interface?eth0:??[??OK??]??
Shutting?down?loopback?interface:??[??OK??]??
Bringing?up?loopback?interface:??[??OK??]??
Bringing?up?interface?eth0:????
Determining?IP?information?for?eth0...?done.??
[??OK??]??

这时,再执行格式化HDFS命令,以及启动HDFS集群就正常了。

第二种:修改core-site.xml文件defaultFS为已有的主机名或者直接就为本机的IP地址即可

重新格式化HDFS

重新格式化hdfs系统的方法:

1、打开hdfs-site.xml

我们打开Hadoop的hdfs-site.xml,基本配置如下所示:

<property>

<name>dfs.name.dir</name>

<value>/usr/local/hadoop/hdfs/name</value>

</property>

<property>

<name>dfs.data.dir</name>

<value>/usr/local/hadoop/hdsf/data</value>

</property>

将 dfs.name.dir所指定的目录删除、dfs.data.dir所指定的目录删除

2、删除core-site.xml配置文件指定的相关目录

<property>

<name>hadoop.tmp.dir</name>

<value>/usr/local/hadoop/hadooptmp</value>

</property>

将hadoop.tmp.dir所指定的目录删除,即删除Hadoop的临时文件路径。

3、重新执行命令:hadoop namenode -format

格式化完毕。
这种格式化HDFS的方式是需要把原来HDFS中的数据全部清空,然后再格式化并安装一个全新的HDFS。
注:这种格式化方式需要将HDFS中的数据全部清空,以后我们探讨不需删除数据即可重新格式化的方法。

注解:如果删除文件,提示permission denied

使用 rm -rf 删除输出如下:

加 sudo 执行后发现关键信息了:xxx is not in the sudoers file.

解决方法:

首先需要切换到root身份

$su - (非root用户名)

(注意有 -,这和su是不同的,在用命令"su"的时候只是切换到root,但没有把root的环境变量传过去,还是当前用户的环境变量,用"su -"命令将环境变量也一起带过去,就象和root登录一样)

然后

$visudo//切记,此处没有vi和sudo之间没有空格

1、“😒”移动光标,到最后一行

2、按a,进入append模式

3、输入您的用户名及后面的信息

your_user_name ALL=(ALL) ALL

4、按Esc

5、输入“:wq”(回车,保存文件并退出)

这样就把自己加入了sudo组,可以使用sudo命令了。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值