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"