MiniDFSCluster: не может получить доступ к праву самостоятельно созданных каталогов - PullRequest
0 голосов
/ 30 сентября 2019

Я хотел бы проверить свой код, вызывая пример класса org.apache.hadoop.hdfs.MiniDFSCluster. Однако в то время, когда я вызываю пример этого, я получаю сообщение об ошибке, сообщающее мне, что какой-то файл не должен быть доступен процессу. Я проследил за трассировкой стека и во время отладки понял, что не могу получить доступ к папкам с именами «name1», «name2», тем, которые фактически создал MiniDFSCluster в базовом каталоге во время создания экземпляра.

Я пытаюсь запустить тестовый файл Scala testSuite, содержащий вызов класса из Intellij IDEA 2019.2, Windows 7. Некоторое время назад у меня возникла проблема, описанная в Hadoop Mini Cluster Mock (MiniDFSCluster), но исправил это и столкнулся с этим, оставленным последним пользователем. Я видел, что есть еще несколько пользователей, сталкивающихся с той же проблемой, но не смогли извлечь правильное решение: ошибка при использовании miniDFSCluster на 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 голосов
/ 08 октября 2019

Наконец, это было решено простым добавлением каталога% HADOOP_HOME% / bin в переменную окружения% Path%, и вот оно ...

...