spark launcher解读

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spark launcher解读相关的知识,希望对你有一定的参考价值。

参考技术A 本文主要承接上篇spark-submit解读后,来说说在spark-class.sh中调用org.apache.spark.launcher.Main,最后spark launcher进行了怎样的操作。
经过spark-submit脚本的处理后,在spark-class脚本中传入当前函数的参数如下:

接下来我们来看看Main.main()方法:

Spark 安装 - 错误:无法找到或加载主类 org.apache.spark.launcher.Main

【中文标题】Spark 安装 - 错误:无法找到或加载主类 org.apache.spark.launcher.Main【英文标题】:Spark installation - Error: Could not find or load main class org.apache.spark.launcher.Main 【发布时间】:2018-10-30 07:26:06 【问题描述】:

安装 spark 2.3 并在 .bashrc 中设置以下环境变量(使用 gitbash)

    HADOOP_HOME

    SPARK_HOME

    PYSPARK_PYTHON

    JDK_HOME

执行 $SPARK_HOME/bin/spark-submit 显示以下错误。

错误:无法找到或加载主类 org.apache.spark.launcher.Main

我在 *** 和其他网站上做了一些研究检查,但无法找出问题所在。

执行环境

    Windows 10 企业版 Spark 版本 - 2.3 Python 版本 - 3.6.4

你能提供一些指导吗?

【问题讨论】:

【参考方案1】:

验证以下步骤:

    spark-launcher_*.jar 存在于 $SPARK_HOME/jars 文件夹中吗? 分解 spark-launcher_*.jar 以验证您是否有 Main.class。

如果上述情况属实,那么您可能正在使用 cygwin 终端在 Windows 操作系统上运行 spark-submit。

尝试使用 spark-submit.cmd 代替,cygwin 也会解析 /c/ 之类的驱动器,这在 Windows 中不起作用,因此通过使用 'C:/' 限定环境变量来提供绝对路径很重要,而不是'/c/'。

【讨论】:

【参考方案2】:
    检查 Spark 主目录是否包含所有文件夹和文件(xml、jar 等),否则请安装 Spark。 检查您的 JAVA_HOME 和 SPARK_HOME 环境变量是否在您的 .bashrc 文件中设置,尝试设置以下内容:

导出 JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/

导出 SPARK_HOME=/home/ubuntu-username/spark-2.4.8-bin-hadoop2.6/

或者你的 spark 下载到哪里

导出 SPARK_HOME=/home/Downloads/spark-2.4.8-bin-hadoop2.6/

完成后,保存 .bash 并在终端上运行 bash 命令或重新启动 shell 并尝试 spark-shell

【讨论】:

【参考方案3】:

我收到了那个错误信息。它可能有几个根本原因,但这是我调查和解决问题的方式(在 linux 上):

不要启动spark-submit,而是尝试使用bash -x spark-submit 来查看哪一行失败。 多次执行该过程(因为 spark-submit 调用嵌套脚本),直到找到调用的底层过程:在我的情况下类似于:

/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java -cp '/opt/spark-2.2.0-bin-hadoop2.7/conf/:/opt/spark-2.2.0-bin-hadoop2.7/jars/*' -Xmx1g org.apache.spark.deploy.SparkSubmit --class org.apache.spark.repl.Main --name 'Spark shell' spark-shell

因此,spark-submit 启动了一个 java 进程,但使用 /opt/spark-2.2.0-bin-hadoop2.7/jars/* 中的文件找不到 org.apache.spark.launcher.Main 类(请参阅上面的 -cp 选项)。我在这个 jars 文件夹中做了一个 ls 并计算了 4 个文件而不是整个 spark 分发(约 200 个文件)。 这可能是安装过程中的一个问题。所以我重新安装了 spark,检查了 jar 文件夹,它就像一个魅力。

所以,你应该:

检查java 命令(cp 选项) 检查您的 jars 文件夹(它至少包含所有 spark-*.jar 吗?)

希望对你有帮助。

【讨论】:

以上是关于spark launcher解读的主要内容,如果未能解决你的问题,请参考以下文章

Spark Launcher简记

由于令牌在 24 小时后无法在缓存中找到,Spark Launcher 作业未启动

android10设置默认launcher无效

关于android使用自己的launcher替换默认launcher的方法

Android launcher3 -- launcher3源码1

ios launcher图标 怎么定义