Spark 集群部署

本文将接受 Spark 集群的部署方式,包括无 HA、Spark Standalone HA 和 基于 ZooKeeper 的 HA 三种。

环境:CentOS6.6 、 JDK1.7.0_80 、 关闭防火墙 、 配置好 hosts 和 SSH 免密码、Spark1.5.0

一. 无 HA 方式

1. 主机名与角色的对应关系:

node1.zhch    Master

node2.zhch    Slave

node3.zhch    Slave

2. 解压 Spark 部署包(可以从官网直接下载部署包,也可从官网下载源码再编译出部署包)

[[email protected] program]$ tar -zxf spark-1.5.0-bin-2.5.2.tgz

3. 修改配置文件

[[email protected] program]$ cd spark-1.5.0-bin-2.5.2/conf/
[[email protected] conf]$ cp slaves.template slaves
[[email protected] conf]$ vim slaves
node2.zhch
node3.zhch

[[email protected] conf]$ cp spark-env.sh.template spark-env.sh
[[email protected] conf]$ vim spark-env.sh
export JAVA_HOME=/usr/lib/java/jdk1.7.0_80
export SPARK_MASTER_IP=node1.zhch
export SPARK_MASTER_PORT=7077
export SPARK_WORKER_CORES=1
export SPARK_WORKER_INSTANCES=1
export SPARK_WORKER_MEMORY=1g

说明:

SPARK_MASTER_IP :Master节点地址

SPARK_MASTER_PORT :Master端口号

SPARK_WORKER_CORES :每个worker的核心数,一般设置成主机的CPU核心数

SPARK_WORKER_INSTANCES :每台主机上运行的worker数量

SPARK_WORKER_MEMORY :Spark作业允许使用的内存总量(每个作业自己的内存空间由属性 spark.executor.memory 决定)

4. 分发 Spark

[[email protected] program]$ scp -rp spark-1.5.0-bin-2.5.2 node2.zhch:~/program/

[[email protected] program]$ scp -rp spark-1.5.0-bin-2.5.2 node3.zhch:~/program/

5. 启动与停止命令

./sbin/start-master.sh  - 启动 Master

./sbin/start-slaves.sh  - 启动所有的 Slave

./sbin/start-slave.sh spark://IP:PORT  - 启动本机的 Slave

./sbin/start-all.sh  - 启动所有的 Master 和 Slave

./sbin/stop-master.sh  - 停止 Master

./sbin/stop-slaves.sh  - 停止所有的 Slave

./sbin/stop-slave.sh  - 停止本机的 Slave

./sbin/stop-all.sh  - 停止所有的 Master 和 Slave

./bin/spark-shell --master spark://IP:PORT   - 运行 Spark Shell

./bin/spark-submit --class packageName.MainClass --master spark://IP:PORT path/jarName.jar  - 提交作业

二. Spark Standalone HA

只需要在无 HA 的基础上修改 conf/spark-env.sh 文件,添加如下一行即可:

export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=FILESYSTEM -Dspark.deploy.recoveryDirectory=/home/yyl/program/spark-1.5.0-bin-2.5.2/recovery"

说明:

spark.deploy.recoveryMode   -- FILESYSTEM,表示开启基于文件系统的单节点恢复模式 ,默认为 NONE

spark.deploy.recoveryDirectory   -- Spark 保存恢复状态的目录

三. 基于 ZooKeeper 的 HA

1. 主机名与角色的对应关系:

node1.zhch    Master、ZooKeeper

node2.zhch    Master、ZooKeeper

node3.zhch    Slave、ZooKeeper

node4.zhch    Slave

node5.zhch    Slave

2.
安装 ZooKeeper 集群

3. 配置

与无 HA 模式相比,conf/slaves 文件中仍然是配置所有的 Slave 节点地址;不同的是 conf/spark-env.sh 中 SPARK_MASTER_IP 不用配置,但要增加 SPARK_DAEMON_JAVA_OPTS 配置,内容如下:

export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=node1.zhch:2181,node2.zhch:2181,node3.zhch:2181 -Dspark.deploy.zookeeper.dir=/spark"

说明:

spark.deploy.recoveryMode  -- ZOOKEEPER,表示开启基于 ZooKeeper 的 HA

park.deploy.zookeeper.url  -- ZooKeeper URL

spark.deploy.zookeeper.dir  -- ZooKeeper 保存恢复状态的目录,缺省为 /spark

配置好 HA 后,由于 master 有多个,在用到 spark url 的地方列出所有的 master,例如:

./bin/spark-shell --master spark://host1:port1,host2:port2,host3:port3

5. 验证 HA

首先启动 Zookeeper 集群;然后在 node1 节点上运行 sbin/start-all.sh 命令启动 Spark 集群。最后使用 jps 命令查看,只在 node1 节点上发现了 Master 进程,而 node2 节点上没有,这时需要在 node2 节点上使用 sbin/start-master.sh 命令来启动备 Master 进程,这样便实现了 Master HA

kill 掉 node1 节点上的 master 进程后:

时间: 2024-10-17 06:19:19

Spark 集群部署的相关文章

Hadoop记录-Apache hadoop+spark集群部署

Hadoop+Spark集群部署指南 (多节点文件分发.集群操作建议salt/ansible) 1.集群规划节点名称 主机名 IP地址 操作系统Master centos1 192.168.0.1 CentOS 7.2Slave1 centos2 192.168.0.2 CentOS 7.2Slave2 centos2 192.168.0.3 Centos 7.22.基础环境配置2.1 hostname配置1)修改主机名在192.168.0.1 root用户下执行:hostnamectl set

Spark集群部署以及应用

一.环境概述: 192.168.1.2 master 192.168.1.3 worker 192.168.1.4 worker 二.Scala环境设置 [[email protected] ~]# tar zxvf scala-2.10.4.tgz -C /home/hadoop/ [[email protected] ~]# cd /home/hadoop/ [[email protected] hadoop]# ln -s scala-2.10.4 scala [[email protec

spark集群部署错误告警随记

1,Error: Could not find or load main class namenode-format 这个是错误的把hadoop namenode -format 命令写成hadoop namenode-format 2,  WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

使用docker安装部署Spark集群来训练CNN(含Python实例)

使用docker安装部署Spark集群来训练CNN(含Python实例) 本博客仅为作者记录笔记之用,不免有很多细节不对之处. 还望各位看官能够见谅,欢迎批评指正. 博客虽水,然亦博主之苦劳也. 如需转载,请附上本文链接,不甚感激! http://blog.csdn.net/cyh_24/article/details/49683221 实验室有4台神服务器,每台有8个tesla-GPU,然而平时做实验都只使用了其中的一个GPU,实在暴遣天物! 于是想用spark来把这些GPU都利用起来.听闻d

【Spark01】SparkSubmit兼谈Spark集群管理和部署模式

关于Cluster Manager和Deploy Mode的组合在SparkSubmit.scala的createLaunchEnv中有比较详细的逻辑. Cluster Manager基本上有Standalone,YARN和Mesos三种情况,说明Cluster Manager用来指明集群的资源管理器.这就是说不管是Client还是Cluster部署方式(deployMode的两种可能),都会使用它们做集 群管理器,也就是说Client也是一种集群部署方式??? /** * @return a

在Docker中从头部署自己的Spark集群

由于自己的电脑配置普普通通,在VM虚拟机中搭建的集群规模也就是6个节点左右,再多就会卡的不行 碰巧接触了Docker这种轻量级的容器虚拟化技术,理论上在普通PC机上搭建的集群规模可以达到很高(具体能有多少个也没有实际测试过) 于是就准备在Docker上搭建Spark集群 由于是Docker新手,在操作过程中遇到了不少麻烦 刚开始在网上找的资料都是直接从DockerHub上拉取别人已经建好的镜像使用 问题多多,下载速度慢,下载异常,运行异常,配置异常等等等等... 好不容易下载了一个可以用的镜像,

spark集群与spark HA高可用快速部署 spark研习第一季

1.spark 部署 标签: spark 0 apache spark项目架构 spark SQL -- spark streaming -- MLlib -- GraphX 0.1 hadoop快速搭建,主要利用hdfs存储框架 下载hadoop-2.6.0,解压,到etc/hadoop/目录下 0.2 快速配置文件 cat core-site.xml <configuration> <property> <name>fs.defaultFS</name>

将java开发的wordcount程序部署到spark集群上运行

1 package cn.spark.study.core; 2 3 import java.util.Arrays; 4 5 import org.apache.spark.SparkConf; 6 import org.apache.spark.api.java.JavaPairRDD; 7 import org.apache.spark.api.java.JavaRDD; 8 import org.apache.spark.api.java.JavaSparkContext; 9 impo

Hadoop2.2集群安装配置-Spark集群安装部署

配置安装Hadoop2.2.0 部署spark 1.0的流程 一.环境描写叙述 本实验在一台Windows7-64下安装Vmware.在Vmware里安装两虚拟机分别例如以下 主机名spark1(192.168.232.147),RHEL6.2-64 操作系统,usernameRoot 从机名spark2(192.168.232.152).RHEL6.2-64 操作系统,usernameRoot 二.环境准备 1.防火墙禁用.SSH服务设置为开机启动.并关闭SELINUX 2.改动hosts文件