In un ambiente Enterprise R Hadoop/rivoluzione, un processo mapreduce potrebbe non riuscire con un'eccezione Java relativi a kerberos:
Impostazione delle opzioni:
15/02/03 16:59:05 util. avvisa NativeCodeLoader: Impossibile caricare la libreria nativa-hadoop per la piattaforma in uso... tramite builtin-java classi eventualmente
DEBUG: 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 INFO. DFSClient: Creato il token HDFS_DELEGATION_TOKEN 242420 per a377683 ha-hdfs:nameservice1
15/02/03 16:59:09 sicurezza delle informazioni. TokenCache: Hai dt per hdfs://nameservice1; Tipo: HDFS_DELEGATION_TOKEN, servizio: ha-hdfs:nameservice1, Ident: (token HDFS_DELEGATION_TOKEN 242420 per a377683)
......
15/02/03 16:59:25 mapreduce INFO. Processo: mappa 0% 0% di riduzione
15/02/03 16:59:38 mapreduce INFO. Processo: ID dell'attività: attempt_1422647534016_1760_m_000000_0, stato: non riuscito
Errore: java.io.IOException: VM R chiuso con codice di uscita: 1, uscita:
script di avvio
[1] VERO
$fileName
[1] NA
$start
[1] 0
$length
[1] 0
15/02/03 16:59:37 protezione avvisa. UserGroupInformation: PriviledgedActionException come: a377683 cause:javax.security.sasl.SaslException (auth:KERBEROS): initiate GSS non riuscita [causato da GSSException: Nessuna credenziale valida fornita (livello meccanismo: Impossibile trovare un tgt Kerberos)]
15/02/03 16:59:37 avvisa ipc. Client: Eccezione durante la connessione al server: javax.security.sasl.SaslException: initiate GSS non riuscita [causato da GSSException: Nessuna credenziale valida fornita (livello: Impossibile trovare un tgt Kerberos)]
15/02/03 16:59:37 protezione avvisa. UserGroupInformation: PriviledgedActionException come: a377683 cause:java.io.IOException (auth:KERBEROS): javax.security.sasl.SaslException: initiate GSS non riuscita [causato da GSSException: Nessuna credenziale valida fornita (livello meccanismo: Impossibile trovare un tgt Kerberos)]
hdfsOpenFile(/user/RevoShare/a377683/EE594B467CDE4C988C3C3F7AF563DABB/.input): errore FileSystem#open((Lorg/apache/hadoop/fs/Path;I)Lorg/apache/hadoop/fs/FSDataInputStream;):
java.io.IOException: errore di eccezione locale: java.io.IOException: javax.security.sasl.SaslException: initiate GSS non riuscita [causato da GSSException: Nessuna credenziale valida fornita (livello: Impossibile trovare un tgt Kerberos)]; Dettagli host: host locale è: "< nomehost >"; host di destinazione è: "< nomehost >": 8020;
in org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:764)
in org.apache.hadoop.ipc.Client.call(Client.java:1415)
in org.apache.hadoop.ipc.Client.call(Client.java:1364)
in org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:206)
in com.sun.proxy.$Proxy14.getBlockLocations (origine sconosciuta)
in org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.getBlockLocations(ClientNamenodeProtocolTranslatorPB.java:246)
in sun.reflect.NativeMethodAccessorImpl.invoke0 (metodo nativo)
in sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
in sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
in java.lang.reflect.Method.invoke(Method.java:606)
in org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:187)
in org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:102)
in com.sun.proxy.$Proxy15.getBlockLocations (origine sconosciuta)
in org.apache.hadoop.hdfs.DFSClient.callGetBlockLocations(DFSClient.java:1179)
in org.apache.hadoop.hdfs.DFSClient.getLocatedBlocks(DFSClient.java:1169)
in org.apache.hadoop.hdfs.DFSClient.getLocatedBlocks(DFSClient.java:1159)
in org.apache.hadoop.hdfs.DFSInputStream.fetchLocatedBlocksAndGetLastBlockLength(DFSInputStream.java:270)
in org.apache.hadoop.hdfs.DFSInputStream.openInfo(DFSInputStream.java:237)
in org.apache.hadoop.hdfs.DFSInputStream. < init > (DFSInputStream.java:230)
in org.apache.hadoop.hdfs.DFSClient.open(DFSClient.java:1457)
in org.apache.hadoop.hdfs.DistributedFileSystem$3.doCall(DistributedFileSystem.java:301)
in org.apache.hadoop.hdfs.DistributedFileSystem$3.doCall(DistributedFileSystem.java:297)
in org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)
in org.apache.hadoop.hdfs.DistributedFileSystem.open(DistributedFileSystem.java:297)
Verificato da: java.io.IOException: javax.security.sasl.SaslException: initiate GSS non riuscita [causato da GSSException: Nessuna credenziale valida fornita (livello: Impossibile trovare un tgt Kerberos)]
in org.apache.hadoop.ipc.Client$Connection$1.run(Client.java:679)
in java.security.AccessController.doPrivileged (metodo nativo)
in javax.security.auth.Subject.doAs(Subject.java:415)
in org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1642)
in org.apache.hadoop.ipc.Client$Connection.handleSaslConnectionFailure(Client.java:642)
in org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:725)
in org.apache.hadoop.ipc.Client$Connection.access$2800(Client.java:367)
in org.apache.hadoop.ipc.Client.getConnection(Client.java:1463)
in org.apache.hadoop.ipc.Client.call(Client.java:1382)
Confermare che l'utente di inviare il processo dispone di un ticket kerberos correnti e valido ma è possibile vedere il problema anche con un ticket valido confermato.
Se il cluster è configurato per la disponibilità elevata di nome nodo, è necessario essere specifici di RxHadoopMR() e RxHdfsFileSystem() chiama nello script per specificare il nome di servizio di nodo, se si specifica il nome host nodo attivo di nome funziona anche. Nel caso di un kerberized e HA nome nodo ambiente, il HDFS_DELEGATION_TOKEN deve corrispondere il riferimento nameservice. Il messaggio di errore sopra riportato, vedere:
Sicurezza delle informazioni. TokenCache: Hai dt per hdfs://nameservice1; Tipo: HDFS_DELEGATION_TOKEN, servizio: ha-hdfs:nameservice1, Ident: (HDFS_DELEGATION_TOKEN token 242420 per a377683
In questo caso, gli argomenti di nameNode/nome host nelle chiamate RxHadoopMR() e RxHdfsFileSystem() impostare su "nameservice1".