我正在尝试在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。
如何解决这个问题对我有什么帮助?
谢谢,
答案 0 :(得分:0)
问题在于用于创建任务的WinUtils.exe。 WinUtils.exe在 task.c 文件的 createTask()方法中使用 AssignProcessToJobObject()。
在Windows 7中,如果Jobobject已经分配了一个进程,则“AssignProcessToJobObject”无法分配新进程并返回“拒绝访问”消息。
因此,当您以编程方式调用exe时,jobObject可能已经被分配了一个ProcessHandle,然后从“AssignProcessToJobObject”函数返回“Access Denied”。
修复:检查JobObject是否有任何关联进程,并且仅当jobObject未分配给任何进程时才分配新进程。确保您的更改仅适用于Windows 7环境,并允许在Windows 8及更高版本的环境中使用默认代码。
希望这有帮助。