一. 集群规划 node01为master节点,node02,node03为worker节点
192.168.24.102 node01
192.168.24.103 node02
192.168.24.104 node03
二. 基础配置
三. 集群配置 以下操作以node01为操作节点 1. 下载解压(或者提前下载好,上传到node01节点) https://mirrors.aliyun.com/apache/spark/
tar -xvf spark-2.4.3-bin-hadoop2.7.tgz -C /opt/spark/
mv spark-2.4.3-bin-hadoop2.7 spark-2.4.3
mv sbin/start-all.sh sbin/start-spark-all.sh
mv sbin/stop-all.sh sbin/stop-spark-all.sh
2. 修改bash_profile,配置spark_home
vi ~/.bash_profile
export SPARK_HOME=/opt/spark/spark-2.4.3
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
source ~/.bash_profile #配置生效
3. 修改profile,配置scala_home scala 下载:http://www.scala-lang.org/download/ 解压到指定目录 /home/hadoop3/
vi /etc/profile
export SCALA_HOME=/home/hadoop3/scala-2.11.7
export PATH=$PATH:$SCALA_HOME/bin
source /etc/profile #配置生效
4. 修改 spark-env.sh
mv spark-env.sh.template spark-env.sh
vi /opt/spark/spark-2.4.3/conf/spark-env.sh
# 配置JAVA_HOME,一般来说,不配置也可以,但是可能会出现问题,还是配上吧
export JAVA_HOME=/usr/local/java/jdk1.8.0_73
# 一般来说,spark任务有很大可能性需要去HDFS上读取文件,所以配置上
# 如果说你的spark就读取本地文件,也不需要yarn管理,不用配
export HADOOP_CONF_DIR=/home/hadoop/apps/hadoop-2.7.4/etc/hadoop
# 设置Master的主机名
export SPARK_MASTER_HOST=node01
# 提交Application的端口,默认就是这个,万一要改呢,改这里
export SPARK_MASTER_PORT=7077
# 每一个Worker最多可以使用的cpu core的个数,我虚拟机就一个...
# 真实服务器如果有32个,你可以设置为32个
export SPARK_WORKER_CORES=1
# 每一个Worker最多可以使用的内存,我的虚拟机就2g
# 真实服务器如果有128G,你可以设置为100G
export SPARK_WORKER_MEMORY=1g
5. 配置 slaves
vi slaves
node01
node02
node03
6. 同步node01配置到node02,node03节点
scp -r bash_profile hadoop02:`pwd` #同步bash_profile并生效
scp -r profile hadoop02:`pwd` #同步profile并生效
scp -r spark-2.2.0 hadoop02:`pwd` #同步spark
7. 集群启动
sbin/start-spark-all.sh # 在master节点上启动
start-dfs.sh #Option 如果设计hdfs,spark启动前启动hdfs
8. 浏览 http://node01:8080/ 9. 搭建Spark HA 1. 配置文件增加(ZK 配置):
vi spark-env.sh
SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=node02:2181,node03:2181,node04:2181 -Dspark.deploy.zookeeper.dir=/spark-1106"
2. 修改配置文件 以node02 作为备用主节点,则修改node02的
vi spark-env.sh
SPARK_MASTER_IP = node02
集群启动:
sbin/start-spark-all.sh # node01
sbin/start-master.sh # node02
start-dfs.sh #Option 如果涉及hdfs ,则spark启动前启动
其他: 比如分别把这两个文件重命名为start-spark-all.sh和stop-spark-all.sh 原因: 如果集群中也配置HADOOP_HOME,那么在HADOOP_HOME/sbin目录下也有start-all.sh和stop-all.sh这两个文件,当你执行这两个文件,系统不知道是操作hadoop集群还是spark集群。修改后就不会冲突了,当然,不修改的话,你需要进入它们的sbin目录下执行这些文件,这肯定就不会发生冲突了。我们配置SPARK_HOME主要也是为了执行其他spark命令方便。