discover notebook的pyspark解释器执行报错

  其他使用报错, 使用报错
内容纲要

问题描述


客户通过discover-notebook中的%spark.pyspark解释器,执行报错,报错内容见截图

file

解决方法


1. /var/log/discoverX/interpreter.sh-XXX.log日志报错Only one of –proxy-user or –principal can be provided

++ /usr/lib/discover/bin/spark-submit --class org.apache.zeppelin.interpreter.remote.RemoteInterpreterServer --driver-class-path ':/usr/lib/notebook//interpreter/spark/*:/usr/lib/notebook//lib/interpreter/*::/usr/lib/notebook//interpreter/spark/zeppelin-spark_2.11-0.8.0-SNAPSHOT.jar:/etc/yarn1/conf' --driver-java-options ' -Dfile.encoding=UTF-8 -Dlog4j.configuration=file:///etc/discover1/conf/notebook/log4j.properties -Dzeppelin.log.file=/var/log/discover1/zeppelin-interpreter-spark-gaopan--nari-08.log' --keytab /home/gaopan/.keytab --principal gaopan@TDH --master 'local[*]' --conf spark.yarn.dist.archives=/usr/lib/discover/R/lib/sparkr.zip --conf spark.app.name=discover1-notebook --proxy-user gaopan /usr/lib/notebook//interpreter/spark/zeppelin-spark_2.11-0.8.0-SNAPSHOT.jar 10.238.0.87 10000 :
Error: Only one of --proxy-user or --principal can be provided.
Run with --help for usage help or --verbose for debug output

Error: Only one of --proxy-user or --principal can be provided. 该报错为 -keytab--principalproxy-user不能共存的问题,
需要到manager节点修改/var/lib/transwarp-manager/master/content/meta/services/DISCOVER/transwarp-X.X.X-final/templates/zeppelin-env.sh(注意这里需要到对应discover镜像版本的目录),添加如下一行

export ZEPPELIN_IMPERSONATE_SPARK_PROXY_USER=false

然后discover组件重新关闭、开启kerberos安全,/etc/discover1/conf/notebook/zeppelin-env.sh 便会刷新。

2. 再次执行,报错提示keytab does not exists

Keytab file: /home/crm/.keytab does not exists

需要到notebook的容器内修改/usr/lib/notebook/bin/interpreter.sh,位置大概在234行左右,

/home/${ZEPPELIN_IMPERSONATE_USER}/.keytab --principal ${ZEPPELIN_IMPERSONATE_USER}@${TDH_REALM}

建议修改为
/etc/discover1/conf/${ZEPPELIN_IMPERSONATE_USER}.keytab

选择/etc/discover1/conf/这个持久化目录作为keytab文件的存储目录。

然后,将guardian页面下载的对应租户(notebook登陆租户)的keytab文件,放到/etc/discover1/conf/目录下

注意!
这里使用的keytab文件统一是由guardian的租户页面进行下载的,页面下载的方式生成的keytab文件是不包含hostname的,所以在interpreter.sh脚本中我们固话成${ZEPPELIN_IMPERSONATE_USER}@${TDH_REALM}的格式。

discover租户在这里会比较特殊,discover组件关闭、开启kerberos时会重新生成/etc/discover1/conf/discover.keytab。而这个principal是带hostname的格式,所以需要从guardian页面下载使用,要尤其注意!

3. 再次验证,问题解决

步骤2修改的是容器内的非持久化目录,所以需做镜像持久化动作。

file

这篇文章对您有帮助吗?

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

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

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

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