首先,需要知道Spark的几种运行模式:
1. Local:本地模式,不涉及分布式,用线程模拟分布式
2. standalone:独立模式,伪分布式
3. onyarn:完全分布式
下面又有两种部署模式:cluster集群模式和client客户端模式
Driver:任务提交之后开启的第一个进程。
两种模式的区别在于:客户端模式下在哪台机器提交就在哪台机器启动Driver,适用于开发完毕完全上线的情况。 而集群模式不管在哪台机器提交,都通过yarn进行分配机器启动Driver,适用于测试分布式的情况。
下面依次介绍三种模式的安装
一、本地模式
其实,将压缩包直接解压后就可以运行本地模式了,不需要任何配置,也不需要启动服务。当然,这样就需要进入到spark相应的环境目录下(就算配置了环境变量,还有一个问题就是:spark的启动命令和终止命令与hadoop是相同的,这样就会导致冲突了。可以通过给命令起别名来解决)
解压后,spark中自带了一个求π的估算值的jar包,可以使用它测试一下
./bin/spark-submit --master local --class org.apache.spark.examples.SparkPi examples/jars/spark-examples_2.11-2.1.1.jar
二、独立模式
虽然是伪分布式,但是既然有分布式三个字,肯定需要配置一些文件了。
要修改的文件:slaves和spark-env.sh
slaves:
spark-env.sh:
修改完之后,进入sbin启动服务:./start-all.sh
查看进程
还是用上面那个Pi值做测试
./spark-submit --master spark://master:7077 --class org.apache.spark.examples.SparkPi ./../examples/jars/spark-examples_2.11-2.1.1.jar
三、客户端模式
需要配置的还是slaves和spark-env.sh两个文件。
如果是多台机器,在slaves里配好(但自己搭建只有一台机器,又人为地变成了伪分布式,不过这个和上面的standalone独立模式还是不一样的)
spark-env.sh:既然是运行在yarn上的,就需要指定yarn的配置,通过hadoop的配置文件
启动yarn服务。
测试
./spark-submit --master yarn --deploy-mode client --class org.apache.spark.examples.SparkPi ./../examples/jars/spark-examples_2.11-2.1.1.jar
四、集群模式
在客户端模式配置的基础上,只需要改变提交任务时的命令,把deploy-mode改为cluster。
./spark-submit --master yarn --deploy-mode cluster --class org.apache.spark.examples.SparkPi ./../examples/jars/spark-examples_2.11-2.1.1.jar
集群模式下的运行结果并不会在控制台显示出来,而是以文件的形式输出到hadoop/logs/userlogs下(这是默认路径,可以更改)
四种运行模式的搭建都已经介绍完了,在搭建的过程中就可以发现,四者运行的时间是依次递增的。