本节书摘来自华章社区《spark核心技术与高级应用》一书中的第2章,第2.2节spark部署,作者于俊 向海 代其锋 马海平,更多章节内容可以访问云栖社区“华章社区”公众号查看
2.2 spark部署
spark部署主要包括local模式部署、standalone模式部署、yarn模式部署、mesos模式部署(参考官方文档)。
其中,集群部署模式如下:
独立部署模式:spark自带的一种简单集群管理器,使用该集群管理器可以轻松地建立一个集群;
apache mesos:一个通用的集群管理器,该集群管理器也可以运行mapreduce和服务应用(实际业务没有采取该种架构,本书没有对该模式进行专门讲解,如需要了解,请参考官方文档);
hadoop yarn:hadoop 2中的资源管理器,是当前主要使用的资源管理器。
除此之外,spark的ec2启动脚本使得在amazon ec2上启动一个独立模式集群变得容易。
2.2.1 local模式部署
local(本地)模式下部署spark应用程序比较简单,可以用于检测spark是否编译安装成功,需要配置java环境变量和设置主节点。
主节点设置步骤如下:
1)进入spark主程序的conf目录,执行:cd spark-1.5.0/conf。
2)以spark-env.sh.template文件为模板创建spark-env.sh文件。
3)修改spark-env.sh配置文件:
4)版本验证,在安装完毕spark并配置环境变量之后,在任意目录下运行spark-shell命令即可进入spark命令行模式,此时出现的大段文字中会提示当前的spark版本,例如:
2.2.2 standalone模式部署
部署standalone模式spark集群步骤如下:
1)修改spark-env.sh配置文件(参考本地部署模式)。
支持启动一个或更多的worker,然后通过下面的指令与master连接:
./bin/spark-class org.apache.spark.deploy.worker.worker park:// ip:port
2.?脚本启动集群
检查spark目录下的conf/slaves文件是否创建,是否包含了所有工作节点机器的hostname,一旦建立了这个文件,就可以通过下面的shell脚本在master节点上启动或终止你的集群。
执行cd /spark-1.5.0/sbin命令进入sbin文件夹,执行./start-all.sh可以启动所有服务器上的spark相关进程。
执行jps命令可以查看当前服务器正在运行的进程。如果是主节点,可以看到master进程;如果是子节点,可以看到worker进程。这样就表示spark在服务器上全部配置完毕。
可以通过设置spark-env.sh中的环境变量进一步配置集群,并复制到所有的worker机器上以使设置生效,表2-2为可配置的spark-env.sh中的环境变量。
2.2.3 yarn模式部署
下面来具体讲解如何基于yarn配置spark程序。
(1)准备工作
配置spark之前,需要做一些准备工作。
首先,检查hosts文件,即使用root账户登录服务器之后,在任意目录下执行vim /etc/hosts命令,查看需要部署spark的“服务器ip机器名”是否已存在,没有请添加。
其次,添加配置文件,同样是在任意目录下执行vim /etc/prof?ile,打开环境变量配置文件,将spark_home配置到环境变量中,具体如下所示。
然后,在任意目录下执行source /etc/prof?ile命令让环境变量生效。
(2)spark本身的配置
接下来就是针对spark本身的配置。
首先,进入spark中的conf文件夹,即在spark所在目录执行cd/spark-1.5.0/conf命令。打开spark-env.sh文件,即vim spark-env.sh,添加:
最后,需要将spark-1.5.0文件夹、环境变量配置文件和hosts文件批量发送到配置的各个子节点的服务器上,再批量执行source /etc/prof?ile命令即可。
按照先启动hadoop,再启动spark的顺序进行启动。