TDH报错 Unsupported major.minor version 52.0的解决方法

1、概述

  相对于CDH使用yarn进行资源调度,TDH从6.x版本之后,就没有在使用yarn,而是默认使用K8S做资源调度了;假如在TDH上面安装了yarn组件,也可以使用yarn进行资源调度;

2、自己开发的spark的jar提交到TDH上执行报错

  自己开发的spark的jar包提交到tdh上面执行时报错:Unsupported major.minor version 52.0。 这报错的原因class的编译和运行的jdk版本不一致导致的。在部署TDH的时候,TDH中也是使用的jdk1.8;那为何会出现版本不一致的情况呢?

  经过咨询TDH的客服,发现出现这个报错的原因是k8s使用的容器管理机制;在部署yarn的时候,默认容器中使用的是jdk1.7;而我们代码编译使用的却是1.8;导致出现的版本不一致问题。

3、如何查询yarn容器的jdk版本

  1、查看yarn容器信息:docker ps | grep yarn |grep transwarp/yarn

 

  2、查看yarn容器的hash:docker exec -it e394341fcb72 hash

  3、查看yarn容器的jdk版本: ll  /usr/java/

 

 4、问题解决方法

  执行spark的作业时,指定jdk的目录为执行yarn的容器的jdk目录即可

 --conf "spark.executorEnv.JAVA_HOME=/usr/java/jdk1.8.0_25"

 --conf "spark.yarn.appMasterEnv.JAVA_HOME=/usr/java/jdk1.8.0_25"

  

 

posted @ 2021-09-14 16:06  虎啸千峰  阅读(522)  评论(0编辑  收藏  举报