目录

Spark关于Kerberos解决的问题

概述

Spark 跟 Hadoop 生态的紧密联系就不用多说了,由于最近在处理一个 Kerberos 相关的问题,所以就好奇看看 Spark 里是怎么操作 Kerberos 认证的,以后如果有需要自己做的话,也可以做个参考。

/spark%E5%85%B3%E4%BA%8Ekerberos%E8%A7%A3%E5%86%B3%E7%9A%84%E9%97%AE%E9%A2%98/image_1dchai48jksa8pb1tbl1hiv1g6616.png

可以看到,相关的代码,还不少。

代码

loginUserFromKeytab

/spark%E5%85%B3%E4%BA%8Ekerberos%E8%A7%A3%E5%86%B3%E7%9A%84%E9%97%AE%E9%A2%98/image_1dcham2tg105f17lv1mf71tndqhm2g.png

首先关注到的是 core 里面的 SparkHadoopUtil 这个类(core 里的代码一般都比较重要)。然后就发现,这个方法是跟 HistoryServer 有关系的,如下图。

/spark%E5%85%B3%E4%BA%8Ekerberos%E8%A7%A3%E5%86%B3%E7%9A%84%E9%97%AE%E9%A2%98/image_1dcharsfd1u2hl831p0812a01vl92t.png /spark%E5%85%B3%E4%BA%8Ekerberos%E8%A7%A3%E5%86%B3%E7%9A%84%E9%97%AE%E9%A2%98/image_1dchassh9itiitu1mn41g9r1avv3a.png

很好理解,因为 HistoryServer 用来写入 EventLog,那么读写都是在 HDFS 上的,如果 HDFS 是 Kerberized 的,那就肯定要用 Keytab 了。

AMCredentialRenewer

/spark%E5%85%B3%E4%BA%8Ekerberos%E8%A7%A3%E5%86%B3%E7%9A%84%E9%97%AE%E9%A2%98/image_1dchdspl6lhhtep47k8a41pv13n.png

然后就是 AMCredentialRenewer,我把他的注释摘出来解读一下。这个类主要作用就是起一个 daemon 线程,去定时更新 token。

警告
本文最后更新于 2017年2月1日,文中内容可能已过时,请谨慎参考。