Spark环境搭建(三)Spark On YARN模式

伪分布式

配置

SparkMasterYARNResourceManager替代,WorkerNodeManager替代。

spark-env.sh
1
2
3
4
HADOOP_CONF_DIR=/opt/bigdata/hadoop/default/etc/hadoop
YARN_CONF_DIR=/opt/bigdata/hadoop/default/etc/hadoop
# 日志服务器HistoryServer配置
SPARK_HISTORY_OPTS="-Dspark.history.fs.logDirectory=hdfs://node0:9000/spark-logs"
spark-defaults.conf
1
2
3
4
5
6
7
8
[zhangsan@node0 conf]$ vim spark-defaults.conf
spark.master yarn

# spark app执行的事件日志会存放到指定的位置
spark.eventLog.enabled true
spark.eventLog.dir hdfs://node0:9000/spark-logs
# spark包位置
spark.yarn.archive hdfs://node0:9000/spark-jars

sparkjar包上传到HDFS

1
2
3
4
5
# 在hdfs上创建目录hdfs:node0:9000/shared/spark-archive
[zhangsan@node0 default]$ hdfs dfs -mkdir /spark-jars

# $SPARK_HOME/spark/jars/*.jar上传到hdfs
[zhangsan@node0 default]$ hdfs dfs -put jars/* /spark-jars

运行SparkApp

Spark Application有两种运行模式,ClientCluster。可以通过 --deploy-mode=client/cluster来指定。在提交Application的时候,可以告诉YARN需要的计算资源。

Client模式

Client模式,driver运行在客户端进程中;

实验

1
[zhangsan@node1 default]$ bin/spark-shell --master yarn --deploy-mode client 
Cluster模式

Cluster模式,driver运行在YARN容器中ApplicationMaster

Mesos

略。

集群模式

如要继续如下步骤,请完成Hadoop全分布式环境的搭建。

集群规划

Hadoop spark
node1 NameNode, SecondNameNode, ResourceManager Master, Worker, HistoryServer
node2 DataNode, NodeManager Worker
node3 DataNode, NodeManager Worker

Spark On YARN, 只需要在一个节点上部署SparkSparkMasterYARNResourceManager替代,WorkerNodeManager替代。

spark-env.sh
spark-defaults.conf

伪分布式-YARN配置基本一致,不同的是,此处我们的Namenode运行在node1节点上,因此需要修改一下node0node1