搭建高可用spark HA集群

实际生产中会搭建spark ha集群,本地测试的话整个单机的就行了。这里我们先介绍下单机如何配置,然后再在他基础上搭建高可用HA集群。

单机版配置 : master=weekend01 ,  works = weekend03,weekend04,weekend05

1,下载安装/spark-x.x.x-bin-hadoopx.x jar包到weekend01上。(不解释,自己弄一个)

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

  cd conf/
  mv spark-env.sh.template spark-env.sh

  vi spark-env.sh

在该配置文件中添加如下配置
export JAVA_HOME=/usr/app/jdk1.7.0_xx
export SPARK_MASTER_IP=weekend02或者你的本虚拟机ip地址
export SPARK_MASTER_PORT=7077
保存退出
重命名并修改slaves.template文件
mv slaves.template slaves
vi slaves
在该文件中添加子节点所在的位置(Worker节点)

weekend03

weekend04
weekend05
保存退出
将配置好的Spark拷贝到其他节点上
scp -r spark-xxx-bin-hadoopxx/ weekend02:/usr/app/
scp -r spark-xxx-bin-hadoopxx/ weekend03:/usr/app/

scp -r spark-xxx-bin-hadoopxx/ weekend04:/usr/app/

scp -r spark-xxx-bin-hadoopxx/ weekend05:/usr/app/

3, Spark集群配置完毕,目前是1个Master,3个Work,在weekend01上启动Spark集群
/usr/app/spark-xxx-bin-hadoop2.6/sbin/start-all.sh

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

spark HA配置 : master=weekend01,weekend02,  works = weekend03,weekend04,weekend05

Spark集群安装完毕,但是有一个很大的问题,那就是Master节点存在单点故障,要解决此问题,就要借助zookeeper,并且启动至少两个Master节点来实现高可靠,配置方式比较简单:
Spark集群规划:weekend01,weekend02是Master;weekend03weekend04weekend05是Worker

安装配置zk集群,并启动zk集群(之前博客文档有详解,自行查看并配置 ,不解释)

我们将zk集群安装在了 weekend01,weekend02,weekend03 上面

停止spark所有服务,在weekend01上修改配置文件spark-env.sh,在该配置文件中删掉SPARK_MASTER_IP并添加如下配置

export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=weekend01,weekend02,weekend03 -Dspark.deploy.zookeeper.dir=/spark"

1.在weekend01节点上修改slaves配置文件内容指定worker节点

将修改完后的conf文件夹复制到其他机器上面

scp -r conf/ weekend02:/usr/app/spark-xxx-hadoopx.x/conf

scp -r conf/ weekend03:/usr/app/spark-xxx-hadoopx.x/conf

scp -r conf/ weekend04:/usr/app/spark-xxx-hadoopx.x/conf

scp -r conf/ weekend05:/usr/app/spark-xxx-hadoopx.x/conf

Spark集群配置完毕,目前是1个Master,3个Work,在weekend01上启动Spark集群
/usr/app/spark-xxx-bin-hadoopxx/sbin/start-all.sh

然后在weekend02上执行sbin/start-master.sh启动第二个Master

启动后执行jps命令,主节点上有Master进程,其他子节点上有Work进行,登录Spark管理界面查看集群状态(主节点):http://weekend01:8080/ 主master alive(你在那个主机启动star-all.sh命令,那么该主机即为master(alive)

http://weekend02:8080/ 辅master standby

整完后自己可以测一下spark ha集群的高可用性,手动kill -9 master(主)进程号, 看看过一会另一台standby master是否会自动转变为 alive master 

写一个spark程序
/usr/app/spark-1.6.1-bin-hadoop2.6/bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://weekend02:7077

--executor-memory 1G\

--total-executor-cores2 \

/usr/app/spark-1.6.1-bin-hadoop2.6/lib/spark-examples-1.6.1-hadoop2.6.0.jar 100

该算法是利用蒙特·卡罗算法求PI

在submit命令下 指定类路径,指定master地址,可选自定义指定内存及处理核数量,指定jar包所在位置。 执行采样次数100,越大越准确

启动spark shell
/usr/app/spark-1.5.2-bin-hadoop2.6/bin/spark-shell \
--master spark://weekend02:7077 \
--executor-memory 2g \
--total-executor-cores 2
参数说明:
--master spark://node1.itcast.cn:7077 指定Master的地址
--executor-memory 2g 指定每个worker可用内存为2G
--total-executor-cores 2 指定整个集群使用的cup核数为2个
注意:
如果启动spark shell时没有指定master地址,但是也可以正常启动spark shell和执行spark shell中的程序,其实是启动了spark的local模式,该模式仅在本机启动一个进程,没有与集群建立联系。

Spark Shell中已经默认将SparkContext类初始化为对象sc。用户代码如果需要用到,则直接应用sc即可

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值