gpt4 book ai didi

java - Hadoop 执行期间未找到拆分类

转载 作者:行者123 更新时间:2023-12-01 13:53:00 24 4
gpt4 key购买 nike

我遇到了一个奇怪的问题。我有自己的文件系统实现,而不是默认的分布式文件系统。我已在 fs.default.name 和 impl 中添加了我的文件系统。当 hadoop 执行启动(teragen 程序)时,我可以看到 JobTracker 中的文件 job.xml、job.jar 等的写入和读取运行良好。但是,一旦在 jobtracker 中分配映射任务,它就会给出 ioException ,表示未找到 split 类。我验证了示例 jar 中存在所有类。

此外,为了缩小问题范围,我通过更改 fs.default.name 使用默认分布式系统重试了完全相同的设置。它工作完美!!.

命令

bin/hadoop jar hadoop-examples-1.2.1.jar teragen 100000 /user/hduser/terasort-input

最初我觉得这是一个类路径问题,但是,如果相同的设置适用于默认分布式系统,那么问题可能出在哪里?我在文件系统中的实现如何影响 jobtracker 和类路径?

非常感谢您的帮助。

2013-11-06 12:30:35,018 INFO org.apache.hadoop.mapred.TaskInProgress: Error from attempt_201311061227_0001_m_000000_0: java.io.IOException: Split class PLLorg.apache.hadoop.examples.terasort.TeraGen$RangeInputFormat$RangeInputSplit not found
at org.apache.hadoop.mapred.MapTask.getSplitDetails(MapTask.java:381)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:406)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:366)
at org.apache.hadoop.mapred.Child$4.run(Child.java:255)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:416)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1190)
at org.apache.hadoop.mapred.Child.main(Child.java:249)

Caused by: java.lang.ClassNotFoundException: PLLorg.apache.hadoop.examples.terasort.TeraGen$RangeInputFormat$RangeInputSplit
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:266)
at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:810)
at org.apache.hadoop.mapred.MapTask.getSplitDetails(MapTask.java:379)

最佳答案

请检查您的文件系统实现中的路径转换问题,如下所示:

  • 工作目录
  • filestatus:返回fileStatus时,fileStatus对象中包含一个路径,供以后使用
  • makeQualified
  • 文件路径

您可能还需要检查:

  • 您的文件系统是否实际上是共享文件系统,这意味着所有节点(TT、JT)都具有相同的命名空间。

关于java - Hadoop 执行期间未找到拆分类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19820204/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com