基于文件系统的单点恢复
此模式下虽然可以恢复,但需要人工参与。因此,适合对高可用要求不高的场景,如果离线分析。
当Master挂掉后,手工启动Master仍然能继续执行原来的任务。当然,也可以继续提交任务。
主机规划
HDP125作为Master节点,其余主机作为Worker节点。
关闭iptables
关闭正在运行的iptbables防火墙:
service iptables stop
关闭开机自动启动iptables:
chkconfig iptables off
关闭SElinux
关闭自在运行的SElinux:
setenforce 0
修改配置文件,关闭开机自己启动SElinux:
vi /etc/selinux/config
SELINUX=disabled
配置主机名和映射:
注意:主机名只能用英文字母、数字、“-”。不能使用下划线“_”,会出现问题。
映射
Spark通过主机名来进行互相访问,通过修改/etc/hosts文件可配置本地主机名映射关系,在hosts文件中添加计算机的名称和IP的对应关系,如在本机中添加master的主机(假设IP为172.16.219.125),在末尾添加内容为: 172.16.219.125 HDP125
所有主机都在/etc/hosts添加:
172.16.219.125 HDP125
172.16.219.126 HDP126
172.16.219.127 HDP127
172.16.219.128 HDP128
修改主机名
修改/etc/sysconfig/network文件,将主机名改为master。
HOSTNAME=master
操作系统启动的时候,会读取该文件并设置主机名。因此,修改后不会立即生效。只有当系统重启后,主机名便会生效。
也需要运行如下命令设置主机名,无须重启:
hostname master
在所有主机上执行上面两步,并把master替换成相应主机名。
用户:
在所有主机上添加用户:
groupadd spark
useradd spark -g spark
SSH无密码登录
Master到Worker节点需要配置SSH无密码登录。
在Master生成公私钥对:
su spark
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
在其它主机上创建~/.ssh文件夹:
su spark
mkdir ~/.ssh
chmod 700 ~/.ssh
把公钥~/.ssh/dsa.pub发送到其它主机:
scp ~/.ssh/dsa.pub spark@HDPXXX:~/.ssh/id_dsa.pub
测试是否成功:
ssh HDPxxx
安装Java的JDK
解压:
tar -zxvf jdk-7u51-linux-x64.tar.gz -C /opt
ln -s /opt/jdk1.7.0_51 /opt/jdk
配置环境变量:
#JDK setting
export JAVA_HOME=/opt/jdk
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
安装配置Spark
解压与权限
tar -zxvf spark-1.1.0-bin-2.4.0.2.1.4.0-632.tgz -C /opt
ln -s /opt/spark-1.1.0-bin-2.4.0.2.1.4.0-632 /opt/spark
chown -R spark:spark /opt/spark*
配置worker
vi conf/slaves
HDP125
HDP126
HDP127
注:每行一个Worker
配置spark-env.sh
cp conf/spark-env.sh.template conf/spark-env.sh
vi conf/spark-env.sh
export JAVA_HOME=/opt/jdk
export SPARK_MASTER_IP=ES122
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=FILESYSTEM -Dspark.deploy.recoveryDirectory=/opt/spark/recovery"
可以为Master和Worker的CPU核心和内存大小进行定制。
- SPARK_MASTER_IP:设置Master的IP
- SPARK_DAEMON_MEMORY:设置Master和Worker守护进程内存大小
- SPARK_WORKER_CORES:设置Spark应用在Worker中可以使用的CPU核数
- SPARK_WORKER_MEMORY:设置Spark应用在Worker中可以使用的内存总量
- SPARK_MASTER_WEBUI_PORT:设置Master的Web UI端口
- SPARK_WORKER_WEBUI_PORT:设置Worker的Web UI端口
更多配置参考:Spark Standalone配置属性
SPARK_DAEMON_JAVA_OPTS配置项:
System property | Meaning |
---|---|
spark.deploy.recoveryMode | 设成FILESYSTEM来开启单节点恢复模式 ,(默认值:NONE) |
spark.deploy.recoveryDirectory | Spark存储恢复状态的目录,Master能够访问 |
配置SPARK_HOME环境变量
vi /etc/profile
#spark
export SPARK_HOME=/opt/spark
export PATH=$SPARK_HOME/bin:$PATH
source /etc/profile
启动
启动集群
在master上
su spark
cd /opt/spark
sbin/start-all.sh
不用sbin脚本的方式
启动Worker
./bin/spark-class org.apache.spark.deploy.worker.Worker spark://IP:PORT
测试
提交Application:
bin/spark-submit --class org.hansight.spark.examples.SogouQTotal --master spark://HDP125:7077 /opt/examples-0.0.1-SNAPSHOT.jar