我正在尝试创建一个Unmanaged ApplicationMaster,并且在创建AMRMtokens时遇到问题。我深入研究了TestAMRMtokens.java测试用例,这是我想出的。 (这是scala代码)
def getNextAttemptid() : ApplicationAttemptId = {
val t = java.lang.System.currentTimeMillis()
ConverterUtils.toApplicationAttemptId(ConverterUtils.APPLICATION_ATTEMPT_PREFIX + "_" + t.toString() + "_0001" + "_0001")
}
appAttemptId = getNextAttemptid()
UserGroupInformation.setConfiguration(yarnConf)
val ugi = UserGroupInformation.getCurrentUser()
val tokenIdentifier = new AMRMTokenIdentifier(appAttemptId)
val secretManager = new AMRMTokenSecretManager(yarnConf)
val token: Token[_ <: TokenIdentifier] = new Token[AMRMTokenIdentifier](tokenIdentifier, secretManager)
ugi.addToken(token)
amClient = AMRMClient.createAMRMClient()
amClient.init(yarnConf)
amClient.start()
val appMasterResponse = amClient.registerApplicationMaster("localhost", 0, "")
Yarn不喜欢这个请求并说:
2014-01-27 10:47:10,938 WARN SecurityLogger.org.apache.hadoop.ipc.Server:对于127.0.0.1:63085:null,验证失败(DIGEST-MD5:IO错误获取密码) 2014-01-27 10:47:10,938 INFO org.apache.hadoop.ipc.Server:8030上的IPC服务器监听器:来自客户端127.0.0.1的readAndProcess抛出异常[org.apache.hadoop.security.token.SecretManager $ InvalidToken:找不到密码 ApplicationAttempt appattempt_1390848430314_0001_000001]
我确信我做错了什么。是否有文档或示例代码显示如何创建令牌?我是否必须在Yarn / Hadoop配置中的某个位置设置这些用户。
配置: