【发布时间】:2020-08-02 06:26:22
【问题描述】:
我正在尝试使用 Hadoop 2.2 运行一个简单的 JUnit 测试。在我的 Windows 7 机器上。 我在http://grepalex.com/2012/10/20/hadoop-unit-testing-with-minimrcluster/ 有一个示例测试,所以我使用 ClusterMapReduceTestCase 作为基类来启动 MiniDFSCluster。
当我运行测试时(在控制台中):
2013-11-15 11:59:24,636 错误 [main] util.Shell (Shell.java:getWinUtilsPath(303)) - 无法在 hadoop 二进制路径中找到 winutils 二进制文件 java.io.IOException:无法在 Hadoop 二进制文件中找到可执行的 null\bin\winutils.exe。 在 org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:278) 在 org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:300) 在 org.apache.hadoop.util.Shell.(Shell.java:293) 在 org.apache.hadoop.util.StringUtils.(StringUtils.java:76) (...)
在 JUnit 输出中:
java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z 在 org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(本机方法) 在 org.apache.hadoop.io.nativeio.NativeIO$Windows.access(NativeIO.java:435) 在 org.apache.hadoop.fs.FileUtil.canWrite(FileUtil.java:996) 在 org.apache.hadoop.hdfs.server.common.Storage$StorageDirectory.analyzeStorage(Storage.java:451) 在 org.apache.hadoop.hdfs.server.namenode.FSImage.recoverStorageDirs(FSImage.java:282) 在 org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:200) (...)
我已阅读以下主题:Failed to locate the winutils binary in the hadoop binary path 和 Running Apache Hadoop 2.1.0 on Windows 我还查看了http://www.srccodes.com/p/article/38/build-install-configure-run-apache-hadoop-2.2.0-microsoft-windows-os 和http://www.srccodes.com/p/article/39/error-util-shell-failed-locate-winutils-binary-hadoop-binary-path 提供的可能解决方案
不幸的是,这在 JUnit 测试中不起作用。如果我编写 junit 测试,我希望它们独立于开发环境(这样你就可以在每台开发机器上毫无问题地运行)。因此,我使用的是 maven,我不想自己构建所需的库并将它们放在 Hadoop bin 文件夹等中。
有什么建议在这种情况下最好的解决方案是什么?
【问题讨论】:
-
我已经看过这个问题,但是,这不是我的情况的解决方案。我尝试在我的 JUnit 测试中运行 MiniDFSCluster,并且我正在使用 maven 来管理我的依赖项,因此,我不想安装 hadoop 操作系统。我想在我的 JUnit 测试中嵌入 MiniDFSCluster。
-
这里有同样的问题 (issues.apache.org/jira/browse/VFS-530)。我真的很想知道为什么迷你集群需要那些原生的东西。在 1.2 天内,来自 cygwin 的 ls.exe 就足够了(即使配置了“所有者”,我猜也可以忽略它)。
-
您是否解决了问题。请分享。谢谢
-
不抱歉,没有重新讨论这个话题。看起来它对 HDFS 开发人员没有优先权