Hadoop と革命 R のエンタープライズ環境では、mapreduce ジョブ kerberos 関連の Java 例外で失敗します。
オプションを設定します。
15/02/03 16時 59分: 05 警告 util.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 用の ha-hdfs:nameservice1 15/02/03 16時 59分: 09 情報セキュリティです。TokenCache: hdfs://nameservice1; の dt を取得しました種類: 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] は TRUE。 $fileName [NA 1] $start [1] 0 $length [1] 0 15/02/03 16時 59分: 37 [セキュリティの警告です。UserGroupInformation: として PriviledgedActionException: a377683 (auth:KERBEROS) cause:javax.security.sasl.SaslException: 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 が見つかりませんでした)] です。ホストの詳細: ローカル ・ ホストは、:"hostname < >"です。宛先ホスト:"< ホスト名 >]: 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) で が発生しました: 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 は、ネームの参照を一致しなければなりません。上記のエラーが表示されます。情報セキュリティです。TokenCache: hdfs://nameservice1; の dt を取得しました種類: HDFS_DELEGATION_TOKEN、サービス: ha-hdfs:nameservice1、Ident: (HDFS_DELEGATION_TOKEN 242420 のトークン a377683
この例では、"nameservice1"に RxHadoopMR() と RxHdfsFileSystem() の呼び出しで nameNode/ホスト名の引数を設定してください。