本节内容为构建Spark集群经典四部曲的第三步,搭建Spark分布式集群:
(1)构建Spark集群需要的基本软件。
(2)安装Spark集群需要的每个软件。
(3)启动并查看集群的状况。
在前面构建好的Hadoop集群的基础上构建Spark集群,这里采用2014年5月30日发布的Spark 1.0.0版本,也就是Spark的最新版本。要想基于Spark 1.0.0构建Spark集群,需要的软件如下:
(1)Spark 1.0.0,笔者这里使用的是spark-1.0.0-bin-hadoop1.tgz,具体的下载地址是http://d3kbcqa49mib13.cloudfront.net/spark-1.0.0-bin-hadoop1.tgz 3,如图2-47所示。
图2-47 Spark 1.0.0下载界面
笔者是把下载好的Spark 1.0.0保存在了Master节点如图2-48所示的位置。
图2-48 Spark 1.0.0保存位置
(2)下载和Spark 1.0.0对应的Scala版本,官方要求的是必须为Scala 2.10.x,如图2-49所示。
图2-49 Scala版本
笔者下载的是“Sala 2.10.4”,具体官方下载地址为http://www.scala-lang.org/download/2.10.4.html,下载后在Master节点上保存位置,如图2-50所示。
图2-50 Scala保存位置
1.安装Scala
第1步:打开终端,建立新目录“/usr/lib/scala”。
第2步:解压Scala文件。
第3步:把解压好的Scala移到刚刚创建的“/usr/lib/scala”中。
第4步:修改环境变量。
进入如下所示的配置文件中:
按下“i”进入INSERT模式,把Scala的环境编写信息加入其中,如下所示。
从配置文件中可以看出,设置了“SCALA_HOME”并把Scala的bin目录设置到了PATH中。按下“esc“键回到正常模式,保存并退出配置文件:
执行以下命令是配置文件的修改生效:
第5步:在终端中显示刚刚安装的Scala版本,如下所示。
发现版本是“2.10.4”,这正是我们期望的版本。
输入“scala”命令直接进入Scala的命令行交互界面:
此时输入“9*9”这个表达式:
此时发现Scala正确地帮助我们计算出了结果。
此时完成了Master上Scala的安装。
由于 Spark要运行在Master、Slave1、Slave2三台机器上,所以需要在Slave1和Slave2上安装同样的Scala,使用scp命令把Scala安装目录和“~/.bashrc”都复制到Slave1和Slave2相同的目录之下,当然也可以按照Master节点的方式手动在Slave1和Slave2上安装。
在Slave1上Scala安装好后的测试效果如下:
在Slave2上Scala安装好后的测试效果如下:
至此,我们在Master、Slave1、Slave2这三台机器上成功部署Scala。
2.安装Spark
Master、Slave1、Slave2这三台机器上均需要安装Spark。首先在Master上安装Spark,具体步骤如下:
第1步:把Master上的Spark解压,如图2-51所示。
图2-51 解压Spark
直接解压到当前目录下:
此时,创建Spark的目录“/usr/local/spark”:
把解压后的“spark-1.0.0-bin-hadoop1”复制到/usr/local/spark”下:
第2步:配置环境变量。
进入配置文件:
在配置文件中加入“SPARK_HOME”并把spark的bin目录加到PATH中:
配置后保存退出,然后使配置生效:
第3步:配置Spark。
进入Spark的conf目录:
把spark-env.sh.template拷贝到spark-env.sh:
使用vim打开spark-env.sh:
在配置文件中添加如下配置信息:
其中:
● JAVA_HOME指定的是Java的安装目录;
● SCALA_HOME指定的是Scala的安装目录;
● SPARK_MASTER_IP指定的是Spark集群的Master节点的IP地址;
● SPARK_WORKER_MEMOERY指定的Worker节点能够最大分配给Executors的内存大小,因为我们的三台机器配置都是2 GB,为了最充分地使用内存,这里设置为了2 GB;
● HADOOP_CONF_DIR指定的是我们原来的Hadoop集群的配置文件的目录。
保存退出。
接下来配置Spark的conf下的slaves文件,把Worker节点都添加进去:
打开后文件的内容:
我们需要把内容修改为:
可以看出我们把三台机器都设置为了Worker节点,主节点既是Master又是Worker节点,保存退出。
上述就是Master上的Spark的安装。
第4步:Slave1和Slave2采用和Master完全一样的Spark安装配置,在此不再赘述。
第1步:启动Hadoop集群,这个在2.2节中讲解得非常细致,在此不再赘述。
启动之后在Master这台机器上使用jps命令,可以看到如下进程信息:
在Slave1 和Slave2上使用jps会看到如下进程信息:
第2步:启动Spark集群。
在Hadoop集群成功启动的基础上,启动Spark集群需要使用Spark的sbin目录下“start-all.sh”:
接下来使用“start-all.sh”来启动Spark集群!
读者必须注意的是此时必须写成“./start-all.sh”来表明是当前目录下的“start-all.sh”,因为在配置Hadoop的bin目录中也有一个“start-all.sh”文件!
此时使用jps可发现我们在主节点正如预期一样出现了“Master”和“Worker”两个新进程!
此时的Slave1和Slave2会出现新的进程“Worker”:
此时,可以进入Spark集群的Web页面,访问“http://Master:8080”,如图2-52所示。
图2-52 Spark集群的Web页面
从页面可以看到有三个Worker节点及这三个节点的信息。
此时,进入Spark的bin目录,使用“spark-shell”控制台:
此时进入了Spark的shell世界,根据输出的提示信息,可以通过“http://Master:4040”从Web的角度看一下SparkUI的情况,如图2-53所示。
图2-53 SparkUI的情况
当然,你也可以查看一些其他信息,例如Environment,如图2-54所示。
图2-54 Environment等其他信息
从图2-54可以看到,对于shell而言,Driver是Master:50777,表明Spark集群搭建成功。