1.文档编写目的
本篇文章主要介绍如何使用解决CDP7.1.6的Hue中的Spark Notebook与Livy无法进行集成的问题。
- 文档概述
1.Spark Notebook集成Livy
2.验证
3.总结
- 测试环境
1.操作系统Redhat7.6
2.CDP7.1.6
3.使用root用户操作
4.集群已启用Kerberos
2.修改配置
1.修改Hue的源码(Hue Server节点的都进行修改)
代码语言:javascript复制[root@c1 ~]# cd /opt/cloudera/parcels/CDH/lib/hue/desktop/core/src/desktop/lib/rest/
[root@c1 rest]# vim resource.py
因为kind 类型只支持spark/pyspark/sparkr/sql,所以在该文件的1045行后添加如下代码
代码语言:javascript复制if isinstance(data,str):
data=data.replace('sparksql', 'sql')
LOG.exception('--------tpl data %s' % data)
LOG.exception('--------tpl data type %s' % type(data))
2.修改Livy的配置
在Livy的配置页面搜索livy_spnego_enabled,关闭Livy的HTTP Kerberos
3.启用Livy的用户模拟功能
在Livy的配置页面搜索livy.impersonation.enabled
4.修改Hue配置
5.在Hue的配置中搜索hue_server_hue_safety_valve,在配置中添加如下内容
代码语言:javascript复制[desktop]
app_blacklist=zookeeper,oozie,jobsub,pig,pig,sqoop,security
[spark]
livy_server_host=c1.liuhao.com
livy_server_port=8998
livy_server_session_kind=yarn
sql_server_host=c1.liuhao.com
#sql_server_port 需要的原因是sparksql 需要使用该端口
sql_server_port=10090
#security_enabled=true
[notebook]
show_notebooks=true
enable_external_statements=true
enable_batch_execute=true
[[interpreters]]
# Define the name and how to connect and execute the language.
[[[hive]]]
# The name of the snippet.
name=Hive
# The backend connection to use to communicate with the server.
interface=hiveserver2
[[[impala]]]
name=Impala
interface=hiveserver2
[[[sparksql]]]
name=SparkSql
interface=livy
[[[spark]]]
name=Spark
interface=livy
[[[pyspark]]]
name=PySpark
interface=livy
[[[r]]]
name=R
interface=livy
[[[jar]]]
name=Spark Submit Jar
interface=livy-batch
6.修改Hue的配置
在Hue的配置中搜索hive-site.xml,添加如下配置设置访问hive的方式为Kerberos
<property><name>hive.server2.authentication</name><value>KERBEROS</value></property>
7.重启过时服务
3.验证
进入Hue的Web UI页面,执行一条Spark SQL语句
4.总结
1.Hue本身是模拟用户来执行的, 再通过安全认证的方式访问Livy再去让Livy模拟用户,这样就会导致一个问题, Livy只会认为你是Hue用户,而又要让Hue用户去模拟其他的用户,最终提示模拟不了的问题,所以要关闭Livy的HTTP Kerberos认证。