[Spark] Linux(CentOS)配置Spark集群(Hadoop YARN)

准备工作

  • 安装SSH Server、配置集群节点间的相互SSH无密码登录
  • Linux(CentOS6.4)下Hadoop单机/集群的安装和配置

注意:如果需要在Spark集群时,使用hadoop yarn的方式提交任务,则需要在集群中配置完成hadoop(yarn方式),详情见:[Hadoop] Linux(CentOS6.4)下Hadoop单机/集群的安装和配置中集群部分。

Spark集群配置环境

  • Linux主机两台(CentOS6.4 32bit):Master(hostname:master, ip:192.168.15.129),Slave(hostname: slave, ip:192.168.15.139)
  • Scala版本:scala-2.10.6
  • Hadoop版本:hadoop-2.6.4
  • Spark版本:spark-1.6.2-hadoop-2.6.4
  • Java JDK:1.8

安装目录:

  • Java JDK:/usr/java/jdk1.8.0_144
  • Scala:/usr/scala/scala-2.10.6
  • Hadoop:/usr/hadoop/hadoop-2.6.4
  • Spark:/usr/spark/spark-1.6.2-bin-hadoop2.6

说明:具体JDK,Scala,Spark安装见:[Spark] Linux(CentOS)下搭建Spark运行环境,Hadoop集群搭建见: [Hadoop] Linux(CentOS6.4)下Hadoop单机/集群的安装和配置

修改Spark配置文件

配置步骤:同样是先在Master主机中完成对Spark的配置文件的修改,在将spark文件夹发至各个slave中注意,Spark的安装目录,需要Master和各个slave主机保持一致,这里Master中spark的安装目录为/usr/spark/spark-1.6.2-bin-hadoop2.6)

在配置Spark集群时,需要修改的配置文件:

  • /usr/spark/spark-1.6.2-bin-hadoop2.6/conf/slaves
  • /usr/spark/spark-1.6.2-bin-hadoop2.6/conf/spark-env.sh

上述的两个配置文件,在spark中有相应的模板文件,需要复制成相应的配置文件,具体如下。

工作目录:spark安装目录(/usr/spark/spark-1.6.2-bin-hadoop2.6/)

工作用户:hadoop

1. slaves文件

将模板文件(slaves.template)复制为需要的配置文件(slaves)

cp ./conf/slaves.template ./conf/slaves

编辑slaves文件内容,添加slave的主机名称(hostname):

image

2. spark-env.sh文件

将模板文件(spark-env.sh.template)复制为需要的配置文件(spark-env.sh)

cp ./conf/spark-env.sh.tempalte ./conf/spark-env.sh

编辑spark-env.sh文件内容:

说明:这里配置spark集群可以使用hadoop yarn集群管理器模式的设置,

配置文件内容:

image

说明:这里在对spark-env.sh配置文件中的参数进行设置时,进行了一些测试,具体见:[Spark] conf/spark-env.sh文件的配置对Spark集群的影响

3. 将上述配置完成的master主机中的/usr/spark安装目录,打包并发送至slave主机中:

cd /usr
tar -zcf ./spark.tar.gz ./spark
scp ./spark.tar.gz slave:/home/hadoop/tmp

4. 在slave主机中对压缩文件进行解压至/usr目录下(slave主机中的spark安装目录同master主机保持一致):

tar -zxf /home/hadoop/tmp/spark.tar.gz -C /usr
chown -R hadoop:hadoop /usr/spark

以上完成了spark集群中的配置文件的设置,下面启动spark集群。

启动spark集群和hadoop集群

1. 启动spark集群

cd /usr/spark/spark-1.6.2-bin-hadoop2.6
sbin/start-all.sh

2. 使用jps命令验证Spark是否启动成功:

在未启动hadoop集群的master节点中:

image

在未启动hadoop集群的slave节点中:

image

注意:在未启动hadoop集群的情况下,启动spark集群不会自动启动hadoop集群,两个分布式计算平台本身就可以相互独立的运行。但当spark集群单独运行时,可以使用spark的local(单机)和standlone(spark独立集群管理器模式)两种模式进行spark-submit任务的提交,无法使用Hadoop YARN集群管理模式。当需要使用yarn集群管理器对集群进行管理时,则spark集群必须依赖于hadoop集群的运行

下面继续启动已经配置完成的hadoop集群,如下。

3. 同时启动spark和hadoop集群时的运行情况:

在master主机中开启hadoop集群命令:

/usr/hadoop/hadoop-2.6.4/sbin/start-dfs.sh
/usr/hadoop/hadoop-2.6.4/sbin/start-yarn.sh

在启动hadoop集群的master节点中:

image

在启动hadoop集群的slave节点中:

image

注意:在配置完成spark和hadoop集群配置到目前为止,则可以使用yarn集群管理器下的spark-submit命令提交spark任务,并运行。这里有一个spark-example的例子,详见:[Spark] conf/spark-env.sh文件的配置对Spark集群的影响

4. 通过浏览器查看Spark集群配置情况:

进入Spark的Web管理页面: http://master:8080

5. 关闭集群

在master主机上,使用如下命令关闭spark集群:

image

hadoop集群的管理命令如下:

cd /usr/hadoop/hadoop-2.6.4
sbin/stop-dfs.sh
sbin/stop-yarn.sh

至此,hadoop和spark集群配置完成!!!该系列内容均为原创文章,未经允许不得转载,转载请注明来源!!!

参考资料: