Applies ToRevolution Analytics

在 Hadoop/革命 R 企業環境中,mapreduce 工作可能會因與 kerberos 相關的 JAVA 例外狀況︰

設定選項︰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: HDFS_DELEGATION_TOKEN 語彙基元 242420 a377683 上建立哈-hdfs:nameservice115/02/03 16:59:09 資訊安全性。TokenCache︰ 有 hdfs://nameservice1; 的資料層類型︰ HDFS_DELEGATION_TOKEN,服務︰ 哈-hdfs:nameservice1,Ident: (HDFS_DELEGATION_TOKEN 語彙基元 242420 a377683)......15/02/03 16:59:25 資訊 mapreduce。工作︰ 地圖 0%減少 0%15/02/03 16:59:38 資訊 mapreduce。工作︰ 工作識別碼︰ attempt_1422647534016_1760_m_000000_0,狀態︰ 失敗錯誤︰ java.io.IOException: R VM 結束以結束代碼︰ 1 日的輸出︰啟動指令碼[1],則為 TRUE$fileName [1] NA$start [1] 0$length [1] 015/02/03 16:59:37 警告安全性。UserGroupInformation: 為 PriviledgedActionException: a377683 (auth:KERBEROS) cause:javax.security.sasl.SaslException: GSS 初始化失敗 [由 GSSException 所造成︰ 沒有提供有效的認證 (機制層級︰ 找不到任何的 Kerbero tgt、)]15/02/03 16:59:37 警告 ipc。用戶端︰ 當連接至伺服器時所發生例外狀況︰ javax.security.sasl.SaslException: GSS 初始化失敗 [由 GSSException 所造成︰ 沒有有效的認證,提供 (機制層級︰ 找不到任何的 Kerbero tgt、)]15/02/03 16:59:37 警告安全性。UserGroupInformation: 為 PriviledgedActionException: a377683 (auth:KERBEROS) cause:java.io.IOException: javax.security.sasl.SaslException: GSS 初始化失敗 [由 GSSException 所造成︰ 沒有提供有效的認證 (機制層級︰ 找不到任何的 Kerbero 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 所造成︰ 沒有提供有效的認證 (機制層級︰ 找不到任何的 Kerbero 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 < init > (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)藉由 Caused: java.io.IOException: javax.security.sasl.SaslException: GSS 初始化失敗 [由 GSSException 所造成︰ 沒有提供有效的認證 (機制層級︰ 找不到任何的 Kerbero 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︰ 有 hdfs://nameservice1; 的資料層類型︰ HDFS_DELEGATION_TOKEN,服務︰ 哈-hdfs:nameservice1,Ident: (HDFS_DELEGATION_TOKEN 語彙基元 242420 a377683

在此情況下,nameNode/主機名稱中的引數的 RxHadoopMR() 和 RxHdfsFileSystem() 的呼叫,應該會設定為"nameservice1"。

需要更多協助嗎?

想要其他選項嗎?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。

社群可協助您詢問並回答問題、提供意見反應,以及聆聽來自具有豐富知識的專家意見。