UnsatisfiedLinkError (NativeIO $Windows.access0) при отправке задания mapreduce в hadoop 2.2 из окон в ubuntu
Я отправляю задания mapreduce из приложения java, работающего на окнах, в кластер hadoop 2.2, работающий на ubuntu. В hadoop 1.x это работало так, как ожидалось, но на hadoop 2.2 я получаю странную ошибку:
java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO $Windows.access0 (Ljava/lang/String; I) Z
Я скомпилировал необходимые библиотеки окон (hadoop.dll и winutils.exe) и могу получить доступ к hdfs через код и прочитать информацию о кластере с использованием API-интерфейса hadoop. Только задание не работает.
Любая помощь aprecciated.
Решение. Я сам нашел это, путь, в котором могут быть найдены двоичные файлы windowsoop, должен быть добавлен в переменную PATH из окон.
Ответы
Ответ 1
Эта ошибка обычно возникает из-за несоответствия в ваших двоичных файлах в папке% HADOOP_HOME%\bin. Итак, что вам нужно сделать, это получить hasoop.dll и winutils.exe специально для вашей версии hadoop.
Получите hasoop.dll и winutils.exe для вашей конкретной версии hadoop и скопируйте их в папку% HADOOP_HOME%\bin.
Ответ 2
- Получите
hadoop.dll
(или libhadoop.so
on * x). Удостоверьтесь в соответствии с битностью (32- и 64-бит) с вашей JVM. -
Убедитесь, что он доступен через PATH или java.library.path.
Обратите внимание, что установка java.library.path
переопределяет PATH
. Если вы установили java.library.path
, убедитесь, что он правильный и содержит библиотеку hadoop.