Spark on Yarn及相关问题解决

官方文档:
http://spark.apache.org/docs/latest/running-on-yarn.html

配置安装
1.安装hadoop:需要安装HDFS模块和YARN模块,HDFS必须安装,spark运行时要把jar包存放到HDFS上

2.安装Spark:解压Spark安装程序到一台服务器上,修改spark-env.sh配置文件,sparh程序将作为YARN的客户端用于提交任务

vi spark-env.sh

export JAVA_HOME=/usr/local/jdk1.7.0_79/
export SPARK_MASTER_IP=minimaster
export SPARK_MASTER_PORT=7077
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop/

3.启动HDFS和YARN

4.运行模式分为cluster模式和client模式
1.cluster模式 : Driver程序在YARN中运行,应用的运行结果不能在客户端显示,所以最好运行那些将结果最终保存在外部存储介质(如HDFS,Redis,Mysql)而非stdout输出的应用程序,客户端的终端显示的仅是作为YARN的job的简单运行状况

这里写图片描述

Spark Driver首先作为一个ApplicationMaster在YARN集群中启动,客户端提交给ResourceManager的每一个job都会在集群的NodeManager节点上分配一个唯一的ApplicationMaster,由该ApplicationMaster管理全生命周期的应用
具体过程:
1.由client向RM(Resource Manager)提交请求,并上传jar到HDFS上
这期间包括4个步骤:

   1.连接到RM
   2.从RM的ASM(ApplicationManager)中获得metric,queue和resource等信息
   3.upload  app  jar  and  spark-assembly  jar
   4.设置运行环境和container上下文(launch-container.sh等脚本)

2.RM向NM(NodeManager)申请资源,创建Spark ApplicationMaster(每个SparkContext都有一个ApplicationMaster)
3.NM启动AM,并向RM ASM注册
4.AM从HDFS中找到jar文件,启动SparkContext,DAGsheduler 和 YARNCluster Scheduler
5.ASM向RM注册申请container资源
6.RM通知NM分配container,这时可以收到来自ASM关于container的报告(每个container对应一个executor)
7.Spark ApplicationMaster 直接和container(executor)进行交互,完成这个分布式任务

2.client模式 : Driver运行在Client上,应用程序运行结果会在客户端显示,所有适合运行结果有输出的应用程序(spark-shell)

5.运行:
cluster模式:
cd /usr/local/spark-1.6.1/

./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
--driver-memory 1g \
--executor-memory 1g \
--executor-cores 2 \
--queue default \
lib/spark-examples*.jar \
100

在页面上访问http://192.168.222.156:8088
查找运行完毕后的logs文件查看结果

问题结果显示
RM Home
NodeManager
Tools
java.lang.Exception: Unknown container. Container either has not started or has already completed or doesn’t belong to this node at all.
这里写图片描述

问题解决方案:
cd /usr/local/hadoop/etc/hadoop/
vi yarn-site.xml


yarn.log.server.url
http://hadoop1:19888/jobhistory/logs

重新分发yarn-site.xml
scp -r /usr/local/hadoop/etc/hadoop/yarn-site.xml miniSlave1:/usr/local/hadoop/etc/hadoop

scp -r /usr/local/hadoop/etc/hadoop/yarn-site.xml miniSlave2:/usr/local/hadoop/etc/hadoop

启动:
mr-jobhistory-daemon.sh start historyserver

重新运行:

./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
--driver-memory 1g \
--executor-memory 1g \
--executor-cores 2 \
--queue default \
lib/spark-examples*.jar \
100

结果显示:
结果

最后一行就是结果展示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值