Yarn的两种deploy-mode模式

区别

yarn 有两种模式,分别是 client 和 cluster,那么它们有什么区别呢?

  1. Driver的运行位置:
    client:Driver运行在Client端(即提交作业的机器);
    cluster:Driver运行在ApplicationMaster中;

  2. 客户端是否能退出
    client:因为client会和请求到的Container进行通信来完成作业的调制和执行,所以不能退出;
    cluster:clinet只要提交完作业后就可以关掉,因为作业已经在yarn运行了;

  3. ApplicationMaster的职责
    clinet:到Yarn Resource Manager去申请资源;
    cluster:除了要申请资源,还要处理作业调度;

  4. 运行的输出日志的位置
    clinet:日志会输出到控制台,便于测试
    cluster:因为日志在Driver上,所以需要通过命令$ yarn logs -applicationId <app ID>(前提是要配置属性 yarn.log-aggregation-enable)或者在Spark Web UI上来查看日志

以下是两张对比图在这里插入图片描述

在这里插入图片描述

案例

下面就在两个不同的模式下进行测试
1、使用 client 模式,这个Pi的例子就是官网提供的,我们直接执行一下

./bin/spark-submit --class org.apache.spark.examples.SparkPi \
    --master yarn \
    --deploy-mode client \
    --driver-memory 4g \
    --executor-memory 2g \
    --executor-cores 1 \
    --queue thequeue \
    examples/jars/spark-examples*.jar \
    10

在Web UI上查看结果
在这里插入图片描述
可以看到,用了26s执行成功了

2、使用 cluster 模式

./bin/spark-submit --class org.apache.spark.examples.SparkPi \
    --master yarn \
    --deploy-mode cluster\
    --driver-memory 4g \
    --executor-memory 2g \
    --executor-cores 1 \
    --queue thequeue \
    examples/jars/spark-examples*.jar \
    10

在Web UI上查看结果,一直处于Pending状态,猜想可能是资源不够,遂将其kill,后来将参数调小后,就可以执行成功,如下

./bin/spark-submit --class org.apache.spark.examples.SparkPi \
    --master yarn \
    --deploy-mode cluster \
    --driver-memory 1g \
    --executor-memory 1g \
    --executor-cores 1 \
    --queue thequeue \
    examples/jars/spark-examples*.jar \
    10

在Web UI上查看结果
在这里插入图片描述
猜想原因可能是Driver运行在ApplicationMaster中所以拿到的内存达不到4G

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值