首先我们先看一下Spark官网对此的解释
如果 HBase 在类路径中,将获得 HBase 令牌,HBase 配置声明应用程序是安全的(即 hbase-site.xml 将 hbase.security.authentication 设置为 kerberos),并且 spark.yarn.security.credentials.hbase.enabled未设置为假。
配置场景
使用Spark提交任务时,Driver默认会去HBase获取Token,访问HBase则需要配置文件“jaas.conf”进行安全认证。此时若用户未配置“jaas.conf”文件,会导致应用运行失败。
因此,根据应用是否涉及HBase进行以下处理:
-
当应用不涉及HBase时,即无需获取HBase
Token。此时,将“spark.yarn.security.credentials.hbase.enabled”设置为“false”即可。 -
当应用涉及HBase时,将“spark.yarn.security.credentials.hbase.enabled”设置为“true”,且需要在Driver端配置“jaas.conf”文件,配置如下:
{client}/spark/bin/spark-sql
--master yarn-client
--principal {principal}
--keytab {keytab}
--driver-java-options "-Djava.security.auth.login.config={LocalPath}/jaas.conf"
- 在“jaas.conf”中指定Keytab和Prinical,示例如下:
Client {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab = "{LocalPath}/user.keytab"
principal="super@<系统域名>"
useTicketCache=false
debug=false;
};
但是,我在spark-3.0.1上去搜索 spark.yarn.security.credentials.hbase.enabled 这个参数 却搜不到了,不知为啥???