一、下载Spark安装包
1、从官网下载
http://spark.apache.org/downloads.html
2、从微软的镜像站下载
http://mirrors.hust.edu.cn/apache/
3、从清华的镜像站下载
https://mirrors.tuna.tsinghua.edu.cn/apache/
二、安装基础
1、Java8安装成功
2、zookeeper安装成功
3、hadoop2.7.5 HA安装成功
4、Scala安装成功(不安装进程也可以启动)
三、Spark安装过程
1、上传并解压缩
[[email protected] ~]$ ls apps data exam inithive.conf movie spark-2.3.0-bin-hadoop2.7.tgz udf.jar cookies data.txt executions json.txt projects student zookeeper.out course emp hive.sql log sougou temp [[email protected] ~]$ tar -zxvf spark-2.3.0-bin-hadoop2.7.tgz -C apps/
2、为安装包创建一个软连接
[[email protected] ~]$ cd apps/ [[email protected] apps]$ ls hadoop-2.7.5 hbase-1.2.6 spark-2.3.0-bin-hadoop2.7 zookeeper-3.4.10 zookeeper.out [[email protected] apps]$ ln -s spark-2.3.0-bin-hadoop2.7/ spark [[email protected] apps]$ ll 总用量 36 drwxr-xr-x. 10 hadoop hadoop 4096 3月 23 20:29 hadoop-2.7.5 drwxrwxr-x. 7 hadoop hadoop 4096 3月 29 13:15 hbase-1.2.6 lrwxrwxrwx. 1 hadoop hadoop 26 4月 20 13:48 spark -> spark-2.3.0-bin-hadoop2.7/ drwxr-xr-x. 13 hadoop hadoop 4096 2月 23 03:42 spark-2.3.0-bin-hadoop2.7 drwxr-xr-x. 10 hadoop hadoop 4096 3月 23 2017 zookeeper-3.4.10 -rw-rw-r--. 1 hadoop hadoop 17559 3月 29 13:37 zookeeper.out [[email protected] apps]$
3、进入spark/conf修改配置文件
(1)进入配置文件所在目录
[[email protected] ~]$ cd apps/spark/conf/ [[email protected] conf]$ ll 总用量 36 -rw-r--r--. 1 hadoop hadoop 996 2月 23 03:42 docker.properties.template -rw-r--r--. 1 hadoop hadoop 1105 2月 23 03:42 fairscheduler.xml.template -rw-r--r--. 1 hadoop hadoop 2025 2月 23 03:42 log4j.properties.template -rw-r--r--. 1 hadoop hadoop 7801 2月 23 03:42 metrics.properties.template -rw-r--r--. 1 hadoop hadoop 865 2月 23 03:42 slaves.template -rw-r--r--. 1 hadoop hadoop 1292 2月 23 03:42 spark-defaults.conf.template -rwxr-xr-x. 1 hadoop hadoop 4221 2月 23 03:42 spark-env.sh.template [[email protected] conf]$
(2)复制spark-env.sh.template并重命名为spark-env.sh,并在文件最后添加配置内容
[[email protected] conf]$ cp spark-env.sh.template spark-env.sh [[email protected] conf]$ vi spark-env.sh
export JAVA_HOME=/usr/local/jdk1.8.0_73 #export SCALA_HOME=/usr/share/scala export HADOOP_HOME=/home/hadoop/apps/hadoop-2.7.5 export HADOOP_CONF_DIR=/home/hadoop/apps/hadoop-2.7.5/etc/hadoop export SPARK_LOCAL_IP=192.168.123.102 export SPARK_WORKER_MEMORY=500m export SPARK_WORKER_CORES=1 export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=hadoop1:2181,hadoop2:2181,hadoop3:2181,hadoop4:2181 -Dspark.deploy.zookeeper.dir=/spark"
注:
#export SPARK_MASTER_IP=hadoop1 这个配置要注释掉。
集群搭建时配置的spark参数可能和现在的不一样,主要是考虑个人电脑配置问题,如果memory配置太大,机器运行很慢。
说明:
-Dspark.deploy.recoveryMode=ZOOKEEPER #说明整个集群状态是通过zookeeper来维护的,整个集群状态的恢复也是通过zookeeper来维护的。就是说用zookeeper做了spark的HA配置,Master(Active)挂掉的话,Master(standby)要想变成Master(Active)的话,Master(Standby)就要像zookeeper读取整个集群状态信息,然后进行恢复所有Worker和Driver的状态信息,和所有的Application状态信息;
-Dspark.deploy.zookeeper.url=hadoop1:2181,hadoop2:2181,hadoop3:2181,hadoop4:2181#将所有配置了zookeeper,并且在这台机器上有可能做master(Active)的机器都配置进来;(我用了4台,就配置了4台)-Dspark.deploy.zookeeper.dir=/spark
这里的dir和zookeeper配置文件zoo.cfg中的dataDir的区别???
-Dspark.deploy.zookeeper.dir是保存spark的元数据,保存了spark的作业运行状态;
zookeeper会保存spark集群的所有的状态信息,包括所有的Workers信息,所有的Applactions信息,所有的Driver信息,如果集群
(3)复制slaves.template成slaves
[[email protected] conf]$ cp slaves.template slaves [[email protected] conf]$ vi slaves
添加如下内容
hadoop1 hadoop2 hadoop3 hadoop4
(4)将安装包分发给其他节点
[[email protected]p1 ~]$ cd apps/ [[email protected] apps]$ scp -r spark-2.3.0-bin-hadoop2.7/ hadoop2:$PWD [[email protected] apps]$ scp -r spark-2.3.0-bin-hadoop2.7/ hadoop3:$PWD [[email protected] apps]$ scp -r spark-2.3.0-bin-hadoop2.7/ hadoop4:$PWD
创建软连接
[[email protected] ~]$ cd apps/ [[email protected] apps]$ ls hadoop-2.7.5 hbase-1.2.6 spark-2.3.0-bin-hadoop2.7 zookeeper-3.4.10 [[email protected] apps]$ ln -s spark-2.3.0-bin-hadoop2.7/ spark [[email protected] apps]$ ll 总用量 16 drwxr-xr-x 10 hadoop hadoop 4096 3月 23 20:29 hadoop-2.7.5 drwxrwxr-x 7 hadoop hadoop 4096 3月 29 13:15 hbase-1.2.6 lrwxrwxrwx 1 hadoop hadoop 26 4月 20 19:26 spark -> spark-2.3.0-bin-hadoop2.7/ drwxr-xr-x 13 hadoop hadoop 4096 4月 20 19:24 spark-2.3.0-bin-hadoop2.7 drwxr-xr-x 10 hadoop hadoop 4096 3月 21 19:31 zookeeper-3.4.10 [[email protected] apps]$
4、配置环境变量
所有节点均要配置
[[email protected] spark]$ vi ~/.bashrc
#Spark export SPARK_HOME=/home/hadoop/apps/spark export PATH=$PATH:$SPARK_HOME/bin
保存并使其立即生效
[[email protected] spark]$ source ~/.bashrc
四、启动
1、先启动zookeeper集群
所有节点均要执行
[[email protected] ~]$ zkServer.sh start ZooKeeper JMX enabled by default Using config: /home/hadoop/apps/zookeeper-3.4.10/bin/../conf/zoo.cfg Starting zookeeper ... STARTED [[email protected] ~]$ zkServer.sh status ZooKeeper JMX enabled by default Using config: /home/hadoop/apps/zookeeper-3.4.10/bin/../conf/zoo.cfg Mode: follower [[email protected] ~]$
2、在启动HDFS集群
任意一个节点执行即可
[[email protected] ~]$ start-dfs.sh
3、在启动Spark集群
在一个节点上执行
[[email protected] ~]$ cd apps/spark/sbin/ [[email protected] sbin]$ start-all.sh
4、查看进程
5、问题
查看进程发现spark集群只有hadoop1成功启动了Master进程,其他3个节点均没有启动成功,需要手动启动,进入到/home/hadoop/apps/spark/sbin目录下执行以下命令,3个节点都要执行
[[email protected] ~]$ cd ~/apps/spark/sbin/ [[email protected] sbin]$ start-master.sh
6、执行之后再次查看进程
Master进程和Worker进程都以启动成功
五、验证
1、查看Web界面Master状态
hadoop1是ALIVE状态,hadoop2、hadoop3和hadoop4均是STANDBY状态
hadoop1节点
hadoop2节点
hadoop3
hadoop4
2、验证HA的高可用
手动干掉hadoop1上面的Master进程,观察是否会自动进行切换
干掉hadoop1上的Master进程之后,再次查看web界面
hadoo1节点,由于Master进程被干掉,所以界面无法访问
hadoop2节点,Master被干掉之后,hadoop2节点上的Master成功篡位成功,成为ALIVE状态
hadoop3节点
hadoop4节点
原文地址:https://www.cnblogs.com/qingyunzong/p/8888080.html