[HADOOP] Kerberos 화 된 Hadoop 클러스터와 통신을 시도하는 동안 "클라이언트와 서버간에 공통된 보호 계층이 없습니다"
HADOOPKerberos 화 된 Hadoop 클러스터와 통신을 시도하는 동안 "클라이언트와 서버간에 공통된 보호 계층이 없습니다"
나는 kerberized Hadoop 클러스터 (CDH 5.3 / HDFS 2.5.0) 프로그래밍 방식으로 통신을 위해 노력하고있어.
유효한 Kerberos 토큰이 클라이언트쪽에 있습니다. 하지만 아래와 같은 오류가 발생합니다. "클라이언트와 서버 사이에 공통된 보호 계층이 없습니다".
이 오류는 무엇을 의미하며이를 해결하거나 해결할 수있는 방법이 있습니까?
이 것이 HDFS-5688과 관련이 있습니까? 티켓은 "hadoop.rpc.protection"속성을 "인증"(예 : this)과 같이 설정해야 함을 암시하는 것으로 보입니다.
클러스터의 모든 서버에서이를 설정해야하고 클러스터가 반송되어야합니까? 나는 클러스터에 쉽게 접근 할 수 없기 때문에 'hadoop.rpc.protection'이 실제적인 원인인지를 이해할 필요가있다. 적어도 'core-default.xml'문서에 따르면 '인증'은 기본적으로 사용되는 값이어야합니다.
java.io.IOException : 로컬 예외에 실패했습니다 : java.io.IOException : server1 / server1.acme.net@xxx.acme.net에 대한 연결을 server2.acme.net/10.XX.XXX.XXX로 설정할 수 없습니다. : 8020; 호스트 세부 정보 : 로컬 호스트 : "some-host.acme.net/168.XX.XXX.XX"; 대상 호스트 : "server2.acme.net": 8020;
at org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:764)
at org.apache.hadoop.ipc.Client.call(Client.java:1415)
at org.apache.hadoop.ipc.Client.call(Client.java:1364)
at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:206)
at com.sun.proxy.$Proxy24.getFileInfo(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:187)
at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:102)
at com.sun.proxy.$Proxy24.getFileInfo(Unknown Source)
at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.getFileInfo(ClientNamenodeProtocolTranslatorPB.java:707)
at org.apache.hadoop.hdfs.DFSClient.getFileInfo(DFSClient.java:1785)
at org.apache.hadoop.hdfs.DistributedFileSystem$17.doCall(DistributedFileSystem.java:1068)
at org.apache.hadoop.hdfs.DistributedFileSystem$17.doCall(DistributedFileSystem.java:1064)
at org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)
at org.apache.hadoop.hdfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:1064)
at org.apache.hadoop.fs.FileSystem.exists(FileSystem.java:1398)
... 11 more
원인 : java.io.IOException : principal1/server1.acme.net@xxx.acme.net에 대한 연결을 server2.acme.net/10.XX.XXX.XXX:8020에 설정할 수 없습니다.
at org.apache.hadoop.ipc.Client$Connection$1.run(Client.java:671)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1614)
at org.apache.hadoop.ipc.Client$Connection.handleSaslConnectionFailure(Client.java:642)
at org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:725)
at org.apache.hadoop.ipc.Client$Connection.access$2800(Client.java:367)
at org.apache.hadoop.ipc.Client.getConnection(Client.java:1463)
at org.apache.hadoop.ipc.Client.call(Client.java:1382)
... 31 more
원인 : javax.security.sasl.SaslException : 클라이언트와 서버간에 공통적 인 보호 계층이 없음
at com.sun.security.sasl.gsskerb.GssKrb5Client.doFinalHandshake(GssKrb5Client.java:251)
at com.sun.security.sasl.gsskerb.GssKrb5Client.evaluateChallenge(GssKrb5Client.java:186)
at org.apache.hadoop.security.SaslRpcClient.saslEvaluateToken(SaslRpcClient.java:483)
at org.apache.hadoop.security.SaslRpcClient.saslConnect(SaslRpcClient.java:427)
at org.apache.hadoop.ipc.Client$Connection.setupSaslConnection(Client.java:552)
at org.apache.hadoop.ipc.Client$Connection.access$1800(Client.java:367)
at org.apache.hadoop.ipc.Client$Connection$2.run(Client.java:717)
at org.apache.hadoop.ipc.Client$Connection$2.run(Client.java:713)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1614)
at org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:712)
... 34 more
해결법
-
==============================
1.SASL에서 오는 "클라이언트와 서버 간의 공통된 보호가 없음"오류를 수정하려면 "hadoop.rpc.protection"을 클러스터의 서버 측에 설정된 것과 동일한 값으로 설정해야했습니다. 이 경우에는 "개인 정보"가 발생했습니다.
SASL에서 오는 "클라이언트와 서버 간의 공통된 보호가 없음"오류를 수정하려면 "hadoop.rpc.protection"을 클러스터의 서버 측에 설정된 것과 동일한 값으로 설정해야했습니다. 이 경우에는 "개인 정보"가 발생했습니다.
또한 클러스터는 HA 용으로 구성되어 있으므로 HDFS URI ( "fs.defaultFS") 및 "dfs.namenode.kerberos.principal"속성에 사용할 올바른 호스트 이름을 선택해야합니다.
Configuration config = new Configuration(); config.set("fs.defaultFS", "hdfs://host1.acme.com:8020"); config.set("hadoop.security.authentication", "kerberos"); config.set("hadoop.rpc.protection", "privacy"); // Need this or we get the error "Server has invalid Kerberos principal": config.set("dfs.namenode.kerberos.principal", "hdfs/host1.acme.com@ACME.DYN.ROOT.NET");
from https://stackoverflow.com/questions/37714669/no-common-protection-layer-between-client-and-server-while-trying-to-communica by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] Hadoop과 같은 분산 컴퓨팅을 사용하여 이미지를 Jpeg2000으로 인코딩 (0) | 2019.08.03 |
---|---|
[HADOOP] hadoop map-reduce 작업에서 파일을 어떻게 만들 수 있습니까? (0) | 2019.08.03 |
[HADOOP] 여러 열의 pyspark 조건 및 새 열 반환 (0) | 2019.08.03 |
[HADOOP] HADOOP - 1.2.1 Stable의 단어 수 계산 예 (0) | 2019.08.03 |
[HADOOP] 태스크가 종료되면 Hadoop이 HDFS에서 임시 디렉토리를 삭제하지 않도록 알려주는 방법은 무엇입니까? (0) | 2019.08.03 |