Конфигурация Access Ooz ie в программе Spark - PullRequest
0 голосов
/ 14 января 2020

У меня есть переменная окружения, сохраненная в моем .bash_profile. Я пытаюсь получить к нему доступ через программу Spark, используя метод sys.env() в Scala. Когда у меня нет Ooz ie Scheduling, я могу правильно обращаться к переменной окружения в Spark. Однако, когда я пытаюсь запланировать мою программу, используя Ooz ie, программа выдает ошибку, что она не может прочитать переменную env.

Вот мой рабочий процесс. xml:

<workflow-app xmlns='uri:oozie:workflow:0.5' name='Security-User-Management'>

    <start to='spark-node' />

    <action name='spark-node'>
        <spark xmlns="uri:oozie:spark-action:0.1">
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <prepare>
                <delete path="hdfs://<some hdfs url>/user/clsadmin/cmdw-security/cmdw-security-logs"/>
                <mkdir path="hdfs://<some hdfs url>/user/clsadmin/cmdw-security/cmdw-security-logs"/>
            </prepare>
            <configuration>
                <property>
                    <name>CMDW_CLOUD_USERNAME</name>
                    <value>abcd</value>
                </property>
            </configuration>
            <master>${master}</master>
            <name>CMDW-Security-User-Management</name>
            <class>custom.cmdwldap.executable.Test</class>
            <jar>hdfs://some hdfs url/user/clsadmin/security/Security.jar</jar>
            <arg>CMDW_CLOUD_USERNAME=abcd</arg>
        </spark>
        <ok to="end" />
        <error to="fail" />
    </action>

    <kill name="fail">
        <message>Workflow failed, error message:
            ${wf:errorMessage(wf:lastErrorNode())}
        </message>
    </kill>
    <end name="end" />
</workflow-app>

Как мне прочитать configuration в моем Scala коде ...

1 Ответ

1 голос
/ 15 января 2020
  1. Попробуйте запустить задание в режиме кластера пряжи с краевого узла. Он не сможет распознать эти переменные, так как драйвер spark работает в другом датоде кластера, чей .bash_profile может не иметь этой объявленной переменной. В пограничном узле .bash_profile объявлены переменные, поэтому задание было успешно выполнено, когда вы протестировали скрипт, запустив spark-submit в локальном или в режиме yarn-client.

Запуск из EdgeNode: локальный spark-submit ---> Задание выполняется в граничном узле.

Запуск из EdgeNode: yarn-client spark-submit ---> Задание начинается с драйвера в граничном узле и исполнителей в узлах данных кластера.

Запуск из EdgeNode: spark-submit yarn-cluster ---> Задание запускается в граничном узле, драйвер запускается в одном из узлов данных и исполнители запускаются в остальных узлах данных.

Так же, как и действие оболочки, Ooz ie выполняет другие действия в другом вычислительном узле (возможно, в одной из датоданных) в кластере Had oop, отличном от граничного узла. Эта концепция становится сложной, когда вы думаете о пряже-клиенте и пряже-кластере. При запуске из Ooz ie задание не выполняется, поскольку переменные не находятся в .bash_profile узлов данных.

Выполнение из Ooz ie искровое действие: spark-submit local ---> Job запускается в одном из узлов данных локально.

Запуск из Ooz ie Искробезопасное действие: spark-submit yarn-client ---> Задание запускается с драйвером в одном из узла данных и исполнителями в остальных узлы данных кластера.

Запуск из Ooz ie искра: spark-submit yarn-cluster ---> Задание запускается на одном из узлов данных, драйвер запускается на другом узле данных, а исполнители запускаются в покое узлов данных.

См .: https://oozie.apache.org/docs/5.2.0/WorkflowFunctionalSpec.html#ActionNodes

https://spark.apache.org/docs/latest/cluster-overview.html

Унц ie> в чем разница между асинхронными и синхронными действиями

...