Spark 对接开安全 inceptor 的几个常见报错及其解决

内容纲要

概要描述


Spark 对接开启安全的 inceptor 时,会遇到 ClassNotFound、No such file 等错误,本文就几个常见报错进行说明。

详细说明


  • 找不到 io.transwarp.guardian.plugins.inceptor.GuardianHiveAuthorizerFactory 类
    报错类似如下:

    ERROR KeyProviderCache: Could not find uri with key [dfs.encryption.key.provider.uri] to create a keyProvider !!
    ...
    RROR SessionState: Error setting up authorization: java.lang.ClassNotFoundException: io.transwarp.guardian.plugins.inceptor.GuardianHiveAuthorizerFactory
    org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.ClassNotFoundException:
    ...

    该报错是缺少 guardian 相关的 plugins 包,这个包是在 guardian 的 image 里的,所以如果只引入了 inceptor 的 jar 包则可能出现该问题。
    需要从 guardian-server 里拷贝该 jar 包并引入。通过如下命令找到 jar 包;

    $ guardian_server=kubectl get po -o wide | grep guardian-server | head -1 | awk '{print $1}'
    $ kubectl exec -it ${guardian_server} -- grep -nir "io.transwarp.guardian.plugins.inceptor.GuardianHiveAuthorizerFactory" /usr/lib/

    file
    比如上图,找到了 /usr/lib/guardian/lib/inceptor-plugin-2.0-transwarp-5.2.2.jar,从 pod 里拷贝出该包并放入 spark 的 classpath 即可。

  • java.lang.NoClassDefFoundError:io/transwarp/guardian/common/exception/GuardianClientException
    该错误同样是缺少 guardian 相关的包,可以到 inceptor 的 pod 里找到相关的包并引入,参考命令:

    $ inceptor_server=kubectl get po -o wide | grep inceptor-server | head -1 | awk '{print $1}'
    $ kubectl exec -it ${inceptor_server} -- find /usr/lib -iname "guardian-*" -print

    常用的如 guardian-client、guardian-common 等 jar 包

  • 报错 Guardian server is not specified in guardian-site.xml
    如果是从 manager 页面下载服务配置,或者从 TDH-Client 里取的 inceptor 配置文件,是没有 guardian-site.xml 文件的;需要到集群中手动取下,一般是在 /etc/inceptor*/conf 路径下。

附: 如何从 pod 拷贝文件

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。