在没有cygwin的Windows 7中运行Hadoop-2.3 Mapreduce作业时获取访问权限被拒绝错误

时间:2014-09-11 14:36:55

标签: windows hadoop mapreduce

我正在尝试在Windows 7中运行hadoop-2.3 mapreduce作业。

我在没有cygwin的Windows 7中构建了hadoop-2.3并且启动了hadoop服务都运行得很好。但是,如果我正在尝试运行任何mapreduce作业,我会遇到错误。

我使用管理员权限启动了所有服务。

错误:

Application application_1410483662307_0001 failed 2 times due to AM Container for appattempt_1410483662307_0001_000002 exited with exitCode: 5 due to: Exception from container-launch: org.apache.hadoop.util.Shell$ExitCodeException: createTask error (5): Access is denied.
org.apache.hadoop.util.Shell$ExitCodeException: createTask error (5): Access is denied.

但它在Windows 8& 8.1。

如何解决这个问题对我有什么帮助?

谢谢,

1 个答案:

答案 0 :(得分:0)

问题在于用于创建任务的WinUtils.exe。 WinUtils.exe在 task.c 文件的 createTask()方法中使用 AssignProcessToJobObject()

在Windows 7中,如果Jobobject已经分配了一个进程,则“AssignProcessToJobObject”无法分配新进程并返回“拒绝访问”消息。

http://msdn.microsoft.com/en-us/library/windows/desktop/ms681949(v=vs.85).aspx 因此,当您以编程方式调用exe时,jobObject可能已经被分配了一个ProcessHandle,然后从“AssignProcessToJobObject”函数返回“Access Denied”。

修复:检查JobObject是否有任何关联进程,并且仅当jobObject未分配给任何进程时才分配新进程。确保您的更改仅适用于Windows 7环境,并允许在Windows 8及更高版本的环境中使用默认代码。

希望这有帮助。