#python #pyspark
Вопрос:
Я установил Java openjdk version "10.0.2"
и Hadoop 2.9.0
успешно. Все процессы работают хорошо
hadoopusr@amalendu:~$ jps
19888 NameNode
20388 DataNode
20898 NodeManager
20343 SecondaryNameNode
20539 ResourceManager
21118 Jps
Но когда я когда-либо пытаюсь выполнить какую-либо команду, например hdfs dfs -ls /
, получить это предупреждение
hadoopusr@amalendu:~$ hdfs dfs -ls /
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.apache.hadoop.security.authentication.util.KerberosUtil (file:/usr/local/hadoop/share/hadoop/common/lib/hadoop-auth-2.9.0.jar) to method sun.security.krb5.Config.getInstance()
WARNING: Please consider reporting this to the maintainers of org.apache.hadoop.security.authentication.util.KerberosUtil
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
18/09/04 00:29:24 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Пожалуйста, помогите, как это исправить.
Это моя конфигурация файла ~/.bashrc
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
Комментарии:
1. Используйте Java 8 для Hadoop. Spark, Scala и т.д. Еще не поддерживают Java 9 или более новую версию.
2. ваш код данных был закрыт
3. @H. король Да, я исправил это
Ответ №1:
Вы ничего не можете поделать с этими предупреждениями, это связано с проектом jigsaw и сильной(er) инкапсуляцией.
В принципе, есть какой-то класс sun.security.krb5.Config
, который называется частью какого-то «модуля» java.security.jgss
. Этот модуль «определяет», что он экспортирует (что другие могут использовать из него) и кому. Это также означает на простом английском языке, что это не для публичного использования — не трогайте это; хорошо hadoop
сделано, это часть их усилий по исправлению этого. Вы можете сообщить об этом или попытаться обновить hadoop, возможно, это уже исправлено.
Комментарии:
1. Спасибо, но есть ли какой-нибудь способ скрыть эти предупреждения ?
2. Сэр, я удалил java 11 и установил java 8, Все исчезло, кроме «WARN util. NativeCodeLoader: Не удается загрузить собственную библиотеку hadoop для вашей платформы… используя встроенные классы java, где это применимо » это происходит.
3. @AmalenduKar это совершенно другое, и вам, скорее всего, следует задать другой вопрос об этом
4. @AmalenduKar Это сообщение означает, что собственные библиотеки hadoop скомпилированы 32-разрядно, и вы используете 64-разрядную установку. Вы можете проигнорировать это сообщение для небольшой настройки Hadoop.
5. Вы можете использовать опцию —добавить-открывает, чтобы временно открыть пакет sun.security.krb5. Это устранит предупреждение, но важно убедиться, что сопровождающие Hadoop знают об этой проблеме. Как только внутренние компоненты JDK будут полностью инкапсулированы, такие хаки, как этот, сломаются.
Ответ №2:
эта проблема связана с последними обновлениями java.пожалуйста, настройте его на java 8.он работает быстро.
Ответ №3:
Это было исправлено в Hadoop 3.3 и 3.2.2 через. https://issues.apache.org/jira/browse/HADOOP-10848