Решение ошибки "Unable to load native-hadoop library" в Hadoop
Быстрый ответ
Для того чтобы избавиться от сообщения об ошибке "Не удалось загрузить библиотеку native-hadoop", укажите java.library.path
на папку с нативными библиотеками Hadoop следующим образом:
System.setProperty("java.library.path", "/путь/до/нативных/библиотек");
Для тестовых сред и сред разработки можно временно отключить это предупреждение следующим образом:
System.setProperty("hadoop.home.dir", "/");
Убедитесь, что путь /путь/до/нативных/библиотек
указан правильно, чтобы нативные библиотеки Hadoop были успешно найдены.
[AsideBanner]
Индивидуальное решение: Перекомпиляция Hadoop
Если вы используете 64-битную версию Ubuntu, то перекомпиляция нативных библиотек под вашу архитектуру может быть решением. Внизу приведено руководство, которое может быть полезно:
https://hadoop.apache.org/docs/r3.3.6/hadoop-project-dist/hadoop-common/NativeLibraries.html#Development
В случае использования CentOS проверьте, совместима ли ваша версия GLIBC с нативными библиотеками Hadoop. Если они несовместимы, возможно, потребуется обновить GLIBC.
Настройте путь к нативным библиотекам в .bashrc
или с помощью HADOOP_OPTS
:
export HADOOP_COMMON_LIB_NATIVE_DIR="$HADOOP_HOME/lib/native"
export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=$HADOOP_HOME/lib/native"
Такой подход препятствует появлению множества потенциальных проблем.
Отфильтровать: Уровни логирования
Если предупреждения только мешают, попробуйте настроить уровень логирования:
log.setLevel(Level.ERROR);
Это не решит корневую проблему, но исключит ненужные сообщения из логов.
Взять ситуацию в свои руки: Сделать самому
Если вы хотите попробовать скомпилировать нативные библиотеки Hadoop самостоятельно, обратитесь к разделу "Сборка и установка нативной библиотеки Hadoop" в официальной документации.
Визуализация
Представьте, что ваша Java-программа в роли детектива ищет книгу под названием 'native-hadoop'.
📚🧑💻 Java-программа: "Мне нужна книга 'native-hadoop' для платформы X."
🔍 Библиотека (ваша система): [📕 Книга для Windows, 📗 Книга для Mac, 📘 Книга для Linux]
💬 Предупреждение: "Не могу найти книгу 'native-hadoop' для платформы X."
Интерпретация: Ваша система либо не содержит нативной библиотеки Hadoop для платформы X, либо имеет неправильную версию.
Проанализируйте ситуацию: библиотека действительно отсутствует или проблема в неправильной версии? Пользуйтесь этими подсказками при решении проблемы.
Обнаружение Невидимого
Установите более высокий уровень логирования для NativeCodeLoader:
-Dhadoop.root.logger=DEBUG,console
Это поможет увидеть проблемы с зависимостями или некорректными путями.
Не Та Полка?
Также проверьте, не были ли нативные библиотеки Hadoop случайно размещены в неправильном каталоге. Они должны находиться в $HADOOP_HOME/lib/native
для Hadoop 2.x.
Отдаем должное нашим героям
Спасибо Searene с Stack Overflow за следующую настройку HADOOP_OPTS:
export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=$HADOOP_HOME/lib/native"
Этот способ может улучшить производительность Hadoop, если используются подходящие нативные библиотеки.
Полезные материалы
- Apache Hadoop 3.3.6 – Руководство по нативным библиотекам — комплексное руководство по нативным библиотекам Hadoop.
- java – Предупреждение Hadoop "Не удалось загрузить библиотеку native-hadoop для вашей платформы" – Stack Overflow — обсуждение проблем с нативными библиотеками на Stack Overflow.
- FAQ – HADOOP2 – Фонд Apache Software — часто задаваемые вопросы по проблемам с нативными библиотеками Hadoop.
- Установка Hadoop | Настройка одноузлового кластера Hadoop | Edureka — пошаговое руководство по установке Hadoop с указаниями на настройку нативных библиотек.