NameNode 웹 UI 의 Browse the file system 화면에서 목록이 뜨지 않고 다음과 같은 메시지가 나온다.
Permission denied: ... when trying to open /webhdfs/v1/?op=LISTSTATUS
java.lang.IllegalArgumentException: newLimit > capacity: (84 > 83)
앞부분은 권한 문제다. 웹 UI 는 브라우저 사용자를 그대로 쓰지 않고 dfs.web.ugi 또는 인증 설정에 따라 정해진 사용자로 WebHDFS 를 호출한다. 그 사용자에게 대상 경로 읽기 권한이 없으면 목록이 거부된다.
hdfs dfs -ls -d /
hdfs dfs -getfacl /
Kerberos 가 켜진 클러스터라면 브라우저가 SPNEGO 로 인증해야 한다. 인증되지 않은 접근은 익명 사용자로 처리돼 거부된다.
뒷부분 newLimit > capacity 는 권한과 무관한 버퍼 관련 예외다. 바이트 버퍼의 한계값을 용량보다 크게 잡으려다 난 오류이며, 응답을 직렬화하는 과정에서 발생한다. 디스크 용량 부족 때문이라는 설명이 돌아다니지만 근거가 없다.
hdfs dfsadmin -safemode get
hdfs dfsadmin -report | head -20
curl -i "http://namenode01:9870/webhdfs/v1/?op=LISTSTATUS&user.name=hdfs"
kinit -kt /etc/security/keytabs/hdfs.keytab hdfs@KRB.EXAMPLE.NET
curl -i --negotiate -u : "http://namenode01:9870/webhdfs/v1/?op=LISTSTATUS"
curl 로는 정상인데 UI 만 실패하면 브라우저 인증이나 UI 정적 자원 문제다. curl 도 같은 예외를 돌려주면 서버 쪽 문제다. NameNode 로그에서 전체 스택 트레이스를 확보한다.
grep -A 30 'newLimit' /var/log/hadoop-hdfs/hadoop-hdfs-namenode-*.log | head -60
원본 대화에서는 원인을 특정하지 못했다. 권한 확인과 용량 점검 수준의 조언만 오갔고 실제 해결 여부가 확인되지 않았다. newLimit > capacity 는 특정 Hadoop 버전의 알려진 결함일 가능성이 있으므로, 재현되면 정확한 버전과 전체 스택 트레이스를 확보해 해당 버전의 이슈 트래커에서 대조하는 편이 빠르다. 우회책으로는 웹 UI 대신 CLI 또는 HttpFS 를 쓴다.