Hadoop/혁명 R 엔터프라이즈 환경에서는 kerberos 관련 Java 예외를 사용 하 여 mapreduce 작업을 실패할 수 있습니다.
옵션을 설정 합니다.
15/02/03 16시 59분: 05 경고 유틸리티 NativeCodeLoader: 해당 되는 경우... 플랫폼 hadoop 네이티브 라이브러리를 로드할 수 없습니다 기본 제공 java를 사용 하 여 클래스 디버그: allArgs = [-Dmapred.reduce.tasks=1, /user/RevoShare/a377683/EE594B467CDE4C988C3C3F7AF563DABB/.input, /user/RevoShare/a377683/EE594B467CDE4C988C3C3F7AF563DABB/IRO.iro, /user/RevoShare/a377683/AirlineDemoSmall / *, dojo3m20002.rtp1.hadoop.fmr.com, 8020, /usr/bin/Revoscript] 15/02/03 16시 59분: 09 hdfs 정보. DFSClient: a377683 HDFS_DELEGATION_TOKEN 토큰이 242420에서 만든 ha-hdfs:nameservice1 15/02/03 16시 59분: 09 정보 보안. TokenCache: dt hdfs://nameservice1;에 있어 종류: HDFS_DELEGATION_TOKEN, 서비스: ha-hdfs:nameservice1, Ident: (HDFS_DELEGATION_TOKEN 242420에 대 한 토큰 a377683) ...... 15/02/03 16시 59분: 25 mapreduce 정보. 작업: 맵 0% 0%를 줄일 15/02/03 16시 59분: 38 mapreduce 정보. 작업: 작업 Id: attempt_1422647534016_1760_m_000000_0, 상태: 실패 오류: java.io.IOException: R VM 종료 코드에서 끝났습니다: 1 출력: 스크립트를 시작합니다. [1] 참 $fileName [N A 1] $start [1] 0 $length [1] 0 15/02/03 16시 59분: 37 보안 경고. UserGroupInformation:로 PriviledgedActionException: a377683 cause:javax.security.sasl.SaslException (auth:KERBEROS): GSS 초기화에 실패 했습니다 [GSSException 때문에 생긴: 제공 되는 유효한 자격 증명이 없는 (메커니즘 수준: 모든 Kerberos tgt를 찾지 못했습니다)] 15/02/03 16시 59분: 37 ipc 경고 합니다. 클라이언트: 서버에 연결 하는 동안 발생 하 예외: javax.security.sasl.SaslException: GSS 초기화에 실패 했습니다 [GSSException 때문에 생긴: 제공 되는 유효한 자격 증명이 없는 (메커니즘 수준: 모든 Kerberos tgt를 찾지 못했습니다)] 15/02/03 16시 59분: 37 보안 경고. UserGroupInformation:로 PriviledgedActionException: a377683 (auth:KERBEROS) cause:java.io.IOException: javax.security.sasl.SaslException: GSS 초기화에 실패 했습니다 [GSSException 때문에 생긴: 제공 되는 유효한 자격 증명이 없는 (메커니즘 수준: 모든 Kerberos tgt를 찾지 못했습니다)] hdfsOpenFile(/user/RevoShare/a377683/EE594B467CDE4C988C3C3F7AF563DABB/.input): FileSystem#open((Lorg/apache/hadoop/fs/Path;I)Lorg/apache/hadoop/fs/FSDataInputStream;) 오류: java.io.IOException: 로컬 예외에서 실패 했습니다: java.io.IOException: javax.security.sasl.SaslException: GSS 초기화에 실패 했습니다 [GSSException 때문에 생긴: 제공 되는 유효한 자격 증명이 없는 (메커니즘 수준: 모든 Kerberos tgt를 찾지 못했습니다)]; 호스트 정보: 로컬 호스트는: "< 호스트 이름 >"; 대상 호스트 문제: "< 호스트 이름 >": 8020; org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:764)에서 org.apache.hadoop.ipc.Client.call(Client.java:1415)에서 org.apache.hadoop.ipc.Client.call(Client.java:1364)에서 org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:206)에서 com.sun.proxy.$Proxy14.getBlockLocations (알 수 없는 소스)에 org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.getBlockLocations(ClientNamenodeProtocolTranslatorPB.java:246)에서 sun.reflect.NativeMethodAccessorImpl.invoke0 (네이티브 메서드)에 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)에서 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)에서 java.lang.reflect.Method.invoke(Method.java:606)에서 org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:187)에서 org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:102)에서 com.sun.proxy.$Proxy15.getBlockLocations (알 수 없는 소스)에 org.apache.hadoop.hdfs.DFSClient.callGetBlockLocations(DFSClient.java:1179)에서 org.apache.hadoop.hdfs.DFSClient.getLocatedBlocks(DFSClient.java:1169)에서 org.apache.hadoop.hdfs.DFSClient.getLocatedBlocks(DFSClient.java:1159)에서 org.apache.hadoop.hdfs.DFSInputStream.fetchLocatedBlocksAndGetLastBlockLength(DFSInputStream.java:270)에서 org.apache.hadoop.hdfs.DFSInputStream.openInfo(DFSInputStream.java:237)에서 org.apache.hadoop.hdfs.DFSInputStream. < 초기화 > (DFSInputStream.java:230)에서 org.apache.hadoop.hdfs.DFSClient.open(DFSClient.java:1457)에서 org.apache.hadoop.hdfs.DistributedFileSystem$3.doCall(DistributedFileSystem.java:301)에서 org.apache.hadoop.hdfs.DistributedFileSystem$3.doCall(DistributedFileSystem.java:297)에서 org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)에서 org.apache.hadoop.hdfs.DistributedFileSystem.open(DistributedFileSystem.java:297)에서 가 발생 했습니다: java.io.IOException: javax.security.sasl.SaslException: GSS 초기화에 실패 했습니다 [GSSException 때문에 생긴: 제공 되는 유효한 자격 증명이 없는 (메커니즘 수준: 모든 Kerberos tgt를 찾지 못했습니다)] org.apache.hadoop.ipc.Client$Connection$1.run(Client.java:679)에서 java.security.AccessController.doPrivileged (네이티브 메서드)에 javax.security.auth.Subject.doAs(Subject.java:415)에서 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1642)에서 org.apache.hadoop.ipc.Client$Connection.handleSaslConnectionFailure(Client.java:642)에서 org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:725)에서 org.apache.hadoop.ipc.Client$Connection.access$2800(Client.java:367)에서 org.apache.hadoop.ipc.Client.getConnection(Client.java:1463)에서 org.apache.hadoop.ipc.Client.call(Client.java:1382)에서먼저, 작업에는 현재와 유효한 kerberos 티켓 확인 된 유효한 티켓을 사용 해도이 오류를 볼 수 있지만 전송 하는 사용자 확인 합니다.
클러스터 이름과 노드 고가용성으로 구성 된는 RxHadoopMR()에서 정확 하 게 해야 하 고 현재 이름 노드 호스트 이름을 지정 하는 작동 하지만 노드 이름 서비스를 지정 하는 스크립트에서 호출 하는 RxHdfsFileSystem(). 경우는 kerberized 및 HA 이름 노드 환경에서 HDFS_DELEGATION_TOKEN nameservice 참조를 일치 해야 합니다. 위의 오류가 표시 됩니다.정보 보안입니다. TokenCache: dt hdfs://nameservice1;에 있어 종류: HDFS_DELEGATION_TOKEN, 서비스: ha-hdfs:nameservice1, Ident: (HDFS_DELEGATION_TOKEN 242420에 대 한 토큰 a377683
이 경우 "nameservice1"로 RxHadoopMR()와 RxHdfsFileSystem()에서에서 nameNode/호스트 이름 인수를 설정 해야 합니다.