Spark集群至少需要有JDK、Hadoop、Scala、Spark
依赖组件
- java8
- hadoop2.7
- scala2.11
- spark-2.3.3(待安装)
安装
目标:hadoop1、2、3、4四台机器上安装分布式spark集群。
参考:https://blog.youkuaiyun.com/sjmz30071360/article/details/82561867
安装java及hadoop略hadoop安装。
1.安装scala
下载地址:https://www.scala-lang.org/download/2.11.12.html
# 解压
tar -zxvf scala-2.11.12.tgz -C /tools/
# 软链
ln -s /tools/scala-2.11.12 /tools/scala-current
环境变量(hadoop
组件的环境变量在hadoop目录.bash_profile
配置,公共工具配在/etc/profile
)
# vim /etc/profile
export SCALA_HOME=/tools/scala-current
export PATH=$PATH:$SCALA_HOME/bin
# source /etc/profile
上述所有节点机器同等。
# 分发至各机器
scp -r /tools/scala-2.11.12 hadoop4:/tools/
# 其他各机器执行
ln -s /tools/scala-2.11.12 /tools/scala-current
# 其他机器环境变量的配置(略)
source /etc/profile
2.安装spark
下载saprk参见官网 http://spark.apache.org/downloads.html
解压、软链
tar -zxvf spark-2.3.3-bin-hadoop2.7.tgz
[hadoop@hadoop1 ~]$ ln -s bigdata/spark-2.3.3-bin-hadoop2.7 spark-current
环境变量
# vim ~/.bash_profile
export SPARK_HOME=/home/hadoop/spark-current
export PATH=$PATH:$SPARK_HOME/bin
# 因为$SPARK_HOME/sbin目录下一些文件名和$HADOOP_HOME/bin目录下一些文件名相同,为了避免文件名冲突,这里不添加$SPARK_HOME/sbin目录
# source ~/.bash_profile
3.配置conf目录下文件
[hadoop@hadoop1 conf]$ pwd
/home/hadoop/spark-current/conf
[hadoop@hadoop1 conf]$ cp spark-env.sh.template spark-env.sh
[hadoop@hadoop1 conf]$ cp slaves.template slaves
spark-env.sh
# vim spark-env.sh
JAVA_HOME=/home/hadoop/java-current
HADOOP_HOME=/home/hadoop/hadoop-current
HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
SCALA_HOME=/tools/scala-current
SPARK_HOME=/home/hadoop/spark-current
SPARK_MASTER_IP=hadoop1
SPARK_EXECUTOR_MEMORY=2G
slaves
# vim slaves
hadoop1
hadoop2
hadoop3
分发:将spark安装文件夹复制到其他机器并设环境变量。
# 以分发到hadoop2为例,3、4同理
[hadoop@hadoop1 bigdata]$ scp -r spark-2.3.3-bin-hadoop2.7 hadoop@hadoop2:~/bigdata/
[hadoop@hadoop2 ~]$ ln -s ~/bigdata/spark-2.3.3-bin-hadoop2.7 ~/spark-current
# 环境变量(同上)vim .bash_profile
4.启动spark集群
因为Spark是依赖于Hadoop提供的分布式文件系统的,所以在启动Spark之前,先确保Hadoop在正常运行。hadoop安装启动
在Hadoop正常运行的情况下,在master(Hadoop的NameNode,即Spark的master节点)上
$SPARK_HOME/sbin
目录下执行:
(前面必须有 ./
,否则会执行$HADOOP_HOME/bin
下的start-all.sh
脚本)
[hadoop@hadoop1 ~]$ cd $SPARK_HOME
[hadoop@hadoop1 spark-current]$ ./sbin/start-all.sh
查看进程发现hadoop1机器有master进程,2、3、4机器有worker
[hadoop@hadoop1 spark-current]$ jps -l
5074 sun.tools.jps.Jps
3301 org.apache.hadoop.hdfs.server.namenode.NameNode
3736 org.apache.hadoop.yarn.server.resourcemanager.ResourceManager
4808 org.apache.spark.deploy.master.Master
[hadoop@hadoop2 ~]$ jps
12676 QuorumPeerMain
27397 Worker
11526 DataNode
18558 HRegionServer
11695 NodeManager
27583 Jps
其他测试参考:https://blog.youkuaiyun.com/sjmz30071360/article/details/82561867