Mac OS下安装Hadoop 2.8.2出现警告问题求助
解决Mac上Hadoop 2.8.2搭配Java 8的非法反射访问警告
嘿,我懂你换完Java版本还看到这个警告的郁闷!别担心,这不是你操作出问题了,是Hadoop 2.8.2的代码和Java 8的安全机制有点小冲突而已。
问题根源
Hadoop里的KerberosUtil类用到了Java反射API,去访问JDK内部的非公开类。Java 8虽然不像Java 9+那样直接禁止这种操作,但会弹出这个“非法反射访问”的警告——其实它完全不影响Hadoop正常运行,就是看着闹心对吧?
解决步骤
你只需要修改Hadoop的环境配置文件,加个JVM参数就能把警告压下去:
- 先找到Hadoop的配置目录,默认路径是
/usr/local/Cellar/hadoop/2.8.2/libexec/etc/hadoop/ - 打开
hadoop-env.sh文件(用文本编辑器或者终端的vi/nano都可以) - 找到或者新增
export HADOOP_OPTS这一行,替换成下面的内容:
如果之后还遇到其他类似的反射警告,可以把范围扩大些:export HADOOP_OPTS="--add-opens java.base/sun.security.krb5=ALL-UNNAMED"export HADOOP_OPTS="--add-opens java.base/java.net=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.security=ALL-UNNAMED" - 保存文件后重启Hadoop服务,再执行
hstart命令,警告就应该消失了。
额外小检查
顺便确认下你的Java环境变量是不是真的指向Java 8:
在终端敲echo $JAVA_HOME,看看输出是不是类似/Library/Java/JavaVirtualMachines/jdk1.8.xxx.jdk/Contents/Home,确保Hadoop确实在跑Java 8。
内容的提问来源于stack exchange,提问作者doyz
相关产品推荐
相关产品推荐

