Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否可以从未安装Spark的主机启动Spark应用程序_Java_Apache Spark - Fatal编程技术网

Java 是否可以从未安装Spark的主机启动Spark应用程序

Java 是否可以从未安装Spark的主机启动Spark应用程序,java,apache-spark,Java,Apache Spark,我用Spark standalone实例设置了一个远程主机(目前在同一台机器上有一个主机和一个从机)。我还有一个本地Java代码,带有spark-core依赖项,还有一个带有实际spark应用程序的打包jar。我正试图使用Javadoc中描述的SparkLauncher类启动它 这里是依赖关系: <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.10<

我用Spark standalone实例设置了一个远程主机(目前在同一台机器上有一个主机和一个从机)。我还有一个本地Java代码,带有
spark-core
依赖项,还有一个带有实际spark应用程序的打包jar。我正试图使用Javadoc中描述的
SparkLauncher
类启动它

这里是依赖关系:

        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.10</artifactId>
        <version>${spark.version}</version>
我得到的错误是
路径未找到/opt/spark/current/
或者,如果我删除
setSparkHome
调用,
spark home未找到;显式设置或使用SPARK_HOME环境变量

这是我天真的问题:是否有任何解决方法允许我不在本地主机上安装Spark二进制文件,而我只想运行启动器?为什么依赖项中引用的Spark Java代码不能/不足以连接到某些已配置的远程Spark Master并提交应用程序jar?即使我将Spark二进制文件、应用程序代码和Spark Java jar(如果需要)放在hdfs位置,并使用其他部署方法(如纱线),使用Launcher仅仅触发提交并远程启动是否足够


原因是我不想在多个客户端节点上安装Spark二进制文件,而只是从那里提交和启动动态创建/修改的Spark应用程序,这听起来像是浪费。更不用说每次提交都需要将应用程序打包到jar中。

简短回答:客户端机器上必须有spark二进制文件,并且必须有指向它的
spark\u HOME
环境变量

详细回答:但是,如果要在远程群集上启动作业,则可以在spark作业中使用以下配置:

val spark = SparkSession.builder.master("yarn") 
.config("spark.submit.deployMode", "cluster")
.config("spark.driver.host", "remote.spark.driver.host.on.the.cluster") 
.config("spark.driver.port", "35000")
.config("spark.blockManager.port", "36000") 
.getOrCreate()
spark.driver.port
spark.blockManager.port
不是强制性的,但如果您在封闭环境中工作,例如kubernetes网络,并且为spark客户端定义了一些端口网关服务,则需要这些端口

在SparkLauncher的主设置中定义远程主机将不起作用。您需要从集群获取hadoop配置,通常它位于集群节点上的
/etc/hadoop/conf
。将hadoop config目录放在客户机中,并将
hadoop\u CONF\u DIR
环境变量指向它。这应该足够开始了

val spark = SparkSession.builder.master("yarn") 
.config("spark.submit.deployMode", "cluster")
.config("spark.driver.host", "remote.spark.driver.host.on.the.cluster") 
.config("spark.driver.port", "35000")
.config("spark.blockManager.port", "36000") 
.getOrCreate()