https://web.mit.edu/kerberos/krb5-1.13/doc/admin/princ_dns.html

운영 체제 버그로 인해 rdns = false 설정이 reverse DNS lookup을 비활성화하지 못할 수 있다. 일부 GNU libc 버전의 getaddrinfo()는 필요하지 않은 경우에도 PTR 레코드를 조회하는 버그가 있다. MIT Kerberos 릴리스 krb5-1.10.2 이상 및 krb5-1.9.x 시리즈(krb5-1.9.4 이상)에는 이 문제에 대한 해결 방법이 포함되어 있다.

Hadoop 생태계에서 krb5.conf의 “rdns = false"가 적용되지 않는 경우가 있다. /etc/hosts를 수정하거나 PTR 레코드를 등록하여 해결할 수 있다.

1. HiveMetaStoreClient

https://github.com/apache/hive/blob/rel/release-3.1.3/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java#L246

if (uriResolverHook != null) {
  metastoreURIArray.addAll(uriResolverHook.resolveURI(tmpUri));
} else {
  metastoreURIArray.add(new URI(
          tmpUri.getScheme(),
          tmpUri.getUserInfo(),
          HadoopThriftAuthBridge.getBridge().getCanonicalHostName(tmpUri.getHost()),
          tmpUri.getPort(),
          tmpUri.getPath(),
          tmpUri.getQuery(),
          tmpUri.getFragment()
  ));
}

metastore.thrift.uris 또는 hive.metastore.uris에서 canonical hostname을 확인하는 로직이 있다. 해결된 hostname이 원하는 대로 나오지 않는다면 다음 가지 해결 방법이 있다.

2. KuduClient Java lib

PTR 레코드를 등록하거나 KUDU-3415 해결을 시도한다.

3. HBase client

hbase-site.xml에 다음 설정을 추가한다:

hbase.unsafe.client.kerberos.hostname.disable.reversedns=true

hbase_reversedns

참고