作者:Neshoir

Spark是大规模数据集处理的统一分析引擎,其具备批处理、实时数据分析、图计算、机器学习等能力。Spark的特点就是计算快,其计算尽可能的都会在内存里执行,执行任务基于DAG,提供丰富的编程模型接口,如scala,java,python,Spark应用支持运行于各个主流的资源调度平台之上,如Hadoop YARN、Messos、Kubernetes等,当然Spark自身也提个standalone集群模式。超图大数据产品主要集成了Spark SQL和Spark Steaming组件。本文主要介绍Spark集群的搭建。其可运行的模式包括standalone,on yarn。搭建步骤分三步走:1. 机器环境及软件包准备。2. Hadoop集群搭建。3. Spark集群搭建。

机器环境及软件包准备
  • 三台Ubuntu 14.0.4系统的机器(master.comnode1.comnode2.com)。
  • 各机器的JDK 1.8环境配置,配置/etc/profile文件。
  • 各机器固定IP配置,以及hosts文件中的IP与主机名的映射。
  • 各机器关闭防火墙,service iptables stop 。
  • 节点机器之间配置ssh免密登录。
    注:准备阶段可以参考超图大数据环境搭建之基础环境搭建的博客。
Hadoop集群搭建
  • 在系统环境文件/etc/profile里配置HADOOP_HOME的环境,以及source。其值如下示例:
JAVA_HOME=/home/supermap/jdk1.8.0_171
JRE_HOME=${JAVA_HOME}/jre
HADOOP_HOME=/home/supermap/hadoop
PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export JAVA_HOME JRE_HOME PATH HADOOP_HOME

注:参考超图大数据环境搭建之Hadoop集群搭建的博客

Spark集群搭建

机器

master.com机器

node1.com机器

node2.com机器

IP

192.168.31.137

192.168.31.138

192.168.31.139

角色

Master

worker

worker

  • 进入spark/conf目录,编辑salves文件,内容如下:
node1.com
node2.com
export JAVA_HOME=/home/supermap/jdk1.8.0_171
export JRE_HOME=${JAVA_HOME}/jre
export SPARK_MASTER_IP=192.168.31.137	#master.com主机
export SPARK_WORKER_MEMORY=1131M
export SPARK_WORKER_CORES=8
export SPARK_EXECUTOR_MEMORY=1131M
export HADOOP_HOME=/home/supermap/hadoop
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop/
  • 进入spark/conf目录,模版文件spark-default.conf.template更名spark-default.conf,添加内容如下【非必须】:
spark.yarn.jars=hdfs://master.com:9000/spark_jars/*		#用于存储spark的jar依赖库,在进行spark任务计算时依赖,如果不配置该项,在提交任务时也会自动上传jar库到yarn容器中。
  • 如果做了上一步配置,就上次jar库到hdfs上,用hadoop命令:
hadoop fs -mkdir /spark_jars	#在hdfs文件系统上创建文件夹
hadoop fs -put ./* /spark_jars	#进入spark的jars目录,进行jar库的上传
  • 注:如果是虚拟机集群,为了避免因内存过小直接kill掉rpc连接,导致启动失败,可以在yarn-site.xml文件增加配置:
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
Spark集群搭建结果验证
  • standalone模式,启动spark集群,运行计算pi:
sbin/start-all.sh	#在master节点启动spark集群,ui界面如图
bin/run-example --master spark://master.com:7077 SparkPi 10		#提交任务计算pi,如图结果

ha spark 集群部署 spark集群搭建实验报告_supermap


ha spark 集群部署 spark集群搭建实验报告_supermap_02


ha spark 集群部署 spark集群搭建实验报告_ha spark 集群部署_03

  • on yarn模式,先启动hadoop,然后在spark中提交任务:
bin/run-example --master yarn --deploy-mode cluster SparkPi 10	#yarn集群模式提交spark任务,结果如图

ha spark 集群部署 spark集群搭建实验报告_ha spark 集群部署_04


ha spark 集群部署 spark集群搭建实验报告_spark_05

Spark集群部署就告一段落,如果要搭建高可用,安全可靠的集群,请配置kerberos,参考官网。另外如果要开发spark应用还需配置scala环境。