spark中自带了很多例子,他们存放在examples/jars目录下,今天我们就提交一个蒙特.卡罗拉算法求PI的例子:
向spark集群提交程序的命令是spark-submit,后面我们要制定参数
/usr/local/spark-2.1.0-bin-hadoop2.6/bin/spark-submit --master spark://node1.edu360.cn:7077 --class org.apache.spark.examples.SparkPi --executor-memory 1G --total-executor-cores 2 /usr/local/spark-2.1.0-bin-hadoop2.6/lib/spark-examples-2.1.0-hadoop2.6.0.jar 100
–master 是指定master的地址
spark:// 是spark RPC通信的协议,后面跟的是master节点的IP和端口,如果有多个master,每两个master之间要用逗号隔开。
–class 是指定要执行程序的main方法的名字
–executor-memory 指定每个进程分配多少内存 //可以不指定
–total-executor-cores 指定一共给进程分配多少核数 //可以不指定
后面跟的是jar包,以及参数,参数表示迭代的次数
附加:
在执行程序时,我们执行jps命令,会发现,在提交任务的Worker节点上多了两个进程,一个是SparkSubmit,一个是CoarseGrainedExecutorBackend。其他Worker节点上多了一个CoarseGrainedExecutorBackend进程。
这个CoarseGrainedExecutorBackend叫做执行器,他是真正执行计算任务的进程。在执行完计算任务后,该进程会被自动停掉,释放资源。