我需要在一组机器上运行一些Spark scala脚本。数据由在其中一台机器上运行的Apache Kafka生产者生成。
我已经在Apache Spark的conf目录中配置了slaves.template文件,其中包含了集群中每个节点的URL。
我使用以下指令运行脚本:
./bin/spark-submit --class com.unimi.lucaf.App /Users/lucaferrari/scala-spark-script2/target/scala-spark-script-1.0.jar
但它表明它只在主节点上运行。
我该如何解决?
由于
解决
conf
中将slaves.template
文件重命名为slaves
并添加了每个工作人员的网址在文件夹conf
中将spark-env.sh.template
文件重命名为spark-env.sh
并添加以下行:
SPARK_MASTER_HOST=1.2.3.4
SPARK_MASTER_PORT=7077
SPARK_MASTER_WEBUI_PORT=4444
SPARK_WORKER_WEBUI_PORT=8081
sbin
中,我运行start-master.sh
脚本。sbin
文件夹中,我运行start-slave.sh spark://master-url:master-port
。 master-url
和master-port
必须与spark-env.sh
文件中配置的相同。val sparkConf = new SparkConf().setAppName("SparkScript").setMaster("spark://master-url:master-port")
./bin/spark-submit --class com.unimi.lucaf.App /home/spark1/scala-spark-script2/target/scala-spark-script-1.0.jar --master spark://master-url:master-port --deploy-mode cluster
答案 0 :(得分:1)
您是否尝试添加
--master <master_url>
选项?如果省略此选项以进行spark-submit,它将在本地运行。
您还可以查看Spark关于spark-submit选项的文档:https://spark.apache.org/docs/latest/submitting-applications.html#launching-applications-with-spark-submit