spark分布式搭建方式大致分为三种:standalone、yarn、mesos。三种分类的区别这里就不一一介绍了,不明白可自行了解。standalone是官方提供的一种集群方式,企业一般不使用。yarn集群方式在企业中应用是比较广泛的,这里也是介绍yarn的集群安装方式。mesos安装适合于超大型集群。
集群节点分配:
cdh1:Zookeeper、NameNode(active)、ResourceManager(active)、JournalNode
cdh2:Zookeeper、NameNode(standby)、ResourceManager(standby)、JournalNode
cdh3:Zookeeper、JournalNode、DataNode、NodeManager、spark
cdh4:DataNode、NodeManager、spark
二、安装
说明一下:
①选spark的时候要注意与hadoop版本对应。因为hadoop用的是2.6的,所以spark选的是spark-2.1.1-bin-hadoop2.6
②因为spark基于yarn来管理,spark只能安装在NodeManager节点上。
③spark安装放在/opt/beh/soft目录下。
1.hadoop基于yarn(ha)的搭建,这里介绍步骤了。在我的上一个教程里有详细介绍。
2.安装scala,并配置好环境变量。
export SCALA_HOME=/opt/beh/soft/scala
export PATH=$SCALA_HOME/bin:$PATH
export SPARK_HOME=/opt/beh/soft/spark
export PATH=$SPARK_HOME/bin:$SPARK_HOME/sbin:$PATH
3.在NodeManager节点上解压spark文件。
tar -xvf spark-2.1.1-bin-hadoop2.6
4.修改spark-2.1.1/conf/spark-env.sh,在文件尾部加上以下内容,其中HADOOP_CONF_DIR是必填项
export JAVA_HOME=/opt/beh/soft/jdk
export SCALA_HOME=/opt/beh/soft/scala
export HADOOP_HOME=/opt/beh/soft/hadoop
export HADOOP_CONF_DIR=/opt/beh/soft/hadoop/etc/hadoop
export SPARK_MASTER_PORT=7077
export SPARK_EXECUTOR_CORES=2
export SPARK_EXECUTOR_MEMORY=1024m
export SPARK_EXECUTOR_INSTANCES=1
5.修改spark-2.1.1/conf/slave文件,添加以下内容:
cdh3
cdh4
6.在hdfs上传spark的jar包,并修改/opt/beh/soft/spark-2.1.1/conf/spark-defaults.conf(可不做)
①hadoop fs -mkdir /spark_jars
②hadoop fs -put spark-2.1.1/jars/* /spark_jars
③修改spark-2.1.1/conf/spark-defaults.conf,添加以下内容:
spark.yarn.jars=hdfs://ns1:/spark_jars/*
7.完成以上操作就完成了spark基于yarn的安装。下面是验证部分:
在安装有spark的节点上执行以下命令:
spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode cluster --driver-memory 1g --executor-memory 1g --executor-cores 1 --num-executors 3 examples/jars/spark-examples_2.11-2.1.1.jar 10
能看以上三图就说明安装成功了!
备注:如果执行spark-shell –master yarn –deploy-mode client失败,报rpc连接失败,解决方法如下:
在hadoop的配置文件yarn-site.xml中加入:
<property>
<name>yarn.nodemanager.pmem-check-enabledname>
<value>falsevalue>
property>
<property>
<name>yarn.nodemanager.vmem-check-enabledname>
<value>falsevalue>
property>
报错的原因是:内存资源给的过小,yarn直接kill掉进程,则报rpc连接失败、ClosedChannelException等错误。