oozie spark操作(包含pyspark脚本)无法运行

m1m5dgzv  于 2021-05-31  发布在  Hadoop
关注(0)|答案(2)|浏览(286)

这是我第一次尝试在oozie中运行包含pyspark脚本的spark操作。请注意,我在本地机器中使用cdh5.13(具有12g ram的vm)和hue来构建工作流。
workflow.xml如下所示:

  1. <workflow-app name="sparkMLpy" xmlns="uri:oozie:workflow:0.5">
  2. <start to="spark-c06a"/>
  3. <kill name="Kill">
  4. <message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
  5. </kill>
  6. <action name="spark-c06a">
  7. <spark xmlns="uri:oozie:spark-action:0.2">
  8. <job-tracker>${jobTracker}</job-tracker>
  9. <name-node>${nameNode}</name-node>
  10. <master>yarn</master>
  11. <mode>client</mode>
  12. <name>MySpark</name>
  13. <jar>sparkml.py</jar>
  14. <file>/user/cloudera/sparkml.py#sparkml.py</file>
  15. </spark>
  16. <ok to="End"/>
  17. <error to="Kill"/>
  18. </action>
  19. <end name="End"/>
  20. </workflow-app>

我还尝试添加了一些选项:

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

这里是pyspark脚本(它几乎什么都不做):

  1. from pyspark import SparkContext
  2. from pyspark.sql import SQLContext
  3. from pyspark.sql.types import *
  4. sc=SparkContext()
  5. log_txt=sc.textFile("/user/cloudera/CCHS.txt")
  6. header = log_txt.first()
  7. log_txt = log_txt.filter(lambda line: line != header)
  8. temp_var = log_txt.map(lambda k: k.split(","))
  9. c_path_out = "/user/cloudera/output/Frth"
  10. temp_var.saveAsTextFile(c_path_out)

以下是工作流程的色调视图:
工作流程视图
以下是job.properties:

  1. oozie.use.system.libpath=True
  2. send_email=False
  3. dryrun=False
  4. nameNode=hdfs://quickstart.cloudera:8020
  5. jobTracker=quickstart.cloudera:8032
  6. security_enabled=False

当我运行工作流时,它不会给出任何错误,但它会一直运行而没有结果(甚至没有挂起)。下面是一些日志:
日志视图
我尝试添加以下选项:

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

它总是被困在跑步中。在验证日志时,我发现以下警告:

  1. Heart beat
  2. 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
  3. 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

你能帮帮我吗!

oewdyzsn

oewdyzsn1#

我用clouderavm做了一个实验,发现它在使用了几天后表现异常。我通过重新示例化clouderavm来解决这个问题的唯一方法是,同样的方法也开始工作了。即使你有一个简单的工作流,很少有并行性,它可能会准时工作,而且可能会在一段时间后卡住。它使用repl可以正常工作,但是使用oozie,它就被挂起了。

bksxznpy

bksxznpy2#

我必须在本地(而不是Yarn)上运行相同的工作流,它可以工作!

  1. <master>local</master>
  2. <mode>client</mode>
  3. <name>MySpark</name>
  4. <jar>sparkml.py</jar>

相关问题