如何使用spark-submit将打包好的jar提交到Spark上运行?
打开终端,在终端中输入spark-submit --help, 可以查看spark-submit的详细帮助。
下面说一下 spark-submit 的详细帮助。
(1) --class 指向程序中的主类。
例如:--class "helloworld"
(2) --master 是指集群的master URL。
举个例子,在本地运行就可以这样写:
local模式:
- -master local //这是在本地运行
--master local[K] 这是在本地运行,并且启动K(数字比如1,2,3这样的)个woker线程,如果K设置为*(这样:--master local[*]),则表示使用机器上的所有逻辑核心数作为参数K的值。
- -master local[K,F] //这是在本地运行并且启动K个worker线程(这里的K也设置为*),并且设置任务的最大出错数为E次,设置任务的最大出错数为F次。
使用这种方式由于是直接在本地运行的,并没有提交到集群上,所以8080端口的WebUI中看不到提交的任务。
standalone模式:
如果想在standalone模式下运行则可以这样写:
master spark:/ /host:port //host是master的ip或者hostname, 这里的端口号默认是7077这个端口号可以在8080端口的Web UI界面中看到。
master spark:/ /host :port, host2:port2 //如果有备用的master则可以这样写,在不同的master之间用逗号隔开。
mesos :
如果使用了mesos 作为集群的资源管理器,则可以这样写:
--master mesos:/ /host:port //和standalone的写法类似
YARN:
如果使用了YARN作为集群的资源管理器,则可以这样写:
--master yarn //如果使用这种方式则需要读者设置好Hadoop的HADOOP_ CONF_DIR和YARN_CONF_DIR环境变量
(3) --deploy-mode 设置以什么模式运行,有cluster和client两种,默认是client 模式。
(4) --conf后面跟配置属性的键和值,详情可参看下面的模板。
下面给出大体的模板:
./bin/ spark-submit \
--class <main-class> \
--master <master-url> \
--deploy-mode <deploy-mode> \
--conf <key>=<value> \
...#其他参数,详情请参考spark-submit --help \
<jar的路径> \
注意: ""反斜杠用于换行。
下面给出一个例子供读者参考:
./bin/ spark-submit \
--class "helloworld" \
--master spark://master:7077 \
--deploy-mode cluster \
--executor-memory 20G \
--total-executor-cores 100 \
/path/to/examples.jar \
1000
spark:spark-submit 提交任务及参数说明(yarn):
https://blog.csdn.net/weixin_38750084/article/details/104146054