在Windows

时间:2015-08-27 20:19:52

标签: hadoop yarn

我已经在Windows上安装了Hadoop 2.6作为某些依赖于Hadoop的软件的测试平台。据我所知,安装工作正常。我在C:\Hadoop中保存了Hadoop,在C:\hadooptemp中保存了我的临时文件夹。我按照本教程设置了它: https://drive.google.com/file/d/0BweVwq32koypYm1QWHNvRTZWTm8/view

当我运行pi的hadoop-mapreduce-examples-2.6.0.jar时,如教程中所提供的,我得到以下输出:

Number of Maps  = 2
Samples per Map = 5
Wrote input for Map #0
Wrote input for Map #1
Starting Job
15/08/27 15:55:10 INFO client.RMProxy: Connecting to ResourceManager at /155.41.90.116:8032
15/08/27 15:55:12 INFO input.FileInputFormat: Total input paths to process : 2
15/08/27 15:55:12 INFO mapreduce.JobSubmitter: number of splits:2
15/08/27 15:55:13 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1440705227041_0001
15/08/27 15:55:14 INFO impl.YarnClientImpl: Submitted application application_1440705227041_0001
15/08/27 15:55:14 INFO mapreduce.Job: The url to track the job: http://mycomp:8088/proxy/application_1440705227041_0001/
15/08/27 15:55:14 INFO mapreduce.Job: Running job: job_1440705227041_0001
15/08/27 15:55:35 INFO mapreduce.Job: Job job_1440705227041_0001 running in uber mode : false
15/08/27 15:55:35 INFO mapreduce.Job:  map 0% reduce 0%
15/08/27 15:55:35 INFO mapreduce.Job: Job job_1440705227041_0001 failed with state FAILED due to: Application application_1440705227041_0001 failed 2 times due to AM Container for appattempt_1440705227041_0001_000002 exited with  exitCode: -1000
For more detailed output, check application tracking page:http://mycomp:8088/proxy/application_1440705227041_0001/Then, click on links to logs of each attempt.

诊断:无法设置标记为良好的本地目录/ hadooptemp / nm-local-dir。

Failing this attempt. Failing the application.
15/08/27 15:55:35 INFO mapreduce.Job: Counters: 0
Job Finished in 25.444 seconds
java.io.FileNotFoundException: File does not exist: hdfs://155.41.90.116:8020/user/me/QuasiMonteCarlo_1440705304456_1878814183/out/reduce-out
        at org.apache.hadoop.hdfs.DistributedFileSystem$18.doCall(DistributedFileSystem.java:1122)
        at org.apache.hadoop.hdfs.DistributedFileSystem$18.doCall(DistributedFileSystem.java:1114)
        at org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)
        at org.apache.hadoop.hdfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:1130)
        at org.apache.hadoop.io.SequenceFile$Reader.<init>(SequenceFile.java:1751)
        at org.apache.hadoop.io.SequenceFile$Reader.<init>(SequenceFile.java:1774)
        at org.apache.hadoop.examples.QuasiMonteCarlo.estimatePi(QuasiMonteCarlo.java:314)
        at org.apache.hadoop.examples.QuasiMonteCarlo.run(QuasiMonteCarlo.java:354)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
        at org.apache.hadoop.examples.QuasiMonteCarlo.main(QuasiMonteCarlo.java:363)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.hadoop.util.ProgramDriver$ProgramDescription.invoke(ProgramDriver.java:71)
        at org.apache.hadoop.util.ProgramDriver.run(ProgramDriver.java:144)
        at org.apache.hadoop.examples.ExampleDriver.main(ExampleDriver.java:74)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
        at org.apache.hadoop.util.RunJar.main(RunJar.java:136)

从我使用exitCode跟踪:-1000,归结为Hadoop无法使用适当的权限设置本地目录。我相信我上面使用的教程,这就是他们禁用用户帐户控制的原因。无论我是否这样做,我都会得到同样的错误。

我在此链接中也发现了类似的问题: Mapreduce error: Failed to setup local dir

我尝试按照他们的说法关注,并通过文件夹属性,安全性和高级设置使我的用户帐户拥有C:\HadoopC:\hadooptemp。之前我被列为所有者,并且根据此我可以完全控制对文件夹的访问权限。这不是问题,或者我错误地将所有权分配给了我的帐户。

最后,在我的YARN节点管理器中,我收到以下错误,似乎可能与某些地方出现相关:

15/08/27 15:55:34 WARN localizer.ResourceLocalizationService: Permissions incorrectly set for dir /hadooptemp/nm-local-dir/usercache, should be rwxr-xr-x, actual value = rwxrwxr-x

似乎我有太多权限,因为它声明它们设置不正确?我无法想象这是问题的原因,我的组也有写权限,但我无法弄清楚如何在Windows中改变它。

任何有关确定修复此错误的权限问题详细信息的帮助都将不胜感激。

5 个答案:

答案 0 :(得分:3)

在我的情况下,由于Windows域无法访问。将您的电脑连接到Windows域。 在这里我的纱线配置

<configuration>

<!-- Site specific YARN configuration properties -->
     <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>0.0.0.0</value>
    </property>
<property>
        <name>yarn.nodemanager.local-dirs</name>
        <value>c:\my\hadoop-2.7.1\tmp-nm</value>
</property>

    <property>
        <name>yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage</name>
        <value>98.5</value>
    </property>
</configuration>

另见https://hadoop.apache.org/docs/r2.7.1/hadoop-yarn/hadoop-yarn-site/SecureContainer.html

答案 1 :(得分:0)

这有点旧,但是我今天遇到了类似的权限问题,并且可以通过以下方法解决:

  1. 确保如上@venergiac所述,在yarn-site.xml中正确设置属性。为完整性起见,在此处添加了
<configuration>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>0.0.0.0</value>
    </property>
    <property>
        <name>yarn.nodemanager.local-dirs</name>
        <value>file:///d:/hadoop/hadoop-3.1.0/tmp</value>
    </property>
</configuration>
  1. 如果像我一样,这不能解决错误,只需完全解决告诉您的问题(即文件夹权限)即可。由于Windows上没有开箱即用的chmod,所以这有点棘手,但这就是为什么我们有Cygwin!打开cygwin终端,并使用基本的chmod命令来编辑文件权限,使其与hdfs期望的值完全匹配。例如,基于OP的日志输出:
  

目录/ hadooptemp / nm-local-dir / usercache的权限设置错误,应为rwxr-xr-x,实际值= rwxrwxr-x

我们可以简单地运行:

chmod g-w /hadooptemp/nm-local-dir/usercache

答案 2 :(得分:0)

在Windows命令提示符下以管理员身份运行Permissions incorrectly set后,我绕过了start-yarn.sh消息。

答案 3 :(得分:0)

我有类似的错误。原因是

<property>
    <name>yarn.nodemanager.local-dirs</name>
    <value>D:\hadoop\tmp</value>
</property

请参阅exFAT的“ D”驱动器。当我将位置更改为NTFS时,它开始工作。

答案 4 :(得分:0)

这对我有用...以管理员身份运行start-all.cmd