实际生产中会搭建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/
weekend04:/usr/app/
scp -r spark-xxx-bin-hadoopxx/
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集群(之前博客文档有详解,自行查看并配置 ,不解释)
weekend03 上面
停止spark所有服务,修改配置文件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.在weekend02节点上修改slaves配置文件内容指定worker节点
2.在weekend02上执行sbin/start-all.sh脚本,然后在weekend01上执行sbin/start-master.sh启动第二个Master
将修改完后的conf文件夹复制到其他机器上面
scp -r conf/ weekend01:/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,在weekend02上启动Spark集群
/usr/app/spark-xxx-bin-hadoopxx/sbin/start-all.sh
启动后执行jps命令,主节点上有Master进程,其他子节点上有Work进行,登录Spark管理界面查看集群状态(主节点):http://weekend02:8080/ 主master
http://weekend01:8080/ 辅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即可
登录 | 立即注册