云计算Spark集群搭建教程
云计算Spark集群搭建教程。
集群规划:
节点 Spark
node1 1(master)
node2 1(worker)
node3 1(worker)
node4 1 (客户端)
1、上传安装包,解压到/home/目录下;
2、在hadoop1主机上,进入/home/spark-1.6.0-bin-hadoop2.6/conf 目录下,修改spark-env.sh 文件(如果没有该文件,则将spark-env.sh.template修改为spark-env.sh),添加如下配置:
export SPARK_MASTER_IP=node1
export SPARK_MASTER_PORT=7077
export SPARK_WORKER_CORES=2
export SPARK_WORKER_MEMORY=1g
注:7077是master节点与worker节点进行通信的端口,默认是7077。另外spark提供了webUI的界面,默认端口是8080,在${spark-home}/bin/start-master.sh中配置。
3、在同一个目录下,修改slaves文件(若没有slaves文件,则修改slaves.template为slaves),删除原有配置,添加如下配置:
node2
node3
4、将hadoop1上配置好的安装包,同步至hadoop2、hadoop3两台主机上。
[root@node1 home]# pwd
/home
[root@node1 home]# scp -r spark-1.6.0-bin-hadoop2.6/ node2:`pwd`
[root@node1 home]# scp -r spark-1.6.0-bin-hadoop2.6/ node3:`pwd`
5、启动Spark集群:在master节点(node1)上,进入/home/spark-1.6.0-bin-hadoop2.6/sbin 目录,执行启动命令:
[root@node1 sbin]# ./start-all.sh
注意:启动的时候,要注意添加路径,因为脚本名称和hadoop集群的脚本名称相同,故此处要指明脚本的路径。
6、使用jps命令查看各节点上的进程,验证集群是否启动成功。
或
访问Web管理界面,验证是否搭建成功。https://192.168.152.101:8080/
附:在实际使用的时候,一般不在spark集群(即本文的 node1~node3 主机)上直接提交作业,而是在一台专门的客户端加上去提交。 下面以 node4 作为客户端,说明客户端的搭建和使用方式。
其实spark客户端的搭建与使用十分简单,只需要把spark的安装包拷贝至客户端上即可, 拷贝完成后,就可以在客户端进行提交任务的操作。
在node1主机上,执行如下命令,将spark的安装包拷贝至客户端:
scp -r /home/spark-1.6.0-bin-hadoop2.6 node4:`pwd`
Spark任务提交命令(standalone模式下):
./spark-submit --master spark://node1:7077 --deploy-mode client --jars ../lib/spark-examples-1.6.0-hadoop2.6.0.jar --class org.apache.spark.examples.SparkPi 100
Spark on Yarn:
说明:
1、在standalone模式下,资源调度与任务执行的节点分别叫做 master和worker ;
在yarn模式下,负责资源调度与任务执行的接口分别叫做 resourcemanager 和nodemananger。
2、将spark应用提交到yarn上时,没有用到standalone集群,所以standalone集群可以关闭。
要将spark应用提交到yarn上运行, 需进行两项准备工作:
1、提前将yarn和hdfs启动(启动hdfs的目的在于:在提交任务时,spark框架会将jar包上传到hdfs集群上,这样各个计算节点就可以从hdfs集群上获取jar包,以进行计算任务,hdfs此时的作用相当于ftp服务器),可将hadoop集群启动,也可以单独启动hdfs和yarn。
start-all.sh
2、修改客户端配置:spark-env.sh , 指定hadoop配置文件的目录(任务执行前,会向resourcemanager申请资源。spark框架会从此项配置中获取resourcemanager运行在哪个节点上)。
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
准备工作做好之后,就可以提交命令,将spark应用提交到yarn上运行了
./spark-submit --master yarn--jars ../lib/spark-examples-1.6.0-hadoop2.6.0.jar --class org.apache.spark.examples.SparkPi 100
关于--master的说明, 有三种取值:
(a) yarn-client 以客户端方式提交
(b) yarn-cluster 以集群方式提交
(c) yarn 等同于 yarn-client