Tôi đang cố gắng bảo vệ cụm Hadoop HDP2 của mình bằng Kerberos.WebHDFS không hoạt động trên cụm an toàn hadoop
Cho đến nay, Hdf, Hive, HBase, Hue Beeswax và Hue Trình duyệt công việc/nhiệm vụ đang hoạt động bình thường; Tuy nhiên File Browser Huế không hoạt động, nó trả lời:
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
(...)
tập tin hue.ini
My được cấu hình với tất cả security_enabled=true
và các thông số liên quan thiết lập.
Tôi tin rằng sự cố xảy ra với WebHDFS.
Tôi đã thử các lệnh curl đưa ra tại 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"
câu trả lời:
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>
Và tôi có thể tái sản xuất thông báo lỗi Huế bằng cách thêm một người dùng với yêu cầu curl sau:
curl --negotiate -i -L -u: "http://172.19.115.50:14000/webhdfs/v1/filetoread?op=OPEN&user.name=theuser"
câu trả lời:
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"}}
Dường như không có thỏa thuận Kerberos giữa WebHDFS và curl.
Tôi đã chờ đợi một cái gì đó như:
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
Bất cứ ý tưởng gì có thể đã đi sai?
tôi có trong hdfs-site.xml
tôi trên mỗi nút:
<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>
Hi Arnaud, Thats cool; Tôi đang cố gắng bảo vệ môi trường hadoop bằng Kerberos. Bạn có thể cho tôi biết quy trình/cách bạn đã chọn chi tiết không? –
Vâng, đó sẽ là một câu trả lời dài, quá dài cho diễn đàn này. Tóm lại, bạn phải cài đặt một KDC ở đâu đó, tạo các superusers của hệ thống hadoop và các thông tin quan trọng, và suy nghĩ về việc kết nối KDC của bạn với hệ thống LDAP doanh nghiệp kế thừa của bạn để nhận dạng người dùng. Tôi đã sử dụng Ambari + một số kịch bản lệnh shell làm bằng tay để thực sự định cấu hình cụm hadoop; http://ambari.apache.org/current/installing-hadoop-using-ambari/content/ambari-kerb.html cung cấp cho bạn chi tiết. – Arnaud
Ok Arnaud, Hãy để tôi xem; Đang đi với một cụm hadoop làm việc trong 2 máy ubuntu và bắt đầu với cài đặt Ambari. –