我从使用Java 8的docker容器运行hbase客户端时遇到了同样的问题.这显然是由类com.sun.security.auth.module.UnixLoginModule引起的,该类使用本机调用来获取unix用户名.在我的例子中,它没有映射到docker中,并且该类抛出NullPointerException.这不是hadoop本身的错误.
为了指示hadoop绕过OS用户名的查找,我能够在所有初始化之前添加以下代码行:
UserGroupInformation.setLoginUser(UserGroupInformation.createRemoteUser("hduser"));
在您的情况下,您正在运行服务器,因此您注入代码的选项是有限的.相反,有两种选择:
请尝试使用IBM JDK
尝试调试worker上的OS用户设置($ whoami).如果它显示"无法找到用户ID XXXX的名称",请检查/ etc/passwd设置