MiniDFSCluster:无法获取自己创建的目录的访问权限

问题描述 投票:0回答:1

我想测试我的代码,唤起org.apache.hadoop.hdfs.MiniDFSCluster类示例。但是,在我举个例子的时候,我收到一条错误消息,通知我进程不会访问某些文件。我遵循了堆栈跟踪,在调试过程中我了解到我无法访问名为“ name1”,“ name2”的文件夹,这些文件夹是MiniDFSCluster在实例化期间实际上在基本目录中创建的。

我正在尝试运行一个Scala testSuite测试文件,该文件包含从Intellij IDEA 2019.2 Windows 7中进行的类调用。一段时间之前,我遇到了与Hadoop Mini Cluster Mock (MiniDFSCluster)中所述相同的问题,但已将其修复并面对上一个用户留下的问题。我看到还有更多用户面临相同的问题,但是无法提取正确的解决方案:error using miniDFSCluster on windows。返回给我的堆栈跟踪与MiniDFSCluster UnsatisfiedLinkError org.apache.hadoop.io.nativeio.NativeIO$Windows.access0

非常相似

[此外,我还找到了一些指南,建议仅在本地修复引发异常的方法,但这似乎很尴尬。 https://www.cs.helsinki.fi/u/jilu/paper/hadoop_on_win.pdf

这是我的测试:

val HADOOP_HOME="C:\\Local\\hadoop-common-2.2.0-bin-master"
val conf = new Configuration()
conf.set(MiniDFSCluster.HDFS_MINIDFS_BASEDIR, HADOOP_HOME)
System.setProperty("hadoop.home.dir", HADOOP_HOME)

val builder = new Builder(conf)
builder.build()

作为结果,我得到了以下堆栈跟踪:

java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z

at org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Native Method)
at org.apache.hadoop.io.nativeio.NativeIO$Windows.access(NativeIO.java:557)
at org.apache.hadoop.fs.FileUtil.canWrite(FileUtil.java:996)
at org.apache.hadoop.hdfs.server.common.Storage$StorageDirectory.analyzeStorage(Storage.java:490)
at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverStorageDirs(FSImage.java:308)
at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:202)

我很乐意使用此工具来测试我的代码,因此,请提供任何信息,我们将不胜感激。

如果您要解决此问题,请尝试在Windows环境中实例化一个类,并告诉我它将返回什么。

scala hadoop testing hdfs
1个回答
0
投票

最后,仅通过将%HADOOP_HOME%/ bin目录添加到%Path%环境变量中即可解决,就这样...

© www.soinside.com 2019 - 2024. All rights reserved.