2015-07-31 7 views
5

Ich habe einen Oozie-Workflow geschrieben, der ein BASH-Shell-Skript ausführt, um einige Hive-Abfragen auszuführen und einige Aktionen an den Ergebnissen auszuführen. Das Skript wird ausgeführt, aber es wird ein Berechtigungsfehler ausgegeben, wenn auf einige der HDFS-Daten zugegriffen wird. Der Benutzer, der den Oozie-Workflow gesendet hat, hat eine Berechtigung, aber das Skript wird als Garnbenutzer ausgeführt.Oozie-Shell-Aktion wird nicht ausgeführt, wenn Benutzer gesendet wird

Kann Oozie das Skript als Benutzer ausführen, der den Workflow gesendet hat? Hive- und Java-Aktionen werden beide als übergebender Benutzer ausgeführt, nur die Shell verhält sich anders.

Hier ist die grobe Skizze meiner Oozie Aktion

<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> 

Ich bin mit Oozie 4.1.0 und HDP 2.1.

+0

Haben Sie hcat.metastore.uri, hcat.metastore.principal in Anmeldeinformationen festgelegt? – Prashanth

Antwort

1

Dieses Problem tritt in allen Clustern auf, die mit Simple Security konfiguriert wurden. Sie haben die Möglichkeit, die Standardkonfiguration zu überschreiben. Schließen Sie die folgende Anweisung am Anfang des Shell-Skripts ein, um dieses Problem zu beheben.

export HADOOP_USER_NAME=<Name of submitted user>;