实际生产中会搭建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;weekend03,weekend04,weekend05是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即可

 

 

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信