【问题标题】:Spark-submit is not working which is there in shell script submitted thru Oozie workflow通过 Oozie 工作流提交的 shell 脚本中的 Spark-submit 不起作用
【发布时间】:2019-08-08 11:58:04
【问题描述】:

通过 Oozie 工作流程,我提交了一个 shell 脚本,其中包含 spark-submit 命令。

我通过 oozie 控制台在 hdfs /user/admin/first.sh 中上传了 shell 脚本。当我运行脚本直到 spark-submit 命令它运行良好。当它尝试运行 spark-submit cmd 时,它失败了。原因 spark-submit 在本地文件系统中,但我的脚本在 hadoop 文件系统中以 hadoop 管理员用户运行。任何解决这个问题的方法。如何在 hadoop 文件系统中从 hadoop 用户运行本地文件系统(spark-submit)命令,或者我可以在 Oozi 的帮助下将脚本从 hadoop 文件系统复制到本地文件系统。

/usr/lib/spark/bin/spark-submit --driver-java-options "-Dcurrent.job.id=$1 -Dexecutive.transform.dumpname=$dump_name -Dexecutive.transform.source=$SOURCE -Dexecutive.transform.jobid=$1 -Dexecutive.transform.run=$run_id -Dlogging.job.type=$JOB_TYPE -Dlogging.module.name=$MODULE_NAME" --conf spark.executor.extraJavaOptions="-Dcurrent.job.id=$1 -Dexecutive.transform.dumpname=$dump_name -Dexecutive.transform.source=$SOURCE -Dexecutive.transform.jobid=$1 -Dexecutive.transform.run=$run_id -Dlogging.job.type=$JOB_TYPE -Dlogging.module.name=$MODULE_NAME"  --master yarn-cluster --deploy-mode cluster --conf spark.yarn.user.classpath.first=true --class com.insideview.transform.ExecutiveTransformerSparkPipelineJob --jars $5/deploy/etl/dp-properties/DPProperties-$dp_version.jar,$5/deploy/etl/contact-transform/jars/ExecNameTransformer-$dp_version.jar,$5/deploy/hbase/lib/hbase-client.jar,$5/deploy/hbase/lib/hbase-common.jar,$5/deploy/hbase/lib/hbase-server.jar,$5/deploy/hbase/lib/protobuf-java-2.5.0.jar,$5/deploy/hbase/lib/hbase-protocol.jar,$5/deploy/hbase/lib/htrace-core-3.1.0-incubating.jar,$5/deploy/etl/contact-transform/jars/
./first.sh: line 64: /usr/lib/spark/bin/spark-submit: No such file or directory

我有几个数据库步骤,例如在 spark-submit 之前运行良好的 select 语句。当它进入 spark-submt 步骤时,由于本地文件系统,它无法运行。

【问题讨论】:

    标签: shell hadoop oozie spark-submit oozie-workflow


    【解决方案1】:

    失败的原因是 shell 操作将在集群中的任意节点上运行,并且这些节点上没有安装 spark-submit(因此出现“没有这样的文件或目录”错误)。

    你有两个选择:

    1. 继续使用 shell 脚本并在集群中的所有数据节点上安装 spark-submit。
    2. 使用 Oozie Spark 操作

    【讨论】:

    • 您还提到“我的脚本在 hadoop 文件系统中运行”。只是为了澄清我的原始答案是否不清楚......您的脚本没有在 HDFS 上运行。它正在您的数据节点之一的本地文件系统上运行。
    • 为了验证我在脚本中的 /tmp/ 添加了 ls -lrt 它能够显示内容但是当我尝试在 /usr/lib/spark/bin/ 上添加 ls -lrt 它是不显示内容。知道为什么它不显示。
    • 有错误信息吗?也许 /usr/lib/spark/bin/ 在数据节点上不存在?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多