如何修复 Hadoop 警告:在 Ubuntu 上发生非法反射访问操作错误
Posted
技术标签:
【中文标题】如何修复 Hadoop 警告:在 Ubuntu 上发生非法反射访问操作错误【英文标题】:How to fix Hadoop WARNING: An illegal reflective access operation has occurred error on Ubuntu 【发布时间】:2018-09-03 19:02:37 【问题描述】:我已经成功安装了Javaopenjdk 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"
【问题讨论】:
为 Hadoop 使用 Java 8。 Spark、Scala 等尚不支持 Java 9 或更新版本。 您的数据节点已关闭 @H.king 是的,我已经修好了 【参考方案1】:对于这些警告,您无能为力,这与拼图项目和强(呃)封装有关。
基本上有一些名为sun.security.krb5.Config
的类是一些名为java.security.jgss
的“模块”的一部分。该模块“定义”了它导出的内容(其他人可以从中使用的内容)以及向谁导出。这也意味着用简单的英语,这不是供公众使用的——不要碰它;好吧hadoop
做到了,这是他们解决这个问题的一部分。您可以报告此问题或尝试升级 hadoop,这可能已经修复。
【讨论】:
谢谢,但是有什么办法可以隐藏这个警告吗? 先生,我删除了 java 11 并安装了 java 8,一切都消失了,但“WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable” this发生。 @AmalenduKar 这完全不同,你很可能应该发布一个不同的问题 @AmalenduKar 该消息意味着 hadoop 本机库是 32 位编译的,并且您在 64 位设置上运行。对于小型 Hadoop 设置,您可以忽略该消息。 您可以使用 --add-opens 选项临时打开 sun.security.krb5 包。这将消除警告,但重要的是要确保 Hadoop 维护人员意识到这个问题。一旦 JDK 内部被完全封装,那么像这样的 hack 就会崩溃。【参考方案2】:这个问题是由于最新的 java 升级造成的。请用 java 8 配置它。它的工作迅速。
【讨论】:
【参考方案3】:这已在 Hadoop 3.3 和 3.2.2 中通过修复。 https://issues.apache.org/jira/browse/HADOOP-10848
【讨论】:
以上是关于如何修复 Hadoop 警告:在 Ubuntu 上发生非法反射访问操作错误的主要内容,如果未能解决你的问题,请参考以下文章
如何修复“警告:useLayoutEffect 在服务器上啥都不做”?
我该如何修复此警告信息。警告:忽略“UIButton”实例上的键路径“radius”的用户定义的运行时属性
如何修复 Xcode 7.3 警告:`init` 已弃用:它将在 Swift 3 中删除:在序列上使用`enumerate()` 方法 [重复]