Spark的安装跟hadoop(包括yarn)是相对独立的,即使是需要以spark-on-yarn模式运行Spark程序。Spark和hadoop的关系,不像hadoop和jdk之间的关系那样——安装hadoop之前必须配置好jdk,但安装Spark之前并不必须得先安装hadoop。
Spark和hadoop的关系,更像是你和楼下饭店的关系,当你自己做饭吃的时候,楼下饭店存不存在是与你无关的;只有当你不自己做饭了,你才需要楼下有家饭店。拿Spark来说,就是:如果只是需要以local或者standalone模式运行Spark程序,那么集群中有没有安装hadoop都无关紧要;只有当Spark程序需要以spark-on-yarn模式运行或者需要读取hdfs中的文件时,它才需要hadoop的存在。所以如果没有以spark-on-yarn模式运行spark程序的需求的话,可以不安装第2步中的hadoop环境,不过第1步的基础环境还是需要配置的。——这是我初学Spark时一直迷糊的一个点,希望这里说明清楚了。
3.1安装Scala
关于安装Spark之前要不要安装scala?其实我也不确定。有教程说不用安装,因为Spark安装包中自带scala了。也有的教程说需要先安装scala。
对于我来说,首先因为安装scala也没多难,其次后期我还要用scala来开发Spark程序,所以也就安装了。
不管怎样,安装步骤如下。
3.1.1用root用户解压scala安装包到/usr/local目录下(hadoop1上操作)
命令:
cd /data/soft
tar -xvf scala-2.11.8.tgz -C /usr/local/
3.1.2将解压后的scala目录拷贝到hadoop2和hadoop3(hadoop1上操作)
命令:
scp -r /usr/local/scala-2.11.8 root@hadoop2:/usr/local/
scp -r /usr/local/scala-2.11.8 root@hadoop3:/usr/local/
3.1.3分别在三台虚拟机上修改环境变量:
命令:
vi /etc/profile
加入如下内容
export SCALA_HOME=/usr/local/scala-2.11.8
export PATH=$PATH:$SCALA_HOME/bin
如下:
3.1.4使修改的环境变量生效
命令:
source /etc/profile
接着用which scala命令查看scala的安装目录是不是我们想要的
3.1.5测试是否安装成功
命令:
scala
或者
scala -version
3.2安装Spark(hadoop1上操作)
3.2.1解压spark安装包到/usr/local/目录下
命令:
cd /data/soft
tar -xvf spark-2.2.0-bin-hadoop2.6.tgz -C /usr/local/
3.2.2参数配置
3.2.2.1配置slaves
命令:
cd /usr/local/spark-2.2.0-bin-hadoop2.6/conf
cp slaves.template slaves
vim slaves
写入如下内容
hadoop2
hadoop3
如下:
3.2.2.2配置spark-env.sh
命令:
cp spark-env.sh.template spark-env.sh
vi spark-env.sh
在文件中加入以下内容:
export JAVA_HOME=/usr/local/jdk
export HADOOP_HOME=/usr/local/hadoop-2.6.5
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export SPARK_MASTER_HOST=hadoop1
export SPARK_MASTER_PORT=7077
如下:
注:
1) JAVA_HOME是一定要配置的
2) 配置HADOOP_HOME和HADOOP_CONF_DIR是因为,之后我需要以spark-on-yarn模式运行spark程序,配置HADOOP_CONF_DIR才能使得spark可以找到正确的hadoop环境,否则每次以spark-on-yarn模式运行spark程序时都需要手动export HADOOP_CONF_DIR=xxxxx才行。如果只想以local或standalone模式运行spark程序,则这两项可以不配置。