Linux虚拟机启动Hadoop出现如下报错,尝试过删除dsf目录下的所有文件依然没有解决
看起来是NameNode无法启动,可能是由于数据块目录(dfs.data.dir)中的某个文件损坏导致的。尝试按以下步骤解决问题:
1.停止所有Hadoop服务: stop-all.sh
2.删除数据块目录(dfs.data.dir)中的所有文件: rm -rf /path/to/dfs/data/dir/*
3.格式化NameNode: hadoop namenode -format
4.启动Hadoop服务: start-all.sh
如果问题仍然存在,请检查Hadoop配置文件中的数据块目录是否正确设置,并确保目录存在且具有适当的权限。
为了避免集群中的任何文件描述符错误,需要增加单个用户或进程一次可以打开的文件数量的限制。
默认值只有 128 。
可以使用以下命令检査当前限制(第一个为软限制第二个为硬限制)。
[root@hadoop ~]# ulimit -Sn
1024
[root@hadoop ~]# ulimit -Hn
4096
[root@hadoop ~]#
需要将 ulimit 值至少提高至4096( Hortonworks等推荐10000或者更多)。
可以通过编辑 /etc/security/limits.conf 文件来执行此操作,如下所示:
Soft nofile 4096
Hard nofile 4096
且更改了内核设置,则可以通过执行以下命令来动态加载新设置
[root@hadoop ~]# sysctl -p
可以通过发出以下命令来确认新的内核设置:
[root@hadoop ~]# sysctl -a