У меня есть рабочий процесс oozie, который вызывает скрипт оболочки. Сценарий оболочки вызывает запрос preto cli. Если я выполняю сценарий оболочки из терминала замазки, тогда все работает как положено
Но когда я запускаю рабочий процесс, возникает ошибка. Я знаю, что сам сценарий оболочки вызывается успешно, так как я вижу свою инструкцию ECHO в файлах журнала ниже
Этот сценарий хранится в файловой системе Hadoop
сценарий оболочки:
#!/bin/bash
echo Execute Presto Command
/home/hdfs/presto-cli --server 1.1.1.1:8080 --catalog hive --schema test --execute 'SELECT * from test limit 10'
Однако, когда команда presto-cli вызывается, возникает ошибка «Отказано в доступе»
В графическом интерфейсе Oozie можно увидеть действие, выполняемое под моим пользователем HDFS, поэтому я не уверенк какому разрешению это относится?
Я где-то читал, что вы должны указать рабочему процессу запускаться от имени пользователя, запустившего рабочий процесс, а не от пользователя YARN. Я добавил тег env-var в свое действие рабочего процесса (см. Ниже), но это не помогло либо
Ниже описано действие моего рабочего процесса:
<action name="Shell-Action">
<shell xmlns="uri:oozie:shell-action:0.1">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<configuration>
<property>
<name>mapred.job.queue.name</name>
<value>${queueName}</value>
</property>
</configuration>
<exec>_myshell.sh</exec>
<env-var>HADOOP_USER_NAME=${wf:user()}</env-var>
<file>/user/hdfs/scripts/myshell.sh</file>
</shell>
<ok to="end"/>
<error to="fail"/>
</action>
Что я делаю неправильно?
Спасибо