一 提交命令及参数解释
spark-sumbit
参数 | 解释 |
---|---|
–class | 程序运行的主类,如果有包,得加上包名 |
–master | 指明任务提交到哪里运行 |
–deploy-mode | driver在哪里启动,默认是苦户端 |
–driver-memory | driver运行的内存 |
–name | 应用程序的名称 |
–jars | 用逗号分隔的本地 jar 包,设置后,这些 jar 将包含在 driver 和 executor 的 classpath 下 |
–driver-cores | Driver 的核数,默认是1。在 yarn 或者 standalone 下使用 |
–executor-memory | 每个 executor 的内存,默认是1G |
–total-executor-cores | 所有 executor 总共的核数。仅仅在 mesos 或者 standalone 下使用 |
–num-executors | 启动的 executor 数量。默认为2。在 yarn 下使用 |
–executor-core | 每个 executor 的核数。在yarn或者standalone下使用 |
二 提交任务
以SparkPi为例子
1 local模式
bin/spark-submit --class org.apache.spark.examples.SparkPi --master local[*] /opt/module/spark-2.2.0-bin-hadoop2.7/examples/jars/spark-examples_2.11-2.2.0.jar 100
2 集群方式提交
client和cluster的区别:以client提交,client会作为driver,那么当提交多个任务时,会使用client较多的资源。以cluster提交,client不作为dirver,而是由集群去选取一个节点作为driver。
2.11 standlone
使用spark本身的资源管理器去提交:
client:
bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://hadoop1:7077 /opt/module/spark-2.2.0-bin-hadoop2.7/examples/jars/spark-examples_2.11-2.2.0.jar 100
cluster:
bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://hadoop:6066 --deploy-mode cluster /opt/module/spark-2.2.0-bin-hadoop2.7/examples/jars/spark-examples_2.11-2.2.0.jar 100
这里提交任务的时候不会显示结果,可以到web端去查看结果
运行过程中出现warn的解决办法
查看spark的web端:master ip:8088
把提交任务时的master的端口号改成页面中的REST URL
2.12yarn集群
首先配置yarn-site-xmlwen文件,加上:
<!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是true -->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true -->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
再配置spark-env.sh:
YARN_CONF_DIR=/opt/module/hadoop-2.7.2/etc/hadoop
后面跟的是yarn的配置文件的路径
提交任务-yarn
–master yarn
–deploy-mode client/cluster
三 提交文件
在提交任务时,我们可能需要用到本地得文件,或者hdfs文件
位置 | 命令 |
---|---|
本地local | file:///后面再跟上本地路径,(file后面是三个斜杠) |
集群hdfs | hdfs://namenode的ip:端口/文件路径 |
下面是读取hdfs上的input.txt 文件。然后结果输出hdfs上的output1下。
bin/spark-submit --class sparkWordCount --master spark://hadoop1:7077 /home/hadoop/sparkword-1.0-SNAPSHOT.jar hdfs://hadoop1:9000/usr/hadoop/input/input.txt hdfs://hadoop1:9000/usr/hadpoop/output/output1
其中hdfs://hadoop1:9000 为namenode的地址,可以在core-site.xml中找到。