搭建Spark高可用集群(2)

[root@hdp-01 ~]# wget https://d3kbcqa49mib13.cloudfront.net/spark-2.2.0-bin-hadoop2.7.tgz
[root@hdp-01 ~]# tar -zxvf spark-2.2.0-bin-hadoop2.7.tgz -C apps/
[root@hdp-01 apps]# mv spark-2.2.0-bin-hadoop2.7 /spark

进入conf目录并重命名并修改spark-env.sh.template文件

[root@hdp-01 conf]# mv spark-env.sh.template spark-env.sh [root@hdp-01 conf]# vi spark-env.sh

在该配置文件中添加如下配置

export JAVA_HOME=/root/apps/jdk1.8.0_152 export SPARK_MASTER_IP=hdp-01 export SPARK_MASTER_PORT=7077

重命名并修改slaves.template文件

[root@hdp-01 conf]# mv slaves.template slaves [root@hdp-01 conf]# vi slaves

在该文件中添加子节点所在的位置(Worker节点)

hdp-02 hdp-03
hdp-04

将配置好的Spark拷贝到其他节点上

[root@hdp-01 apps]# scp -r spark/ hdp-02:$PWD [root@hdp-01 apps]# scp -r spark/ hdp-03:$PWD
[root@hdp-01 apps]# scp -r spark/ hdp-04:$PWD

Spark集群配置完毕,目前是1个Master,3个Work,在hdp-01上启动Spark集群

[root@hdp-01 spark]# sbin/start-all.sh

启动后执行jps命令,主节点上有Master进程,其他子节点上有Work进程,登录Spark管理界面查看集群状态(主节点): :8080/

搭建Spark高可用集群

到此为止,Spark集群安装完毕,但是有一个很大的问题,那就是Master节点存在单点故障,要解决此问题,就要借助zookeeper,并且启动至少两个Master节点来实现高可靠

配置Spark集群之前一定要把zookper集群启动

Spark集群规划:hdp-01,hdp-02是Master;hdp-03,hdp-04是Worker 安装配置zk集群,并启动zk集群 停止spark所有服务

集群中Master地址是不固定的 所以必须把export SPARK_MASTER_IP=hdp-01 注释掉

[root@hdp-01 sbin]# ./stop-all.sh [root@hdp-01 conf]# vi spark-env.sh export JAVA_HOME=/root/apps/jdk1.8.0_152 #export SPARK_MASTER_IP=hdp-01 export SPARK_MASTER_PORT=7077 export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=hdp-01:2181,hdp-02:2181,hdp-03:2181 -Dspark.deploy.zookeeper.dir=/spark" [root@hdp-01 conf]#scp -r spark-env.sh/ hdp-02:$PWD [root@hdp-01 conf]#scp -r spark-env.sh/ hdp-03:$PWD [root@hdp-01 conf]#scp -r spark-env.sh/ hdp-04:$PWD [root@hdp-01 sbin]# ./start-all.sh
// 启动hdp-02上的master,如果hdp-01宕机 hdp-02会有worker变为master
[root@hdp-02 spark]# sbin/start-master.sh

测试集群部署

打开浏览器  输入        :8080/  :8080/

搭建Spark高可用集群

搭建Spark高可用集群

 standby:备用状态

现在停掉hdp-01上的Master

[root@hdp-01 sbin]# jps 35473 Master 1682 NameNode 15109 NodeManager 35575 Jps 2200 SecondaryNameNode 14984 ResourceManager 14636 QuorumPeerMain 1839 DataNode [root@hdp-01 sbin]# kill -9 35473

搭建Spark高可用集群

hdp-02接替hdp-01工作 从Master变为Worker  如果现在再启动 hdp-01 hdp-01为从节点 不会变为主节点 

如果hdp-02发生故障后 hdp-01就会自动变成Master

Spark Shell

spark-shell是Spark自带的交互式Shell程序,方便用户进行交互式编程,用户可以在该命令行下用scala编写spark程序。

启动spark shell

[root@hdp-01 spark]# bin/spark-shell --master spark:/hdp-01:7077 --executor-memory 1g --total-executor-cores 1

搭建Spark高可用集群

出现此logo证明spark shell 启动成功

集群模式下启动spark shell

[root@hdp-01 spark]# bin/spark-shell --master spark://hdp-01:7077,hdp-04:7077

注意: 如果启动spark shell时没有指定master地址,但是也可以正常启动spark shell和执行spark shell中的程序,其实是启动了spark的local模式,该模式仅在本机启动一个进程,没有与集群建立联系。 Spark Shell中已经默认将SparkContext类初始化为对象sc。用户代码如果需要用到,则直接应用sc即可

Spark控制台有一个Running Applications 也就是刚刚启动的spark shell

 执行Spark程序

Spark程序求圆周率

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/6ed7f7a3ae4dd35aa35d683e4548315c.html