Как я могу передать билет Kerberos в приложение Spring Yarn

Я пытаюсь запустить приложение Simple Single Project Yarn, подробно описанное здесь. Я развернул приложение в виде JAR-файла в нашем кластере Hadoop. При попытке запустить я получаю исключение, трассировка стека ниже:

[2015-06-04 14:10:45.866] boot - 13669 ERROR [main] --- SpringApplication: Application startup failed
java.lang.IllegalStateException: Failed to execute CommandLineRunner
        at org.springframework.boot.SpringApplication.runCommandLineRunners(SpringApplication.java:680)
        at org.springframework.boot.SpringApplication.afterRefresh(SpringApplication.java:695)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:322)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:961)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:950)
        at com.aetna.ise.yarn.publish.Application.main(Application.java:21)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:95)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:56)
        at java.lang.reflect.Method.invoke(Method.java:620)
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:53)
        at java.lang.Thread.run(Thread.java:857)
Caused by: org.springframework.yarn.YarnSystemException: SIMPLE authentication is not enabled.  Available:[TOKEN, KERBEROS]; nested exception is org.apache.hadoop.security.AccessControlException: SIMPLE authentication is not enabled.  Available:[TOKEN, KERBEROS]

Это связано с тем, что наш кластер использует аутентификацию Kerberos. Есть ли способ передать билет Kerberos приложению в коде Spring YARN? Я не вижу места для этого.


person Dan Bellenoit    schedule 04.06.2015    source источник


Ответы (1)


В настоящее время мы не можем делегировать какие-либо билеты при отправке приложения, но само приложение может использовать kerberos.

Это объясняется в разделе http://docs.spring.io/spring-hadoop/docs/2.1.2.RELEASE/reference/html/springandhadoop-security.html#literal-spring-hadoop-security-свойствабуквальнойконфигурации

Например, что-то вроде того, что показано ниже в application.yml (используйте участников из вашего кластера):

spring:
  hadoop:
    fsUri: hdfs://localhost:8020
    resourceManagerHost: localhost
    security:
      userPrincipal: jvalkealahti/neo
      userKeytab: /usr/local/hadoops/jvalkealahti.keytab
      authMethod: kerberos
      namenodePrincipal: hdfs/neo@LOCALDOMAIN
      rmManagerPrincipal: yarn/neo@LOCALDOMAIN
person Janne Valkealahti    schedule 04.06.2015