微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Windows上运行没有Admin权限的Hadoop MR作业

我在窗口中安装了Hadoop 2.3.0,能够成功执行MR作业。 但是,当我试图以正常的权限(没有pipe理员权限)执行MR作业时,意味着作业失败,出现以下exception。 在这里,我试着用猪脚本样本。

2014-10-15 12:02:32,822 WARN [main] org.apache.hadoop.security.UserGroup@R_912_4045@ion: PriviledgedActionException as:kaveen (auth:SIMPLE) cause:java.io.IOException: Split class org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigSplit not found 2014-10-15 12:02:32,823 WARN [main] org.apache.hadoop.mapred.YarnChild: Exception running child : java.io.IOException: Split class org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigSplit not found at org.apache.hadoop.mapred.MapTask.getSplitDetails(MapTask.java:362) at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:403) at org.apache.hadoop.mapred.MapTask.run(MapTask.java:342) at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:168) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:415) at org.apache.hadoop.security.UserGroup@R_912_404[email protected](UserGroup@R_912_404[email protected]:1548) at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:163) Caused by: java.lang.classNotFoundException: Class org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigSplit not found at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:1794) at org.apache.hadoop.mapred.MapTask.getSplitDetails(MapTask.java:360) ... 7 more 2014-10-15 12:02:32,827 INFO [main] org.apache.hadoop.mapred.Task: Runnning cleanup for the task 2014-10-15 12:02:32,827 WARN [main] org.apache.hadoop.mapreduce.lib.output.FileOutputCommitter: Output Path is null in abortTask()

更新:

我能够深入研究这个问题,并发现在“MapTask.getSplitDetails(MapTask.java:363)”方法的下面一行中引发的exception。

private <T> T getSplitDetails(Path file,long offset) throws IOException { FileSystem fs = file.getFileSystem(conf); FSDataInputStream inFile = fs.open(file); inFile.seek(offset); String className = StringInterner.weakIntern(Text.readString(inFile)); Class<T> cls; try { cls = (Class<T>) conf.getClassByName(className); } catch (ClassNotFoundException ce) { IOException wrap = new IOException("Split class " + className + " not found"); wrap.initCause(ce); throw wrap; }

但是,如果我以pipe理员权限启动“NodeManager”,则意味着不会发生上述exception。 我不知道为什么当我启动具有普通权限的“NodeManager”时,MR作业不工作。

链接setargv.obj时是否可以在Windows上引用/转义命令行参数?

minigw-w64无法进行32字节的堆栈alignment,轻松解决或切换编译器?

进程终止C ++

将Javaembedded到C ++应用程序中时,需要采用哪些文件

为什么不包含在.net中的Windows常量?

如果有人知道上述问题的原因和解决办法。 请尽快指导我。

良好的ISAM库或其他简单的文件pipe理器在Windows x64上的大文件

DrawPath和DrawRectangle的区别

KERNELBASE.dllexception0xe0434352偏移量0x000000000000a49d

在Windows上编译dlib示例?

Python进程在django数据库上传脚本中不断增长

您可以使用下面的属性更改hadoop的tmp目录位置

<property> <name>hadoop.tmp.dir</name> <value>/other/tmp</value> </property>

您的认tmp位置是c: tmp,需要管理员权限才能访问。 将位置更改为任何子目录,然后尝试MR作业而无需管理员权限。

希望能帮助到你。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐