Spark的独立集群模式部署

spark的独立集群(standalon)模式很容易上手,文档在:Spark Standalone Mode。

本次实践的软件环境为:

Linux 4.4.0-62-generic #83-Ubuntu x86_64 GNU/Linux

java version "1.8.0_101" Java(TM) SE Runtime Environment (build 1.8.0_101-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)

Spark 2.1.0 built for Hadoop 2.7.3

按照文档的说法,在各个机器上执行./sbin/start-master.sh和./sbin/start-slave.sh 就可以启动集群了。但这样每次启动和关闭都会很麻烦,所以本文的目标是,在master上直接开启和关闭集群。这样做的根据在于spark的sbin中提供了启动和关闭集群的脚本,在conf中提供了slave文件可以标识集群机器。

第一步,让主从机可以互相无密码ssh登陆

这已经是很多分布式计算技术部署的第一步了,首先在各个机器上执行

ssh-keygen

一路默认回车,这样在当前用户的主目录下会生成.ssh文件夹。进入这个文件夹,首先把本机的公钥加入认证文件

cat id_rsa.pub >> authorized_keys

这句话的意思是将id_rsa.pub文件中的内容追加到authorized_keys文件中,一开始没有authorized_keys文件也不用担心,这个命令可以新建一个。

如果这是一台master机器,那么还需要导入所有slave机器的公钥,如果这是一台slave机器,那么还需要导入master机器的公钥。最后需要在各个机器上测试一下,需要保证本机ssh本机,master ssh slave能够畅通无阻。

第二步,配置集群中的master

在配置master中的spark之前,需要保证集群中各机器的/etc/hosts有效,各个机器能够通过机器名称ping通,因为spark的启动脚本中是通过机器名来辨识机器的。尤其要注意这个版本的hosts文件有个地方,会把机器名解析成127.0.1.1,这一条记录在master上必须删除,否则slave机器上的spark会连不上master。

接着配置slave机器的信息,

cp conf/slaves.template conf/slaves

然后修改conf/slaves文件,将slave机器的机器名一个一行写入。

最后配置一下环境变量

cp conf/spark-env.sh.template conf/spark-env.sh

在spark-env.sh里面指定使用的jdk,修改spark-env.sh中添加一行

export JAVA_HOME=


第三步,配置集群中的slave

这一步比较简单,在各个slave机器上重复第二步的最后一项,将slave机器中spark的spark-env.sh文件中JAVA_HOME变量配置好即可。在我的实践中,一开始并没有在spark-env.sh中配置JAVA_HOME,我是写在~/.bashrc中的,好像这样配置如同在hbase中一样不起作用,还是要在spark自己的脚本中设置好。

如此在master机器上,我们

./sbin/start-all.sh

就可以启动这个集群了,同样

./sbin/stop-all.sh

就能关闭集群。

最后放上一张master上的web ui截图

Spark的独立集群模式部署_第1张图片

你可能感兴趣的:(Spark的独立集群模式部署)