YARN 客户端身份验证失败,SIMPLE 身份验证未启用。可用:[令牌]

YARN client authentication fails with SIMPLE authentication is not enabled. Available:[TOKEN]

我设置了一个简单的本地 PHD 3.0 Hadoop 集群,并按照 Spring Yarn Basic Getting Started guide

中描述的步骤进行操作

运行 针对我的 Hadoop 集群的应用程序提供

org.apache.hadoop.security.AccessControlException: SIMPLE authentication is not enabled.  Available:[TOKEN]

以及 YARN ResourceManager 中的以下堆栈跟踪:

org.apache.hadoop.security.AccessControlException: SIMPLE authentication is not enabled.  Available:[TOKEN]
    at org.apache.hadoop.ipc.Server$Connection.initializeAuthContext(Server.java:1554)
    at org.apache.hadoop.ipc.Server$Connection.readAndProcess(Server.java:1510)
    at org.apache.hadoop.ipc.Server$Listener.doRead(Server.java:762)
    at org.apache.hadoop.ipc.Server$Listener$Reader.doRunLoop(Server.java:636)
    at org.apache.hadoop.ipc.Server$Listener$Reader.run(Server.java:607)

这可能是一个非常基本的问题。 我只想 运行 YARN 应用程序测试而不设置任何身份验证。

据我了解,YARN 不允许 SIMPLE 客户端身份验证: https://issues.apache.org/jira/browse/YARN-2156

根据这个问题 How can I pass a Kerberos ticket to Spring Yarn application

我可能最终会设置 Kerberos 身份验证。

有没有办法 运行 Spring YARN 示例而不需要详细的身份验证设置?

我刚刚尝试使用 5 节点 phd30 集群,一切正常:

build.gradle 中,我使用了 phd30 包而不是 vanilla(这取决于 hadoop 2.6.0)。在这种情况下,版本应该无关紧要。

compile("org.springframework.data:spring-yarn-boot:2.2.0.RELEASE-phd30")
testCompile("org.springframework.data:spring-yarn-boot-test:2.2.0.RELEASE-phd30")

src/main/resources/application.yml 中,我更改了 hdfs、rm 和调度程序地址以匹配集群设置:

spring:
    hadoop:
        fsUri: hdfs://ambari-2.localdomain:8020
        resourceManagerAddress: ambari-3.localdomain:8050
        resourceManagerSchedulerAddress: ambari-3.localdomain:8030

然后我只是 运行 从我自己的计算机外部:

$ java -jar target/gs-yarn-basic-single-0.1.0.jar

有一个 appmaster 和一个 container 被执行,应用应该会成功。

如果还是不行,那还有别的办法。我没有部署 hawk 如果有影响的话。

我的错误很简单。 我必须添加

spring:
    hadoop:
        resourceManagerAddress: myyarnhost:8050
        resourceManagerSchedulerAddress: myyarnhost:8030

application.yml,但混淆了端口号(8030 用于管理器,8050 用于 ManagerScheduler)。 而那个错字造成了这样的影响。

也许将这两个配置属性添加到入门指南中可以为下一位读者节省一些时间。

此外,为了 运行 针对新安装的 PHD3.0 的示例,我必须通过导出默认 HADOOP_USER_NAME:

来修改 HDFS 客户端用户名
export HADOOP_USER_NAME=hdfs