我正在使用 YarnClient 以编程方式开始工作。我正在运行的集群已经过 kerberos 化。
通过“yarn jar examples.jar wordcount ...”提交的法线贴图减少作业工作。
我试图以编程方式提交的工作没有。我收到此错误:
2004 年 9 月 14 日 21:14:29 错误 client.ClientService:应用程序提交期间发生错误:应用程序 application_1409863263326_0002 失败 2 次,原因是 appattempt_1409863263326_0002_000002 的 AM 容器退出,退出代码:-1000,原因是:本地异常失败:java.io。 IOException:org.apache.hadoop.security.AccessControlException:客户端无法通过:[TOKEN,KERBEROS] 进行身份验证;主机详情:本地主机为:“yarn-c1-n1.clouddev.snaplogic.com/10.184.28.108”;目标主机是:“yarn-c1-cdh.clouddev.snaplogic.com”:8020;.这次尝试失败..申请失败。14/09/04 21:14:29 ERROR client.YClient: 应用程序提交失败
代码看起来像这样:
ClientContext context = createContextFrom(args);
YarnConfiguration configuration = new YarnConfiguration();
YarnClient yarnClient = YarnClient.createYarnClient();
yarnClient.init(configuration);
ClientService client = new ClientService(context, yarnClient, new InstallManager(FileSystem.get(configuration)));
LOG.info(Messages.RUNNING_CLIENT_SERVICE);
boolean result = client.execute();
我原以为可能会添加一些东西来达到以下效果:
yarnClient.getRMDelegationToken(new Text(InetAddress.getLocalHost().getHostAddress()));
也许可以减轻我的痛苦,但这似乎也无济于事。任何帮助将不胜感激。