Действие Oozie Spark (содержащее скрипт Pyspark) застряло в RUNNING - PullRequest
0 голосов
/ 02 января 2019

Я впервые пытаюсь запустить Spark Action со скриптом Pyspark в Oozie. Обратите внимание, что я использую cdh5.13 на моей локальной машине (vm с 12 ГБ ОЗУ) и HUE для создания рабочего процесса.

Workflow.xml какследуйте:

<workflow-app name="sparkMLpy" xmlns="uri:oozie:workflow:0.5">
    <start to="spark-c06a"/>
    <kill name="Kill">
        <message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
    </kill>
    <action name="spark-c06a">
        <spark xmlns="uri:oozie:spark-action:0.2">
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <master>yarn</master>
            <mode>client</mode>
            <name>MySpark</name>
            <jar>sparkml.py</jar>
            <file>/user/cloudera/sparkml.py#sparkml.py</file>
        </spark>
        <ok to="End"/>
        <error to="Kill"/>
    </action>
    <end name="End"/>
</workflow-app>

Я также попытался добавить некоторые параметры:

--conf spark.dynamicAllocation.enabled=true 
--conf spark.shuffle.service.enabled=true 
--conf spark.dynamicAllocation.minExecutors=1

Вот скрипт Pyspark (он делаетпочти ничего):

from pyspark import SparkContext
from pyspark.sql import SQLContext
from pyspark.sql.types import *
sc=SparkContext()
log_txt=sc.textFile("/user/cloudera/CCHS.txt")
header = log_txt.first()
log_txt = log_txt.filter(lambda line: line != header)
temp_var = log_txt.map(lambda k: k.split(","))
c_path_out = "/user/cloudera/output/Frth"
temp_var.saveAsTextFile(c_path_out)

Вот представление рабочего процесса в HUE:

Представление рабочего процесса в HUE

Вот job.properties:

oozie.use.system.libpath=True
send_email=False
dryrun=False
nameNode=hdfs://quickstart.cloudera:8020
jobTracker=quickstart.cloudera:8032
security_enabled=False

Когда я запускаю рабочий процесс, он не выдает ошибку, но продолжает работать без результата (это даже неприостановлено).Вот вид журналов ниже:

Просмотр журналов

Я пытался добавить параметры ниже:

--conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=/usr/local/bin/python2.7 
--conf spark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON=/usr/local/bin/python2.7

И это всегда застревает в беге.Когда я проверил логи, я обнаружил следующие предупреждения:

Heart beat
2019-01-04 02:05:32,398 [Timer-0] WARN  org.apache.spark.scheduler.cluster.YarnScheduler  - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2019-01-04 02:05:47,397 [Timer-0] WARN  org.apache.spark.scheduler.cluster.YarnScheduler  - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources

Не могли бы вы помочь!

Ответы [ 2 ]

0 голосов
/ 19 января 2019

Я должен был запустить тот же рабочий процесс на локальном (не пряжа), и он работает!

        <master>local</master>
        <mode>client</mode>
        <name>MySpark</name>
        <jar>sparkml.py</jar>
0 голосов
/ 02 января 2019

Я использовал Cloudera VM для эксперимента и заметил, что он ведет себя ненормально после нескольких дней использования.Единственный способ, которым мне удается решить эту проблему, - создать экземпляр виртуальной машины Cloudera, и то же самое начало работать.Даже если у вас есть простой рабочий процесс с небольшим количеством параллелизмов, он может работать вовремя и через некоторое время может зависнуть.Он работает правильно, используя REPL, но используя Oozie, он просто зависает.

...