Kerberos 를 켠 뒤 브라우저로 HttpFS 게이트웨이에 붙으니 이런 화면이 뜬다.
HTTP ERROR 403 java.lang.IllegalArgumentException: newLimit > capacity: (84 > 38)
URI: /
STATUS: 403
HttpFS 는 NameNode UI 나 Recon 처럼 브라우저로 둘러보는 페이지가 아니라 WebHDFS 호환 REST 게이트웨이다. 루트 / 는 Jetty 의 DefaultServlet 이 잡는데 디렉터리 리스팅이 꺼져 있고 welcome 파일도 없으므로 403 이 정상 응답이다. 쓸 엔드포인트는 따로 있다.
/webhdfs/v1/?op=LISTSTATUS
/webhdfs/v1/<volume>/<bucket>?op=LISTSTATUS
newLimit > capacity: (84 > 38) 은 java.nio.Buffer.limit(int) 가 던지는 예외로, Jetty 가 403 에러 페이지를 만드는 과정의 NIO 버퍼 처리에서 터진 부산물이다. 403 의 원인이 아니라 결과다.
curl 결과에 atlas · hbase · hive · user · warehouse 같은 디렉터리가 나온다면 그것은 HDFS 루트지 Ozone 이 아니다. Ozone 이라면 Volume · Bucket 구조가 나와야 한다.
| 게이트웨이 | 포트 | 응답 |
|---|---|---|
| HDFS HttpFS | 14000 | atlas, hbase, hive ... |
| Ozone HttpFS | 9778 | s3v, vol1 같은 볼륨 |
kinit -kt /etc/security/keytabs/ozone.keytab ozone/$(hostname -f)@REALM
curl --negotiate -u : "http://cdpbase1:9778/webhdfs/v1/?op=LISTSTATUS"
--negotiate -u : 는 SPNEGO 로 붙는다는 뜻이고 앞서 kinit 으로 티켓이 있어야 한다. 브라우저로 같은 URL 을 보려면 Chrome · Edge 에 SPNEGO 허용 목록(Windows 는 레지스트리 정책) 을 넣어야 한다. 단순 확인이 목적이라면 curl 이 빠르다.