<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Kerberos on EUB's second brain</title><link>https://eubnara.github.io/ko/tags/kerberos/</link><description>Recent content in Kerberos on EUB's second brain</description><generator>Hugo -- 0.162.1</generator><language>ko-kr</language><lastBuildDate>Sun, 02 Jul 2023 18:48:00 +0900</lastBuildDate><atom:link href="https://eubnara.github.io/ko/tags/kerberos/index.xml" rel="self" type="application/rss+xml"/><item><title>krb5.conf의 "rdns = false"가 Hadoop 생태계에서 동작하지 않는 사례</title><link>https://eubnara.github.io/ko/computer-science/hadoop/rdns-false-not-work/</link><pubDate>Sun, 02 Jul 2023 18:48:00 +0900</pubDate><guid>https://eubnara.github.io/ko/computer-science/hadoop/rdns-false-not-work/</guid><description>&lt;p&gt;&lt;a href="https://web.mit.edu/kerberos/krb5-1.13/doc/admin/princ_dns.html"&gt;https://web.mit.edu/kerberos/krb5-1.13/doc/admin/princ_dns.html&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;운영 체제 버그로 인해 rdns = false 설정이 reverse DNS lookup을 비활성화하지 못할 수 있다. 일부 GNU libc 버전의 getaddrinfo()는 필요하지 않은 경우에도 PTR 레코드를 조회하는 버그가 있다. MIT Kerberos 릴리스 krb5-1.10.2 이상 및 krb5-1.9.x 시리즈(krb5-1.9.4 이상)에는 이 문제에 대한 해결 방법이 포함되어 있다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Hadoop 생태계에서 krb5.conf의 &amp;ldquo;rdns = false&amp;quot;가 적용되지 않는 경우가 있다. &lt;code&gt;/etc/hosts&lt;/code&gt;를 수정하거나 PTR 레코드를 등록하여 해결할 수 있다.&lt;/p&gt;
&lt;h1 id="1-hivemetastoreclient"&gt;1. HiveMetaStoreClient&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://github.com/apache/hive/blob/rel/release-3.1.3/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java#L246"&gt;https://github.com/apache/hive/blob/rel/release-3.1.3/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java#L246&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; (uriResolverHook &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;null&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; metastoreURIArray.&lt;span style="color:#a6e22e"&gt;addAll&lt;/span&gt;(uriResolverHook.&lt;span style="color:#a6e22e"&gt;resolveURI&lt;/span&gt;(tmpUri));
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;} &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; metastoreURIArray.&lt;span style="color:#a6e22e"&gt;add&lt;/span&gt;(&lt;span style="color:#66d9ef"&gt;new&lt;/span&gt; URI(
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; tmpUri.&lt;span style="color:#a6e22e"&gt;getScheme&lt;/span&gt;(),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; tmpUri.&lt;span style="color:#a6e22e"&gt;getUserInfo&lt;/span&gt;(),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; HadoopThriftAuthBridge.&lt;span style="color:#a6e22e"&gt;getBridge&lt;/span&gt;().&lt;span style="color:#a6e22e"&gt;getCanonicalHostName&lt;/span&gt;(tmpUri.&lt;span style="color:#a6e22e"&gt;getHost&lt;/span&gt;()),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; tmpUri.&lt;span style="color:#a6e22e"&gt;getPort&lt;/span&gt;(),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; tmpUri.&lt;span style="color:#a6e22e"&gt;getPath&lt;/span&gt;(),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; tmpUri.&lt;span style="color:#a6e22e"&gt;getQuery&lt;/span&gt;(),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; tmpUri.&lt;span style="color:#a6e22e"&gt;getFragment&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ));
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;metastore.thrift.uris&lt;/code&gt; 또는 &lt;code&gt;hive.metastore.uris&lt;/code&gt;에서 canonical hostname을 확인하는 로직이 있다. 해결된 hostname이 원하는 대로 나오지 않는다면 다음 가지 해결 방법이 있다.&lt;/p&gt;</description></item></channel></rss>