2015-07-31 11 views
5

Ho scritto un flusso di lavoro Oozie che esegue uno script di shell BASH per eseguire alcune query hive ed eseguire alcune azioni sui risultati. Lo script viene eseguito ma genera un errore di autorizzazione durante l'accesso ad alcuni dati HDFS. L'utente che ha inviato il flusso di lavoro Oozie dispone dell'autorizzazione, ma lo script è in esecuzione come utente del filato.Azione shell Oozie non in esecuzione come utente di invio

E 'possibile rendere Oozie eseguire lo script come utente che ha inviato il flusso di lavoro? Le azioni Hive e Java vengono eseguite come utente inviato, ma la shell si comporta diversamente.

Ecco l'abbozzo della mia azione Oozie

<action name="start_action" 
     retry-max="12" 
     retry-interval="600"> 
    <shell xmlns="uri:oozie:shell-action:0.1"> 
     <job-tracker>${jobTracker}</job-tracker> 
     <name-node>${nameNode}</name-node> 
     <job-xml>${WorkflowRoot}/hive-site.xml</job-xml> 
     <exec>script.sh</exec> 
     <file>${WorkflowRoot}/script.sh</file> 
     <capture-output /> 
    </shell> 
    <ok to="next_action"/> 
    <error to="send_email"/> 
</action> 

Io corro Oozie 4.1.0 e HDP 2.1.

+0

Hai impostato hcat.metastore.uri, hcat.metastore.principal nelle credenziali? – Prashanth

risposta

1

Questo problema si verificherà in tutti i cluster configurati utilizzando Simple Security. Hai la possibilità di sovrascrivere la configurazione predefinita. Includere la seguente istruzione all'inizio dello script della shell risolverà questo problema.

export HADOOP_USER_NAME=<Name of submitted user>; 
Problemi correlati