通过knox连接火花ThriftServer

技术标签: apache-spark-sql  Kerberos.  Knox-Gateway.

我正在尝试通过kerberos固定的群集中通过knox连接到SparksQL ThriftServer(Spark 1.6.2)(Hadoop分布为HDP 2.4.2)。我们拥有相同的架构蜂巢,它正在运作正常。由于Spark使用相同的Thriftserver,我以为做同样的事情会琐碎,但事实上并非如此。

通过knox连接时,Spark ThriftServer抛出的错误是:

16/10/17 15:25:39 ERROR ThriftHttpServlet: Failed to authenticate with hive/_HOST kerberos principal
16/10/17 15:25:39 ERROR ThriftHttpServlet: Error: 
org.apache.hive.service.auth.HttpAuthenticationException: java.lang.reflect.UndeclaredThrowableException
at org.apache.hive.service.cli.thrift.ThriftHttpServlet.doKerberosAuth(ThriftHttpServlet.java:361)
at org.apache.hive.service.cli.thrift.ThriftHttpServlet.doPost(ThriftHttpServlet.java:136)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:755)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.spark-project.jetty.servlet.ServletHolder.handle(ServletHolder.java:684)
at org.spark-project.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:501)
at org.spark-project.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:229)
at org.spark-project.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
at org.spark-project.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
at org.spark-project.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
at org.spark-project.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
at org.spark-project.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
at org.spark-project.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.spark-project.jetty.server.Server.handle(Server.java:366)
at org.spark-project.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494)
at org.spark-project.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:982)
at org.spark-project.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1043)
at org.spark-project.jetty.http.HttpParser.parseNext(HttpParser.java:957)
at org.spark-project.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
at org.spark-project.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
at org.spark-project.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:667)
at org.spark-project.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
Caused by: java.lang.reflect.UndeclaredThrowableException
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1727)
at org.apache.hive.service.cli.thrift.ThriftHttpServlet.doKerberosAuth(ThriftHttpServlet.java:358)
... 24 more
Caused by: org.apache.hive.service.auth.HttpAuthenticationException: Authorization header received from the client is empty.
at org.apache.hive.service.cli.thrift.ThriftHttpServlet.getAuthHeader(ThriftHttpServlet.java:502)
at org.apache.hive.service.cli.thrift.ThriftHttpServlet.access$100(ThriftHttpServlet.java:68)
at org.apache.hive.service.cli.thrift.ThriftHttpServlet$HttpKerberosServerAction.run(ThriftHttpServlet.java:403)
at org.apache.hive.service.cli.thrift.ThriftHttpServlet$HttpKerberosServerAction.run(ThriftHttpServlet.java:366)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1709)
... 25 more

有人对此有任何想法以及如何解决它?

谢谢,Marco

看答案

就像在HiveServer2中,空客户端授权实际上可能是一个红鲱鱼。第一个HTTP请求没有标题,但通常在服务器上挑战SPNEGO挑战后发送。

我实际上并没有意识到SparkSQL Thrift服务器可以以同样的方式使用Hive可以是。您是否知道它是否有信任代理支持 - 就像在Hadoop的许多服务中实现?这是允许第三部分组件,例如Apache knox通过DOAS查询Param断言经过身份验证的用户名来代表其他用户行动。它还确保DOA来自IT信任的身份。在这种情况下,通过Kerberos / Spnego身份验证。

如果它没有对可信代理的支持,那么它将无法直接从框中工作。要么需要添加到SparkSQL Thrift服务器或为knox中为SparkSQL创建的自定义调度提供程序。自定义调度将允许我们按照SparkSQL预期传播用户身份。

希望这有用。

- 伦赛利


智能推荐

Oracle通过DBLink连接MySQL

一、概述         linux环境下,Oracle数据库通过DBLink远程连接MySQL数据库。 二、环境信息 1、Oracle     ①操作系统:Linux X86-64     ②数据库版本:11.2.0.4.0  ...

sqlserver连接oracle(通过ODBC)

折腾完access2007因为公司某个新的软件不支持2007,而且access2007超过2G就会慢,要找一个替代的产品,原先用一个很老的后面发现格式不行,所以决定用sqlserver2008.考虑到授权问题,我们选择的是express版本。 安装sqlserver和sqlserver SSMS工具,就是管理工具了。安装当中记得选择用户和配置密码。 安装oracle客户端。这里需要注意的就是,如果...

通过v*n实现远程连接

1.在桌面右下角处点击网络连接,打开“网络和共享中心”; 2.在弹出的“网络和共享中心”界面,点击“设置新连接或网络”,如下图: 3.在弹出的”设置新连接或网络”界面,点击“连接到工作区”,如下图: 4.如果之前本机已创建过v*n连接,将会出现以下界面: 让你选择是“...

通过XShell远程连接Ubuntu

一般情况下,安装好的Ubuntu系统中默认是只安装了openssh-client,此时只能通过此系统连接访问其他系统,但不具有让其他系统访问的权限。在终端查看ssh进程,输入ps -e|grep ssh,如果有安装openssh-client只会出现ssh -agent,不会出现sshd(因为博主已经安装openssh-server,所以会出现sshd)。 此时要想开放本机SSH服务以便其他系统登...

UltraEdit通过ssh远程连接

1.关闭UltraEdit。在UE安装的目录下,打开windows的DOS环境,进入UltraEdit安装目录,win10在安装目录处,可以shift+鼠标右键,在此处打开Powershell窗口: 2.输入命令: regsvr32.exe wodFtpDLX.dll 此时,会提示成功信息: 3.继续输入命令:regsvr32.exe wodTelnetDLX.ocx 同样,会提示成功信息 4.打...

猜你喜欢

Excel通过ODBC连接MySQL

下载ODBC 下载链接 ODBC下载 选择你安装的MySQL相应的版本,以及OS Version。 安装ODBC 安装过程中可能提示需要安装Visual Stdio之类的,按照提示进行安装。 连接上Mysql数据库 点击完成后开始进入连接MySQL界面,输入IP–>User–>Password之后,如果Database能够下框有选项,说明连接成功。 配置成功后 ...

网线接法

摄像头的8种颜色:橙、黄、绿、紫、灰、蓝、棕、白 分别对应双绞线的8种颜色:橙白、橙、绿白、蓝、蓝白、绿、棕白、棕 简化一点用网线的568B顺序分别对接就是:橙白(接橙色)、橙(接黄色)、绿白(接绿色)、蓝(接紫色)、蓝白(接灰色)、绿(接蓝色)、棕白(接棕色)、棕(接白色) 568A标准:绿白,绿,橙白,蓝,蓝白,橙,棕白,棕 橙绿蓝棕 排列好,先4-6交叉,再1-3、2-6 RJ-4...

SpringBoot打包成war包,部署到Tomcat并添加项目路径后,导致静态资源路径失效

静态资源访问失效,是应为其地址无法自动添加项目路径 以下model.html 以下index.html 以下index_1.html 以下controller.java 结果...

Hive配置日志文件并测试

配置日志并测试 进入到hive目录修改日志文件名称 在hive目录下创建logs目录 修改hive-log4j.properties配置文件hive.log.dir 把hive.log.dir=${java.io.tmpdir}/${user.name} 修改为 /opt/modules/hive-0.13.1/logs 退出hive 进入hive进行测试 进入 日志文件产生 在hive控制台打印...

cdh beeline配置hive-site.xml不生效解决记录

最近用beeline替代hive cli,发现之前在hive-site.xml 的 Hive 客户端高级配置代码段(安全阀)的配置项,beeline居然不生效,如下图所示,而hive cli是生效的 查看了执行机器上/etc/hive/conf/hive-site.xml文件,发现配置确实是修改了,一直以为是环境变量的原因,找了几个小时,网上也没相关解释,最后在hive-site.xml 的 Hi...

问答精选

Suppress default handling of Ctrl+O in Internet Explorer

I'm trying to suppress IE's default handling of Ctrl+O. I've got a onKeyDown handler which get's called, but even though I call event.cancelBubble and return false, the default File|Open command still...

Oracle SQL function problems

Recently i've picked up Oracle SQL, Right now i'm trying to write a function that later will be used in a view to generate a list. but for now im stuck on the function itself... The function makes use...

HTML : How to merge rowspan if have a looping?

I have a problem regarding of creating table. I want to do this: But I got this: I have tried everything and I'm realize that I have problem with the looping. I've tried to put @endforeach before <...

Which WPF Brush to use and how to create it

I have a WPF 3D application (C# .NET 4.0) that has a lot of 3D geometries. Now I need to color these geometries by applying a texture. The source for the texture is one large .PNG file like the follow...

CakePHP XAMPP Internet Explorer losing Session after 10 seconds

after filling the inputs in the view and clicking the submit button, the records gets saved just fine if I use Firefox. The same goes for IE if I'm quick enough. But when I wait 10 seconds, the POST d...

相关问题

相关文章

热门文章

推荐文章

相关标签

推荐问答