2015-11-23 78 views
2

由于Kerberos安全性,我无法从浏览器访问WebHDFS。谁能帮我这个?从.Net应用程序(控制台)访问kerberos保护的webhdfs

下面是在浏览器中的错误“HTTP://****.****/webhdfs/v1/prod/snapshot_rpx/archive OP = LISTSTATUS & user.name =我们”

HTTP错误401

访问/ webhdfs/v1/prod/snapshot_rpx/archive时出现问题。原因:需要验证

Net代码用于做出请求到这个URL

HttpWebRequest http = (HttpWebRequest)WebRequest.Create(requestUri); 
    http.Timeout = timeout; 
    http.ContentType = contentType; 

    string responseData = string.Empty; 
    using (WebResponse response = http.GetResponse()) 
    { 
     Stream stream = response.GetResponseStream(); 
     StreamReader sr = new StreamReader(stream); 
     responseData = sr.ReadToEnd(); 
    } 

    return responseData; 

回答

0

[重要声明]此答案适用于使用Linux KDC(典型MIT Kerberos的)平纹Hadoop集群。对于Cloudera的集群依靠Microsoft Active Directory的KDC,任何.NET HTTP连接器可以使用Microsoft SSPI协议实现SPNEGO(SOOO无聊...)

~~~~

我知道要访问的唯一途径从微软的世界WebHDFS是丑陋和复杂的解决方法

  • 安装的MIT Kerberos的Windows实用程序的计算机上,将 实际连接到HDFS,再加上适当的Kerberos5的conf IG文件
  • 确保您的JVM有“无限强度加密” 安全策略安装(单独下载,杜)
  • 开发一个小的Java工具连接到WebHDFS服务(按 名称节点)使用SPNEGOGSSAPI Kerberos票据

选项1:创建票通GUI,并告诉Java在默认缓存中提取

选项2:告诉Java自动创建自己的票证,使用密钥表文件(必须在Linux上使用ktutil创建;在Windows包没有这样的实用程序),并忽略缓存

  • 使Java代码运行单个GET,检索HDFS代表团 令牌本次会议,然后转储令牌到stdout,然后退出
  • 让你的.NET代码运行Java程序,捕捉StdOut和 检索令牌
  • 连接到WebHDFS(NameNode的最终+重定向到DataNode)提供无SPNEGO, 但对URL插入令牌作为证据预认证

所以最终这是一个Java问题。设置一个可用的Kerberos配置非常棘手(参考“超出门限的疯狂”,关于Hadoop生态系统中Kerberos实现问题的当前参考站点)

+0

您是否介意分享您用于完成此任务的代码或参考? – Kalyan

+0

有没有其他人愿意为社区做贡献,谁有这项工作?我正在考虑选项2,但我正在考虑使用Java hadoop api生成委托令牌,而不是建议的GET操作。 – Kalyan

+0

嗯......如果你已经准备好了解Hadoop-for-Windows Java API,那么使用HDFS的REST API有什么意义呢?只需构建一个类似于“FTP客户端”的命令行“HDFS客户端”实用程序,并向其传输纯文本命令即可。 –

1

对延迟响应抱歉。 Apache Knox实际上可能会提供您正在寻找的解决方案。它将REST客户端从Hadoop集群本身的安全保护细节中解脱出来。群集可以随时从安全到不安全,客户端将以同样的方式验证到诺克斯网关。

现在的问题是您要如何确认诺克斯。典型的方法是通过HTTP基本身份验证对LDAP(可能是AD)。然而,还有其他认证/联盟提供商也允许其他机制。

基于标头的preauth SSO提供程序是一种体面的Web应用程序类型用例。请参阅:http://knox.apache.org/books/knox-0-7-0/user-guide.html#Preauthenticated+SSO+Provider

再加上应用程序和Apache诺克斯之间的SSL相互认证(http://knox.apache.org/books/knox-0-7-0/user-guide.html#Mutual+Authentication+with+SSL)这是利用诺克斯的作用,成为值得信赖的代理Hadoop的建立联盟成立于应用程序中的身份的有效途径。

即将发布的v0.8.0版本也引入了更多的SSO机制。

Hadoop REST客户端不需要知道关于Hadoop集群的很多细节,以便在Hadoop的灵活性允许移动服务或以不同方式启用安全性以使所有客户端中断时启用Hadoop集群。在每个浏览器上强制使用SPNEGO对许多人来说都是一个阻碍。 Apache Knox以REST API开发人员/消费者惯于使用的方式解决了这些问题。

相关问题