运行start-dfs.cmd后NameNode与DataNode启动即终止的解决求助
解决Hadoop start-dfs.cmd启动后NameNode/DataNode窗口闪退问题
问题重现
执行命令:
C:\hadoop-3.3.6\sbin>.\start-dfs.cmd
启动后NameNode和DataNode命令提示符窗口立即关闭,错误日志核心报错:
java.io.IOException: All specified directories are not accessible or do not exist.
已尝试操作:安装新版Microsoft Visual C++、查找删除类似app/data/temp文件夹但未找到对应路径。
解决方案
1. 验证并修复HDFS目录配置与权限
- 打开
C:\hadoop-3.3.6\etc\hadoop\hdfs-site.xml,检查以下两个配置项的路径:
确保路径为Windows兼容格式(使用正斜杠,或转义反斜杠<property> <name>dfs.namenode.name.dir</name> <value>file:///C:/hadoop-3.3.6/data/namenode</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:///C:/hadoop-3.3.6/data/datanode</value> </property>\\),且前缀为file:///(三个斜杠)。 - 手动创建上述配置中的
namenode和datanode目录(比如在Hadoop根目录下新建data文件夹,再分别创建子目录)。 - 右键目录→属性→安全→编辑,添加当前登录用户,勾选完全控制权限,点击确认保存。
2. 重新格式化NameNode
- 打开命令提示符,切换到Hadoop bin目录:
cd C:\hadoop-3.3.6\bin - 执行格式化命令:
hdfs namenode -format - 等待格式化完成(日志显示
successfully formatted即为成功),再回到sbin目录重新执行启动命令:C:\hadoop-3.3.6\sbin>.\start-dfs.cmd
3. 检查临时目录配置
- 打开
C:\hadoop-3.3.6\etc\hadoop\core-site.xml,确认hadoop.tmp.dir配置:<property> <name>hadoop.tmp.dir</name> <value>file:///C:/hadoop-3.3.6/tmp</value> </property> - 创建该
tmp目录并赋予完全控制权限,之后重新格式化NameNode再启动服务。
4. 验证环境变量配置
- 确认系统环境变量
HADOOP_HOME指向C:\hadoop-3.3.6,且Path中已添加%HADOOP_HOME%\bin和%HADOOP_HOME%\sbin。 - 确认
JAVA_HOME指向JDK安装目录(必须是JDK,不能是JRE),比如C:\Program Files\Java\jdk1.8.0_301,且已添加到系统环境变量。
内容的提问来源于stack exchange,提问作者Shraddha Dhakad
相关产品推荐
相关产品推荐

