livy 安装并集成kerberos

使用原因:因为griffin需要安装livy组件的支持,所以需要安装livy提交spark任务。

版本说明:

Livy版本0.7

spark版本CDH6.2-spark2.4

安装

(1)下载apache livy 下载地址:https://github.com/apache/incubator-livy/archive/v0.7.0-incubating.zip
(2)解压 unzip apache-livy-0.7.0-incubating-bin.zip
(3)修改配置文件conf/livy-env.sh,加入hadoop_home,spark_home,Hadoop_conf_dir,spark_conf_dir如下图所示(其他版本根据具体情况修改)
image.png
(4)修改conf/livy.conf

1.修改为yarn提交方式

image.png

2. 添加kerberos认证

image.png
image.png
注意livy.server.auth.kerberos.principal的值应该为HTTP/hostname@RelaName的方式,查看源码可以看到livy使用的hadoop的AuthenticationFilter类作为代理的类,在类中调用了KerberosAuthenticationHandler类权限认证,在该类初始化方法init中有这样一段程序,如图所示:
image.png
(4)修改hadoop配置文件需要修改代理代理值为livy.server.launch.kerberos.principal的值,如图所示我用的是ldapuser作为代理所以需要配置ldapuser的代理权限(如果为livy作为代理请使用修改为livy)
image.png
(5)启动livy bin/livy-server start(stop停止)
(6)日志查看tail -f logs/livy-livy-server.out当出现下图的Server:started是表示成功(因为我开启了debug模式所以打印较多的日志)
(7)测试验证:

1.浏览器方式:在火狐浏览器配置kerberos支持,kerberos用户登录,输入ip:端口/ui可以看到如下所示的界面。
image.png
2.curl的方式:通过kinit或者kinit -kt 的方式登录kerberos,curl --negotiate -u: 'http://ip:8998/sessions'访问

常见问题

401问题:查看kerberos是否登录,或者使用了不支持kerberos的浏览器,或者ip访问

403问题:如果出现403问题查看用户是否过期,是否使用代理,在HTTP时是否使用HTTP/主机的形式。

其他问题:修改日志级别为debug模式:修改conf/log4j.propertieslog4j.rootCategory=DEBUG, console
再通过日志和源码查看问题所在。