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

时间:2019-09-30 17:50:26

标签: scala hadoop testing hdfs

我想测试一下我的代码,唤起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环境中实例化一个类,并告诉我它将返回什么。

1 个答案:

答案 0 :(得分:0)

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