본문 바로가기
빅데이터/hdfs

[hdfs] webhdfs에 요청을 보냈을 때 Operation category READ is not supported in state standby. Visit https://s.apache.org/sbnn-error 오류 처리

by hs_seo 2021. 7. 8.

HA 구성 된 HDFS에 webhdfs 로 요청을 보냈을 때 스탠바이(standby) 상태의 노드가 이런 응답을 보낼 때가 있습니다.

 

HA 구성된 HDFS는 두 개의 HDFS가 각 active, standby 상태로 운영됩니다. 그런데 standby 상태의 노드에 조회 요청을 하면 오류가 발생합니다.

 

# 상태 확인 
$ hdfs haadmin -getAllServiceState
host1:8020                   active
host2:8020                   standby

# 데이터 조회 오류 
$ curl --negotiate -u: -sS -L -X GET -k "https://host2:50470/webhdfs/v1/?op=GETFILESTATUS&user.name=hdfs"
{"RemoteException":{"exception":"StandbyException","javaClassName":"org.apache.hadoop.ipc.StandbyException","message":"Operation category READ is not supported in state standby. Visit https://s.apache.org/sbnn-error"}}

 

이 문제의 원인은 HDFS 상에서 standby 상태의 네임노드는 명령을 처리하지 않도록 하기 때문입니다. Git 에서 확인해 보면 알 수 있습니다. 설정을 통해 이 부분을 체크하지 않도록 할 수도 있지만 소스코드에 테스트 모드일 때만 이 부분을 해제하라고 되어 있습니다.

 

 

네임노드는 액티브 상태의 노드는 현재 디렉토리 구조를 정확하게 알고 있지만, 스탠바이 상태의 노드는 네임노드와 데이터 노드의 리포트를 받기 전에는 정확한 상태를 알 수 없기 때문에 그렇게 되어 있다고 생각됩니다. 그래서 설정이 있음에도 hdfs-default.xml 에도 빠져 있습니다. 하둡 3.4 부터는 hdfs-default.xml 에도 추가 되었다고 합니다.

 

https://issues.apache.org/jira/browse/HDFS-15356

 

[HDFS-15356] Unify configuration `dfs.ha.allow.stale.reads` to DFSConfigKeys - ASF JIRA

Unify to Define configuration key `dfs.ha.allow.stale.reads` in DFSConfigKeys and give the default value and notice at hdfs-default.xml.

issues.apache.org

 

결론

dfs.ha.allow.stale.reads 설정을 통해 문제를 해결할 수 있지만, 현재 상태가 최신이 아닐 수도 있다는 것을 감안해야 한다.

반응형