2014-10-07 4 views
5

Kerberos를 사용하여 HDP2 Hadoop 클러스터를 보호하려고합니다.WebHDFS가 안전한 hadoop 클러스터에서 작동하지 않습니다.

지금까지 Hdfs, Hive, Hbase, Hue Beeswax 및 색조 작업/작업 브라우저가 제대로 작동하고 있습니다. 그러나 색조의 파일 브라우저가 작동하지 않는, 그것은 응답 :

WebHdfsException at /filebrowser/ 
AccessControlException: SIMPLE authentication is not enabled. Available:[TOKEN, KERBEROS] (error 500) 
Request Method: GET 
Request URL: http://bt1svlmy:8000/filebrowser/ 
Django Version: 1.2.3 
Exception Type: WebHdfsException 
Exception Value:  
AccessControlException: SIMPLE authentication is not enabled. Available:[TOKEN, KERBEROS] (error 500) 
Exception Location: /usr/lib/hue/desktop/libs/hadoop/src/hadoop/fs/webhdfs.py in _stats, line 208 
Python Executable: /usr/bin/python2.6 
Python Version: 2.6.6 
(...) 

hue.ini 파일이 설정된 모든 security_enabled=true 및 기타 관련 매개 변수로 구성되어 있습니다.


저는 WebHDFS에 문제가 있다고 생각합니다.

나는 http://hadoop.apache.org/docs/r1.0.4/webhdfs.html#Authentication

curl -i --negotiate -L -u : "http://172.19.115.50:14000/webhdfs/v1/filetoread?op=OPEN" 

답변에 주어진 컬 명령을 시도 :

HTTP/1.1 403 Forbidden 
Server: Apache-Coyote/1.1 
Set-Cookie: hadoop.auth=; Path=/; Expires=Thu, 01-Jan-1970 00:00:00 GMT; HttpOnly 
Content-Type: text/html;charset=utf-8 
Content-Length: 1027 
Date: Wed, 08 Oct 2014 06:55:51 GMT 

<html><head><title>Apache Tomcat/6.0.37 - Error report</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> </head><body><h1>HTTP Status 403 - Anonymous requests are disallowed</h1><HR size="1" noshade="noshade"><p><b>type</b> Status report</p><p><b>message</b> <u>Anonymous requests are disallowed</u></p><p><b>description</b> <u>Access to the specified resource has been forbidden.</u></p><HR size="1" noshade="noshade"><h3>Apache Tomcat/6.0.37</h3></body></html> 

그리고 난 다음 컬 요청에 사용자를 추가하여 색조의 오류 메시지를 재현 할 수 :

curl --negotiate -i -L -u: "http://172.19.115.50:14000/webhdfs/v1/filetoread?op=OPEN&user.name=theuser" 

답변 :

HTTP/1.1 500 Internal Server Error 
Server: Apache-Coyote/1.1 
Set-Cookie: hadoop.auth=u=theuser&p=theuser&t=simple&e=1412735529027&s=rQAfgMdExsQjx6N8cQ10JKWb2kM=; Path=/; Expires=Wed, 08-Oct-2014 02:32:09 GMT; HttpOnly 
Content-Type: application/json 
Transfer-Encoding: chunked 
Date: Tue, 07 Oct 2014 16:32:09 GMT 
Connection: close 

{"RemoteException":{"message":"SIMPLE authentication is not enabled. Available:[TOKEN, KERBEROS]","exception":"AccessControlException","javaClassName":"org.apache.hadoop.security.AccessControlException"}} 

WebHDFS와 컬링 사이에 Kerberos 협상이없는 것으로 보입니다.

HTTP/1.1 401 UnauthorizedContent-Type: text/html; charset=utf-8 
WWW-Authenticate: Negotiate 
Content-Length: 0 
Server: Jetty(6.1.26) 
HTTP/1.1 307 TEMPORARY_REDIRECT 
Content-Type: application/octet-stream 
Expires: Thu, 01-Jan-1970 00:00:00 GMT 
Set-Cookie: hadoop.auth="u=exampleuser&[email protected]&t=kerberos&e=1375144834763&s=iY52iRvjuuoZ5iYG8G5g12O2Vwo=";Path=/ 
Location: http://hadoopnamenode.mycompany.com:1006/webhdfs/v1/user/release/docexample/test.txt?op=OPEN&delegation=JAAHcmVsZWFzZQdyZWxlYXNlAIoBQCrfpdGKAUBO7CnRju3TbBSlID_osB658jfGfRpEt8-u9WHymRJXRUJIREZTIGRlbGVnYXRpb24SMTAuMjAuMTAwLjkxOjUwMDcw&offset=0 
Content-Length: 0 
Server: Jetty(6.1.26) 
HTTP/1.1 200 OK 
Content-Type: application/octet-stream 
Content-Length: 16 
Server: Jetty(6.1.26) 
A|1|2|3 
B|4|5|6 

잘못 갈 수 어떤 생각 :

내가 좋아하는 뭔가를 기다리고 있었다? 나는 모든 노드에 내 hdfs-site.xml에 있나요

: 당신이 WebHDFS에 액세스하지 않는 것처럼

<property> 
    <name>dfs.webhdfs.enabled</name> 
    <value>true</value> 
</property> 

<property> 
    <name>dfs.web.authentication.kerberos.principal</name> 
    <value>HTTP/[email protected]</value> 
</property> 

<property> 
    <name>dfs.web.authentication.kerberos.keytab</name> 
    <value>/etc/hadoop/conf/HTTP.keytab</value> <!-- path to the HTTP keytab --> 
</property> 
+0

안녕하세요 Arnaud, Thats cool; Kerberos를 사용하여 hadoop 환경을 보호하려고합니다. 좀 더 자세하게 선택한 과정이나 방법을 알려주시겠습니까? –

+1

글쎄,이 포럼에 대한 긴 대답, 너무 오래 것입니다. 요약하면, 어딘가에 KDC를 설치하고, hadoop 시스템 수퍼 유저 및 자격 증명을 만들고, 사용자 식별을 위해 기존 엔터프라이즈 LDAP 시스템과 KDC의 상호 연결에 대해 생각해야합니다. 나는 hadoop 클러스터를 실제로 구성하기 위해 Ambari + 일부 수작업 쉘 스크립트를 사용했습니다. http://ambari.apache.org/current/installing-hadoop-using-ambari/content/ambari-kerb.html 세부 정보를 제공합니다. – Arnaud

+0

Ok Arnaud, 한번 보죠. 2 대의 우분투 시스템에서 작동하는 hadoop 클러스터를 사용하고 Ambari 설치로 시작하십시오. –

답변

3

은 (기본 포트 = 50070)하지만 HttpFS 보이는 "일반"웹 애플리케이션은 (기본 포트 = 14000) 같은 방식으로 보안되지 않습니다.

WebHDFS URL은 종종 http://namenode:50070/webhdfs/v1과 유사합니다. 해당 매개 변수 (WebHDFS는 HttpFS 이상 권장 됨)로 hue.ini를 수정하려고 시도하십시오.

+0

고마워, 그게 내 문제를 해결! – Arnaud

+1

그러나 활성/대기 구성이 있고 어느 것이 namenode인지를 확인할 수 없습니다 ... 어떻게 처리 할 수 ​​있습니까? – Arnaud

+1

Cloudera doc : "WebHDFS와 HttpFS 모두 HTTP REST API를 사용하여 상호 운용이 가능하지만 Hue는 둘 중 하나를 사용하도록 구성해야합니다 .HDFS HA를 배포하려면 HttpFS를 사용해야합니다." (http : //www.cloudera.com/content/cloudera/ko/documentation/cdh4/v4-2-0/CDH4-Installation-Guide/cdh4ig_topic_15_4.html) – Arnaud

관련 문제