Spark on YARN
引言:
Spark 可以跑在很多集群上,有standalone,Yarn,mesos模式。 satandalone模式采用spark自带的集群资源管理器,效率较低。但不管你Spark采用的是何种集群,它的代码都是一样的,所以在做实验时,配置伪分布式也可以练习代码学习spark。有很多博客在搭建spark集群时将yarn模式和standalone模式混淆了。故本文将练习搭建在yarn模式上。
1.配置安装
在安装配置之前,需先完成hadoop的配置安装,具体安装方法可参考前文。
Resourcemanager:负责整个集群的资源管理和调度
NodeManager:与RM汇报资源,管理Container生命周期,数量和位置保持和datanode一致。
1.1yarn-site.xml的配置
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<!-- 开启resourcemanager高可用-->
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<property>
<!--指定RM的cluster id-->
<name>yarn.resourcemanager.cluster-id</name>
<value>cluster1</value>
</property>
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<property>
<!--指定rm的位置,这里主机分别是slave1和slave2-->
<name>yarn.resourcemanager.hostname.rm1</name>
<value>slave1</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>slave2</value>
</property>
<property>
<!--指定zk集群的地址 -->
<name>yarn.resourcemanager.zk-address</name>
<value>master:2181,slave1:2181,slave2:2181</value>
</property>
</configuration>
1.2mapreduce-site.xml的配置
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
1.3spark配置
配置spark-env.sh文件
cd ./spark/conf
cp spark-env.sh.template spark-env.sh
vim spark-env.sh
注意此处的配置路径位置要对应好自己之前Hadoop,spark,jdk,scala等相关信息的安装路径。
export SCALA_HOME=/usr/java/scala
export JAVA_HOME=/usrjava/jdk1.8
export HADOOP_HOME=/usr/java/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
SPARK_MASTER_IP=192.168.43.10
SPARK_LOCAL_DIRS=/usr/java/spark
SPARK_DRIVER_MEMORY=1G
将配置好的spark文件夹分发到其他节点计算机,此处ip和文件路径根据自己配置的实际情况设置
scp -r /usr/java/spark root@192.168.43.11:/usr/java/spark
scp -r /usr/java/spark root@192.168.43.12:/usr/java/spark
2设置启动
2.1启动zk
zkServer.sh start
2.2启动hdfs
start-dfs.sh
2.3启动yarn:
1、一节点start-yarn.sh
2、二三节点yarn-daemon.sh start resourcemanager
2.4启动spark:
spark-shell --master yarn-client
如果启动失败可能原因,虚拟机内存不够,解决办法:先停止yarn的服务,然后修改yarn-site.xml文件,注:三台虚拟机都要修改,改完之后重启yarn服务,然后启动spark。
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
<description>Whether virtual memory limits will be enforced for containers</description>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>4</value>
<description>Ratio between virtual memory to physical memory when setting memory limits for containers</description>
</property>
输入链接192.168.43.11:8088可以看到yarn的服务web页面: