作者: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.com,node1.com,node2.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集群搭建
- 下载 spark-2.1.1-bin-hadoop2.7 包并解压
- 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
- 进入spark/conf目录,模版文件spark-env.sh.template更名spark-env.sh,添加内容如下:
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,如图结果
- on yarn模式,先启动hadoop,然后在spark中提交任务:
bin/run-example --master yarn --deploy-mode cluster SparkPi 10 #yarn集群模式提交spark任务,结果如图
Spark集群部署就告一段落,如果要搭建高可用,安全可靠的集群,请配置kerberos,参考官网。另外如果要开发spark应用还需配置scala环境。