阅读 16 SEO

spark 2.3迁移到3.1.2相关改动

spark core 从2.4升级到3.0

1)org.apache.spark.ExecutorPlugin 接口和相关的配置被org.apache.spark.api.plugin.SparkPlugin接口替换,并且添加了新的功能使用旧接口的插件必须修改来扩展新的接口

2)过期的TaskContext.isRunningLocally方法被移除.Local execution被移除因为它总是返回false.

3)ShuffleWriteMetrics中的shuffleBytesWritten, shuffleWriteTime and shuffleRecordsWritten方法被移除,替换为bytesWritten,writeTime,recordsWritten.

4)AccumulableInfo.apply方法被移除 因为不允许创建AccumulableInfo.

5)accumulator v1 APIs被移除,需要使用 v2 APIs

6)日志文件采用UTF-8编码,spark history server将重放日志文件为UTF-8编码.之前的spark 写日志文件采用的编码是drive jvm进程默认的编码,因此需要 Spark 2.x 的 Spark History Server 读取旧的事件日志文件,以防编码不兼容.

7)使用了一种用于获取shuffle块的新协议.建议在运行 Spark 3.0 应用程序时升级外部 shuffle 服务。可以通过设置spark.shuffle.useOldFetchProtocol=true来使用老的 external shuffle service。否则的话spark 可能会运行提示如下错误 IllegalArgumentException: Unexpected message type: <number>.

8)在standalone模式中废弃SPARK_WORKER_INSTANCES。建议在一个 worker 中启动多个 executor 并为每个节点启动一个 worker,而不是每个节点启动多个 worker并为每个 worker 启动一个 executor。

spark core从3.0到3.1

1)在 Spark 3.0 及以下版本中,SparkContext可以在 executors 中创建。从 Spark 3.1 开始,SparkContext在 executors 中创建时会抛出异常。可以通过配置spark.executor.allowSparkContext来允许在executors中创建SparkContext

2)在Spark 3.0 及以下版本中,spark从yarn.application.classpath和mapreduce.application.classpath传播Hadoop classpath到提交到yarn上的spark application当spark distribution是built-in Hadoop。  从 Spark 3.1 开始,当 Spark distribution是built-in Hadoop时,它不再传播Hadoop classpath,以防止从 Hadoop 集群(例如 Guava 和 Jackson)获取的不同传递依赖项导致的失败。要恢复 Spark 3.1 之前的行为,您可以设置spark.yarn.populateHadoopClasspath为true.

作者:焦清波

原文链接:https://www.jianshu.com/p/6c12590d2443

文章分类
后端
文章标签
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 gxwowoo@163.com 举报,一经查实,本站将立刻删除。
相关推荐