// keytab OK
[root@server06]# kinit -V -k -t hdfs.keytab hdfs/server06@EXAMPLE.COM
Authenticated to Kerberos v5
// port check OK
[root@server06]# nc kdc1 -v -z -u 88
Connection to kdc1 88 port [udp/kerberos] succeeded!
위처럼 Hadoop에 Kerberos 인증을 붙이기 위해 노드에 맞는 principal을 생성하고 keytab 파일을 만들고,
해당 keytab 파일로 kinit 도 해보고 포트 열려 있는 것도 확인된 상태인데,
막상 hdfs-site.xml 에 적용하고 시작해보면 아래와 같은 로그를 남기면서 실패하는 경우가 발생.
2015-04-20 10:40:00,370 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Exception in secureMain
java.io.IOException: Login failure for hdfs/server06@EXAMPLE.COM from keytab /home/hadoop/etc/hadoop/hdfs.keytab: javax.security.auth.login.LoginException: Receive timed out
구글링을 해보니 Kerberos 통신을 UDP가 아니라 TCP로 하도록 설정하면 됨. (원인은 모르겠음..;)
아래처럼 /etc/krb5.conf 의 libdefaults 항목에 udp_preference_limit = 1 한 줄 추가해주면 됨.
[libdefaults]
udp_preference_limit = 1
'Hadoop' 카테고리의 다른 글
[Hadoop] Zookeeper - Kerberos 보안설정 (0) | 2015.04.20 |
---|---|
[Hadoop] Kerberos가 -norandkey 옵션을 지원하지 않는 버전일 경우 (0) | 2015.04.20 |
[Hadoop] HDFS Federation + NameNodeHA (2) | 2015.04.14 |
[Hadoop] 1.0.0 -> 2.6.0 업그레이드 (0) | 2015.04.08 |
[Hadoop] HDFS - Short Circuit Local Reads (0) | 2015.04.02 |