Acquisizione del token di delega Kafka per il flusso di lavoro Oozie

Acquisire i token di delega Kafka da utilizzare con un flusso di lavoro Oozie.

Per ulteriori informazioni sui token di delega Kafka, vedere Utilizzo dei token di delega Kafka.
  1. Aggiungere le credenziali di tipo kafka nel blocco delle credenziali in workflow.xml e includere le proprietà riportate di seguito.
    oozie.kafka.bootstrap.servers  : {Your kafka bootstrap servers}
    oozie.kafka.sasl.kerberos.service.name  : kafka
    oozie.kafka.security.protocol           : SASL_PLAINTEXT
    oozie.kafka.sasl.mechanism              : GSSAPI

    Il campo oozie.kafka.bootstrap.servers: è un elenco separato da virgole di coppie "host e porta" che sono gli indirizzi dei broker Kafka. Specificare uno o più valori.

    Per passare altre proprietà, aggiungere il prefisso oozie.kafka. alla chiave della proprietà come mostrato sopra. È possibile passare questi dal sito Oozie o workflow.xml.

    Nota

    Le proprietà definite in workflow.xml avranno la precedenza maggiore rispetto al sito Oozie.

    Facoltativamente, è possibile inserire le proprietà da Ambari. Per ulteriori informazioni, vedere Immissione di proprietà mediante Ambari.

  2. Includere le credenziali nell'azione del workflow:
    
                                <action name='mr-node' cred='my-kafka-creds'>
                            

    esempio:

    <workflow-app xmlns="uri:oozie:workflow:1.0" name="example-wf">
       <credentials>
     
          <credential name="my-kafka-creds" type="kafka">
             <property>
                <name>oozie.kafka.bootstrap.servers</name>
                <value>bootstrapServer1:6667,bootstrapServer2:6667,bootstrapServer3:6667,</value>
             </property>
             <property>
                <name>oozie.kafka.sasl.kerberos.service.name</name>
                <value>kafka</value>
             </property>
             <property>
                <name>oozie.kafka.security.protocol</name>
                <value>SASL_PLAINTEXT</value>
             </property>
             <property>
                <name>oozie.kafka.sasl.mechanism</name>
                <value>GSSAPI</value>
             </property>
          </credential>
     
       </credentials>
     
       <start to="mr-node"/>
       <action name="mr-node" cred='my-kafka-creds'>
          ...
     
       </action>
     
    </workflow-app>
  3. Utilizzare l'identificativo di testo KAFKA_DELEGATION_TOKEN per recuperare il token di delega Kafka dalla configurazione del job.
    Nota

    • Se si utilizza AclAuthorizer per Kafka, assicurarsi che le ACL corrette siano impostate per gli utenti. Aggiungere le ACL sul broker Kafka come indicato di seguito.

      bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:tokenRequester --allow-host * --operation CreateTokens --user-principal User:tokenOwner
      
    • Se si utilizza RangerKafkaAuthorizer per Kafka, assicurarsi che siano impostati i criteri appropriati. In particolare, aggiungere il richiedente token (in questo caso l'utente Oozie) sotto all - User policy e concedere l'autorizzazione Create Tokens e Describe Tokens. Ciò consente al richiedente del token di acquisire un token di delega per conto dell'utente che ha sottomesso il job.

      L'autorizzazione ACL o Ranger di cui sopra entra in vigore solo se viene utilizzata la rappresentazione. Ad esempio, token requester != token owner.

    • Il Oozie server's Keytab and Principal definito sul sito Oozie (oozie.authentication.kerberos.keytab e oozie.authentication.kerberos.principal) viene utilizzato per l'autenticazione con il broker Kafka.

Immissione di proprietà tramite Ambari (facoltativo)

Immettere le proprietà di configurazione Kafka in Ambari per acquisire il token di delega Kafka per un flusso di lavoro Oozie.

  1. Accedi ad Apache Ambari.
  2. Nella barra degli strumenti laterale, in Servizi selezionare Oozie.
  3. Selezionare Config.
  4. Nella scheda Avanzate, passare al sito oozie personalizzato.
  5. Selezionare Aggiungi proprietà e aggiungere le proprietà riportate di seguito.
    • oozie.kafka.bootstrap.servers: immettere i server bootstrap Kafka in un elenco separato da virgole di coppie "host e porta" che sono gli indirizzi dei broker Kafka. Specificare uno o più valori.
    • oozie.kafka.sasl.kerberos.service.name: immettere kafka.
    • oozie.kafka.security.protocol: immettere GSSAPI.
    • oozie.kafka.security.protocol: immettere SASL_PLAINTEXT