Oozie Spark Action(包含 Pyspark 脚本)卡在 运行

Oozie Spark Action (Containing Pyspark Script) Stuck in RUNNING

这是我第一次在 Oozie 中尝试 运行 包含 Pyspark 脚本的 Spark Action。 请注意,我在我的本地计算机(具有 12G RAM 的虚拟机)中使用 cdh5.13,并使用 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 中的工作流视图:

View of the workflow in 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

当我 运行 工作流时,它没有给出任何错误,但它保持 运行 没有结果(它甚至没有暂停)。以下是日志的视图:

View of the logs

我尝试添加以下选项:

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

而且一直卡在运行ning。当我验证日志时,我发现了这个警告:

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

你能帮忙吗!

我已经使用 Cloudera VM 进行实验,并注意到在使用几天后它表现异常。我设法通过重新实例化 Cloudera VM 来解决它的唯一方法,并且同样开始工作。 即使你有一个简单的工作流,几乎没有并行性,它也可能会按时工作,并且可能会在一段时间后卡住。它使用 REPL 可以正常工作,但是使用 Oozie,它就会被挂起。

我必须 运行 在本地(而不是 yarn)上使用相同的工作流程并且它有效!

        <master>local</master>
        <mode>client</mode>
        <name>MySpark</name>
        <jar>sparkml.py</jar>