当应用程序 jar 在 hdfs 中时,Spark-submit 不起作用
Spark-submit not working when application jar is in hdfs
我正在尝试 运行 使用 bin/spark-submit 的 spark 应用程序。当我在我的本地文件系统中引用我的应用程序 jar 时,它可以工作。但是,当我将应用程序 jar 复制到 hdfs 中的目录时,出现以下异常:
Warning: Skip remote jar hdfs://localhost:9000/user/hdfs/jars/simple-project-1.0-SNAPSHOT.jar.
java.lang.ClassNotFoundException: com.example.SimpleApp
命令如下:
$ ./bin/spark-submit --class com.example.SimpleApp --master local hdfs://localhost:9000/user/hdfs/jars/simple-project-1.0-SNAPSHOT.jar
我使用的是 hadoop 版本 2.6.0,spark 版本 1.2.1
是的,必须是本地文件。我认为这就是答案。
当我使用
时,它对我有用的唯一方法
--master yarn-cluster
要使 spark-job 可以访问 HDFS 库,您必须 运行 集群模式下的作业。
$SPARK_HOME/bin/spark-submit \
--deploy-mode cluster \
--class <main_class> \
--master yarn-cluster \
hdfs://myhost:8020/user/root/myjar.jar
此外,还为客户端模式提出了 Spark JIRA,目前尚不支持。
SPARK-10643 :支持客户端模式spark submit下载HDFS应用
有一个解决方法。您可以将 HDFS 中的目录(包含您的应用程序 jar)挂载为本地目录。
我做了同样的事情(使用 azure blob 存储,但对于 HDFS 应该类似)
azure wasb 的示例命令
sudo mount -t cifs //{storageAccountName}.file.core.windows.net/{directoryName} {local directory path} -o vers=3.0,username={storageAccountName},password={storageAccountKey},dir_mode=0777,file_mode=0777
现在,在您的 spark 提交命令中,您提供上述命令的路径
$ ./bin/spark-submit --class com.example.SimpleApp --master local {local directory path}/simple-project-1.0-SNAPSHOT.jar
spark-submit --master spark://kssr-virtual-machine:7077 --deploy-mode client --executor-memory 1g hdfs://localhost:9000/user/wordcount.py
对我来说,我使用的是 Hadoop 3.3.1 和 Spark 3.2.1。我能够从 HDFS 读取文件。
我正在尝试 运行 使用 bin/spark-submit 的 spark 应用程序。当我在我的本地文件系统中引用我的应用程序 jar 时,它可以工作。但是,当我将应用程序 jar 复制到 hdfs 中的目录时,出现以下异常:
Warning: Skip remote jar hdfs://localhost:9000/user/hdfs/jars/simple-project-1.0-SNAPSHOT.jar. java.lang.ClassNotFoundException: com.example.SimpleApp
命令如下:
$ ./bin/spark-submit --class com.example.SimpleApp --master local hdfs://localhost:9000/user/hdfs/jars/simple-project-1.0-SNAPSHOT.jar
我使用的是 hadoop 版本 2.6.0,spark 版本 1.2.1
是的,必须是本地文件。我认为这就是答案。
当我使用
时,它对我有用的唯一方法--master yarn-cluster
要使 spark-job 可以访问 HDFS 库,您必须 运行 集群模式下的作业。
$SPARK_HOME/bin/spark-submit \
--deploy-mode cluster \
--class <main_class> \
--master yarn-cluster \
hdfs://myhost:8020/user/root/myjar.jar
此外,还为客户端模式提出了 Spark JIRA,目前尚不支持。
SPARK-10643 :支持客户端模式spark submit下载HDFS应用
有一个解决方法。您可以将 HDFS 中的目录(包含您的应用程序 jar)挂载为本地目录。
我做了同样的事情(使用 azure blob 存储,但对于 HDFS 应该类似)
azure wasb 的示例命令
sudo mount -t cifs //{storageAccountName}.file.core.windows.net/{directoryName} {local directory path} -o vers=3.0,username={storageAccountName},password={storageAccountKey},dir_mode=0777,file_mode=0777
现在,在您的 spark 提交命令中,您提供上述命令的路径
$ ./bin/spark-submit --class com.example.SimpleApp --master local {local directory path}/simple-project-1.0-SNAPSHOT.jar
spark-submit --master spark://kssr-virtual-machine:7077 --deploy-mode client --executor-memory 1g hdfs://localhost:9000/user/wordcount.py
对我来说,我使用的是 Hadoop 3.3.1 和 Spark 3.2.1。我能够从 HDFS 读取文件。