在我的C盘中提取hadoop后,我尝试执行hadoop版本命令并获得以下错误。在我的环境变量中正确设置了JAVA_HOME
。任何人都可以帮助解决这个错误吗?
C:\>hadoop version
The system cannot find the path specified.
Error: JAVA_HOME is incorrectly set.
Please update C:\hadoop-2.5.1\conf\hadoop-env.cmd '-Xmx512m' is not recognized as an internal or external command, ooperable program or batch file.
答案 0 :(得分:22)
大多数答案建议复制JDK安装路径。但是,如果您不方便这样做,可以使用Windows short path设置路径名,以便所有应用程序都可以轻松访问路径。
设置env变量的概念,如果它包含空格:
Progra~1 = 'Program Files'
Progra~2 = 'Program Files(x86)'
答案 1 :(得分:16)
刚遇到同样的问题(Win 8.1 + Hadoop 2.7.0 [来自源代码])。
问题结果是java所在的路径名中的(ol'良好)空间(在C:\ Program Files \ dir下)。我做的是这个:
1)将JDK目录复制到C:\ Java \ jdk1.8.0_40
2)编辑\ etc \ hadoop \ hadoop-env.cmd并更改:set JAVA_HOME = c:\ Java \ jdk1.8.0_40
3)运行cmd并执行hadoop-env.cmd
4)现在检查'hadoop version'是否还在抱怨(我的不是)
答案 2 :(得分:12)
将JDK安装到没有空格的文件夹中。
而不是C:\Program Files\Java\jdk1.8.x_xx
,请尝试C:\java\jdk1.8.x_xx
。
答案 3 :(得分:4)
错误的原因是“程序文件”之间的空格。替换为 配置
时,所有路径中的PROGRA~1答案 4 :(得分:3)
检查UIAlertView
。
如果是C:\ Program Files \ Java \ jdk1.7.0_65。然后你会遇到这样的问题。 进入C:\ MyDrive \ Java \ jdk1.7.0_65然后就解决了。 “程序文件”中的空间会产生问题。
路径为JAVA_HOME
如果您使用的是Windows,那么您肯定会遇到类似问题(由于X64和X86问题):
FATAL datanode.DataNode:secureMain中的异常java.lang.NullPointerException 和
FATAL namenode.NameNode:无法启动namenode。 java.lang.UnsatisfiedLinkError:org.apache.hadoop.io.nativeio.NativeIO $ Windows.access0(Ljava / lang / String; I)
从link复制这些文件hadoop.dll,hadoop.exp,hadoop.lib,hadoop.pdb,libwinutils.lib,winutils.exe,winutils.pdb 到您的bin文件夹中的hadoop安装的loaction看起来像这样。 .. \ HadoopInstalled \的hadoop \ Hadoop的2.6.0 \ Hadoop的2.6.0 \ bin中
答案 5 :(得分:2)
将您的Java bin位置添加到path
环境变量中。
像
path = path;$JAVA_HOME/bin
答案 6 :(得分:2)
要绕过必须在没有空格的路径中安装另一个JDK,可以使用Windows命令mklink创建符号链接。这是怎么回事。
创建符号链接。在这里,我将Hadoop抱怨的路径(使用Program Files)设置为没有空格的更简单路径。 / D参数表示您正在创建目录符号链接。
mklink / D \ java_home" C:\ Program Files \ Java \ jdk1.7.0_65"
在你的hadoop-env.cmd中,将你的JAVA_HOME设置为你创建的符号链接:
设置JAVA_HOME = \ java_home
这对我有用。有关在Windows中创建符号链接的更多信息: http://www.windows7home.net/how-to-create-symbolic-link-in-windows-7/
答案 7 :(得分:2)
这个问题的解决方案很简单
大多数人都将JAVA_HOME设置为C:\ Program Files \ Java \ jdk1.8.0_121
这里有问题是空格和你需要做的是,将jdk1.8.0_121的内容复制到C盘中的文件夹,比如C:\ java
现在将此路径用作JAVA_HOME
答案 8 :(得分:1)
打开命令提示符并尝试此操作... echo%JAVA_HOME%然后检查java home set。如果没有设置java home。
检查here如何在Windows中设置JAVA_HOME
答案 9 :(得分:1)
错误:
>>hadoop version
'C:\Program' is not recognized as an internal or external command,
operable program or batch file.
HADOOP_HDFS_HOME not found
我想问题可能是以下任何一个:
我的建议:
注意:查看这篇文章以获取更多参考。 https://medium.com/analytics-vidhya/hadoop-setting-up-a-single-node-cluster-in-windows-4221aab69aa6
答案 10 :(得分:1)
请在hadoop-env.cmd
中添加以下行。这应该是hadoop-env.cmd
中注释后的第一行。
set JAVA_HOME=C:\Progra~1\Java\jdk1.8.0_131\
Progra〜1的简称是SFN
这没有必要将Java复制到其他答案中指定的其他目录中,并且您可以拥有专用于hadoop的Java版本。
答案 11 :(得分:1)
我也遇到了类似的问题,以下步骤解决了我的错误。
Download&在c:/java/
(如果在程序中安装了java,请确保路径是这样的 文件,然后hadoop-env.cmd将无法识别java路径)
Download Hadoop二进制分发。
设置环境变量:
JAVA_HOME = "c:/Java"
HADOOP_HOME="<your hadoop home>"
Path= "JAVA_HOME/bin"
Path = "HADOOP_HOME/bin"
这是GitHub link,其中包含某些版本的Hadoop的winutils。
(如果您使用的版本不在列表中,请按照 在Windows上设置Hadoop的传统方法 - link)
如果找到了您的版本,请将文件夹的所有内容复制粘贴到路径:/ bin /
设置所有.xml配置文件 - Link
最后在hadoop-env.cmd文件中设置JAVA_HOME路径
可能会解决'JAVA_HOME is incorrectly set.'
错误
希望这有帮助。
答案 12 :(得分:0)
“@ echo on”将帮助我们追踪错误。消息显示在hadoop-config.cmd文件中。请将C:\ Program Files \ Java复制到C:\ Java并更改路径并尝试。这将有效。
答案 13 :(得分:0)
只需删除hadoop-env.cmd文件(C:\hadoop-2.8.0\etc\hadoop\hadoop-env.cmd
)中的bin文件夹
“ C:\Java\jdk-9.0.1\bin
”并设置下面提到的路径。这对我有用。
set JAVA_HOME="C:\Java\jdk-9.0.1"
答案 14 :(得分:0)
其他人回答这是因为JAVA_HOME路径中的空间,我不得不用Progra〜1替换Program Files。 但是我必须在环境变量和hadoop-env.cmd文件中都进行更改。 我发现相同的错误,直到在两个地方都将其更改。
答案 15 :(得分:0)
您可以在bin文件夹中调试hadoop.cmd文件,可能有一些命令会出现语法问题或提供不正确的路径。
打开hadoop.cmd文件并查看第一行&#34; @echo off&#34;将会在那里。改变&#34; @echo off&#34;到&#34; @echo on&#34;并保存。运行&#34; hadoop -version&#34;现在命令。它将显示命令的&#34;语法不正确的命令&#34;错误即将到来。纠正它,如果存在语法问题或某些路径问题可能。
答案 16 :(得分:0)
因此 Hadoop 不喜欢其任何环境变量中的空格。 所以我的建议是明确设置
并对所有文件路径使用 C:\PROGRA~1\
语法,避免空格。