在前一篇文章中,我们已经搭建好了Hadoop的群集(http://www.linuxdiyf.com/linux/31383.html),接下来,我们就是需要基于这个Hadoop群集,搭建Spark的群集。由于前面已经做了大量的工作,所以接下来搭建Spark会简单很多。
首先打开三个虚拟机,现在我们需要安装Scala,因为Spark是基于Scala开发的,所以需要安装Scala。在Ubuntu下安装Scala很简单,我们只需要运行
sudo apt-get install scala
就可以安装Scala了。
安装完成后运行scala -version可以看到安装的Scala的版本,我现在2.11版,安装目录是在/usr/share/scala-2.11。
接下来下载Spark。到官方网站,找到最新版的Spark的下载地址,选择Hadoop版本,
http://spark.apache.org/downloads.html
wget http://spark下载地址
当下载完毕后解压文件:
tar xvf spark-2.0.2-bin-hadoop2.7.tgz
接下来我们需要将解压的文件夹移动到指定目录,因为之前我们Hadoop安装到/usr/local/hadoop,所以我们也可以把Spark放在/usr/local/spark下:
sudo mv spark-2.0.2-bin-hadoop2.7 /usr/local/spark
进入spark文件夹下的conf文件夹,里面有个spark-env.sh.template文件,是spark环境变量设置的目标,我们可以复制一个出来:
cp spark-env.sh.template spark-env.sh
然后编辑该文件
vi spark-env.sh
在文件的末尾我们添加上以下内容:
export SCALA_HOME=/usr/share/scala-2.11
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
SPARK_MASTER_IP=master
SPARK_LOCAL_DIRS=/usr/local/spark
SPARK_DRIVER_MEMORY=1G
export LD_LIBRARY_PATH=/usr/local/hadoop/lib/native/:$LD_LIBRARY_PATH
这里的内容是根据我虚拟机的环境来的,如果安装的版本和路径不一样,可以根据实际情况更改。
接下来设置slaves文件。
cp slaves.template slaves
vi slaves
将内容改为
slave01
slave02
Spark在一台机器上就算配置完毕,接下来在另外两台机器上也做一模一样的配置即可。
启动Spark
在master上,我们先启动Hadoop,然后运行
/usr/local/spark/sbin/start-all.sh
便可启动Spark。
运行jps看看Java进程:
2929 Master
2982 Jps
2294 SecondaryNameNode
2071 DataNode
1929 NameNode
2459 ResourceManager
2603 NodeManager
发现比Hadoop启动的时候多了Master进程。
切换到slave01节点上,运行JPS,看看进程:
1889 Worker
1705 NodeManager
1997 Jps
1551 DataNode
这里比Hadoop的时候多了一个Worker进程。说明我们的Spark群集已经启动成功。
下面访问Spark的网站:
http://192.168.100.40:8080/
可以看到2个worker都启动。
最后,我们运行一下Spark的示例程序:
/usr/local/spark/bin/run-example SparkPi 10 --slave01 local[2]
可以在结果中找到
Pi is roughly 3.14XXXXX
说明我们运行成功了。