2.3 mapreduce作业时出现拒绝访问错误

rhfm7lfc  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(323)

我正在尝试在Windows7中运行hadoop-2.3MapReduce作业。
我在windows7中构建了hadoop-2.3,没有使用cygwin,启动的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.

但它在windows8&8.1中运行。
如何解决这个问题有什么能帮我的吗?
谢谢,

xwmevbvl

xwmevbvl1#

问题在于用于创建任务的winutils.exe。winutils.exe在task.c文件的createtask()方法中使用了assignprocesstojobobject()。
在Windows7中,如果jobobject已经分配了一个进程,那么'assignprocesstojobobject'不能分配一个新进程,并返回'access denied'消息。

因此,当您以编程方式调用exe时,jobobject可能已经被分配了一个processhandle,然后从'assignprocesstojobobject'函数返回“拒绝访问”。
修复:检查jobobject是否有任何关联的进程,并且仅当jobobject未分配给任何进程时才分配新进程。确保您的更改仅适用于windows 7环境,并允许在windows 8及更高版本的环境中使用默认代码。
希望这有帮助。

相关问题