spark standalone模式作业迁移到spark on yarn

本文主要介绍spark standalone模式的作业迁移到spark on yarn上的一些操作。

1、代码重新编译

因为之前spark standalone项目使用的是spark 1.5.2版本,而现在的spark on yarn 使用的是spark 2.0.1,所以先需要对原来代码重新编译,建议使用maven构建项目,根据需要使用下面提供的pom.xml文件即可自动下载当前部署版本所需的jar包。
<dependencies>

        <dependency>
            <groupId>org.scala-lang</groupId>
            <artifactId>scala-library</artifactId>
            <version>2.11.8</version>
        </dependency>

        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.11</artifactId>
            <version>2.0.1</version>
        </dependency>

        <dependency>
            <groupId>org.scala-lang</groupId>
            <artifactId>scala-reflect</artifactId>
            <version>2.11.8</version>
        </dependency>

        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-streaming-flume_2.11</artifactId>
            <version>2.0.1</version>
        </dependency>

        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-streaming_2.11</artifactId>
            <version>2.0.1</version>
        </dependency>

        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-sql_2.11</artifactId>
            <version>2.0.1</version>
        </dependency>

        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-mllib_2.11</artifactId>
            <version>2.0.1</version>
        </dependency>

        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-streaming-kafka-0-8_2.11</artifactId>
            <version>2.0.1</version>
        </dependency>

        <dependency>
            <groupId>org.scalikejdbc</groupId>
            <artifactId>scalikejdbc_2.11</artifactId>
            <version>2.2.1</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.35</version>
        </dependency>

        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-mllib_2.11</artifactId>
            <version>2.0.1</version>
        </dependency>
</dependencies>

2、参数变化

因为spark standalone与spark on yarn的资源管理机制不同,所以有一些参数需要调整才能在spark on yarn运行,这里只介绍需要修改的部分,没涉及到的参数则不需要变动。
  • master
    这里修改成yarn,此外–deploy-mode参数可以是client和cluster,这里的区别是client模式的driver在submit任务的机器上,作业运行日志直接从当前客户端打印,方便作业调试;而cluster模式是把driver随机分配到某一台机器,适用于作业调试后稳定运行。
  • executor
    废弃standalone模式中的–total-executor-cores,而改用–num-executors

3、任务执行目录

spark2.0.1客户端在hadoop1的/opt/spark2,为了平滑迁移,原来spark1.5.2的客户端路径不变,建议大家把新需求提在yarn上面。

4、作业历史记录查询

spark的job historyserver部署在hadoop3,故历史记录查看地址是hadoop3.com:18080

这里以同一个任务在standalone和spark on yarn的执行脚本作为示范,以示区别:

  • standalone模式
    bin/spark-submit --class spark.mllib.als -master spark://spark002.com:6066 --deploy-mode cluster --executor-memory 4g –total-executor-cores 200 --queue data
  • spark on yarn 模式
    bin/spark-submit --class spark.mllib.als -master yarn --deploy-mode cluster --executor-memory 4g –num-executors 200 --queue data

5、下面提供提几个简单的spark on yarn使用接口,方便大家学习和使用spark:

  • spark-shell 作业调试中最常用的方法,方便代码调试及调优
    bin/spark-shell --master yarn --deploy-mode client --executor-memory 2G --num-executors 20 --executor-cores 1 --queue data
  • spark-sql 调试sql语句常用
    bin/spark-sql --master yarn --deploy-mode client --executor-memory 2G --num-executors 20 --executor-cores 1 --queue data

6、作业迁移过程中可能的报错

  • Container killed by YARN for exceeding memory limits. 3.0 GB of 3 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead
    分析: 因为spark on yarn会有yarn来检测spark container的资源使用情况(standalone没有),所以作业迁移过来很可能出现该报错,解决方法就是直接加大spark.yarn.executor.memoryOverhead或者executor memory(spark.yarn.executor.memoryOverhead默认为executor memory大小的的10%),可以在作业提交脚本中使用 --conf spark.yarn.executor.memoryOverhead=* (如1024)或提高 --executor-memory 来保证作业在新环境下运行。
以上是迁移的指南,供大家顺利迁移作业,后续会继续整理作业调试及调优方面的分享.

新文章会同步到公众号,关注公众号,交流更方便?:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值