Spark是通用的基于内存计算的大数据框架,可以和hadoop生态系统很好的兼容,以下来部署Spark集群
集群环境:3节点 Master:bigdata1 Slaves:bigdata2,bigdata3
Master负责任务的分发,与集群状态的显示
Slaves运行具体的Worker任务,最后交由Executor执行任务代码
集群搭建之前,必须满足如下条件:
1、集群主机名和hosts文件映射一一对应
2、集群ssh免密登录配置
3、集群每个节点防火墙关闭
4、JDK正确安装
5、Scala正确安装
6、Hadoop集群安装,因为Spark存储层要用到HDFS,所以应该至少保证HDFS服务的正常运行,hadoop集群可以在yarn上,也可以由zookeeper协调,这个都没问题,最重要的是hadoop集群能正常运行
然后可以开始安装Spark,Spark官方网站是:http://spark.apache.org/,直接去官方网站下载spark安装包即可,这里安装的是1.x的最新版1.6.2,2.0是刚出来,暂时没有使用,包名为:spark-1.6.2-bin-hadoop2.6.tgz 这里已经安装的hadoop版本为hadoop 2.6.0,下载之后上传至服务器准备安装
在bigdata1 Master节点执行如下命令解压,目录可以自定义,这里安装位置是/bigdata/spark
tar -xvzf spark-1.6.2-bin-hadoop2.6.tgz mkdir /bigdata/spark mv spark-1.6.2-bin-hadoop2.6 /bigdata/spark/ cd /bigdata/spark/spark-1.6.2-bin-hadoop2.6/
配置文件目录在安装目录下的conf下,然后从默认模板中拷贝出要编辑的配置文件:
cp conf/spark-env.sh.template conf/spark-env.sh cp conf/slaves.template conf/slaves
网上说的可以添加spark到环境变量中,这个是为了方便启动和调试,是可选的,
执行 vim conf/slaves 配置运行Worker任务的节点,和hadoop的slaves配置类似,单机环境中默认或者改为本地主机名,这里是bigdata2,bigdata3
执行 vim conf/spark-env.sh 编辑spark启动加载脚本,在最后添加如下配置:
# JDK目录 export JAVA_HOME=/usr/local/java/jdk1.8.0_73 # Scala目录 export SCALA_HOME=/usr/local/scala/scala-2.11.8 # Master IP地址 export SPARK_MASTER_IP=192.168.0.187 # Worker运行内存 export SPARK_WORKER_MEMORY=1024m # hadoop配置文件目录 export HADOOP_CONF_DIR=/bigdata/hadoop/hadoop-2.6.0/etc/hadoop
集群中Worker运行内存可以适当调整3g~8g的范围
然后发送Spark到集群其他节点:
scp -r spark/ bigdata2:/bigdata/ scp -r spark/ bigdata3:/bigdata/
最后启动Spark集群,在Master节点执行: sbin/start-all.sh 可以启动整个集群,通过执行jps可以看到Master运行的进程是Master,Slaves节点运行的进程是Worker
另外也可以通过在Master节点分别执行 sbin/start-master.sh 和 sbin/start-slaves.sh 分别调起来master和全部子节点的worker进程,这样可以根据不同需要有选择的调起集群中的服务
Spark的服务都启动之后,访问Master地址可以打开相应的管理界面,地址就是:http://ip:8080,会看到界面如下:
通过界面可以方便的查看并管理相应的端口号,配置项,Workers节点,正在运行的应用任务等
通过执行 bin/spark-shell 或者指定相应的参数 bin/spark-shell --executor-memory 1g --driver-memory 1g --master spark://bigdata1:7077 可以进入scala交互式命令行界面,在这里可以进行一些测试等
到这里,Spark集群就部署完毕了