2017-10-26 9 views
1

私はCDH 5.8.4のクラスタを持っています。私は、cloudera spark-hbaseコネクタ、すなわちHBaseContextを使用してHBaseから/にデータを読み書きするスパークストリーミングアプリケーションを起動しています。 私はアプリケーションを起動すると、プリンシパルとkinitをspark-submitスクリプトに与えます。 7日後、HBaseコンテキストに関連するチケットのKerberosの有効期限に関するエラーが発生してアプリケーションがクラッシュしました。これは、エグゼキュータのログからのエラーです。spark-hbaseコネクタが切れたチケットのケルベロス

ERROR executor.Executor: Exception in task 0.0 in stage 544265.0 (TID 1149098) 
org.apache.hadoop.hbase.client.RetriesExhaustedException: Can't get the location 
     at org.apache.hadoop.hbase.client.RpcRetryingCallerWithReadReplicas.getRegionLocations(RpcRetryingCallerWithReadReplicas.java 
:326) 
     at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:157) 
     at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:61) 
     at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:200) 
     at org.apache.hadoop.hbase.client.ClientScanner.call(ClientScanner.java:320) 
     at org.apache.hadoop.hbase.client.ClientScanner.nextScanner(ClientScanner.java:295) 
     at org.apache.hadoop.hbase.client.ClientScanner.initializeScannerInConstruction(ClientScanner.java:160) 
     at org.apache.hadoop.hbase.client.ClientScanner.<init>(ClientScanner.java:155) 
     at org.apache.hadoop.hbase.client.HTable.getScanner(HTable.java:867) 
     at org.apache.hadoop.hbase.mapreduce.TableRecordReaderImpl.restart(TableRecordReaderImpl.java:91) 
     at org.apache.hadoop.hbase.mapreduce.TableRecordReaderImpl.initialize(TableRecordReaderImpl.java:169) 
     at org.apache.hadoop.hbase.mapreduce.TableRecordReader.initialize(TableRecordReader.java:134) 
     at org.apache.hadoop.hbase.mapreduce.TableInputFormatBase$1.initialize(TableInputFormatBase.java:211) 
     at org.apache.spark.rdd.NewHadoopRDD$$anon$1.<init>(NewHadoopRDD.scala:164) 
     at org.apache.spark.rdd.NewHadoopRDD.compute(NewHadoopRDD.scala:129) 
     at org.apache.hadoop.hbase.spark.NewHBaseRDD.compute(NewHBaseRDD.scala:34) 
     at org.apache.hadoop.hbase.spark.NewHBaseRDD.compute(NewHBaseRDD.scala:25) 
     at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:306) 
     at org.apache.spark.rdd.RDD.iterator(RDD.scala:270) 
     at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:38) 
     at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:306) 
     at org.apache.spark.rdd.RDD.iterator(RDD.scala:270) 
     at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:38) 
     at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:306) 
     at org.apache.spark.rdd.RDD.iterator(RDD.scala:270) 
     at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:66) 
     at org.apache.spark.scheduler.Task.run(Task.scala:89) 
at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:214) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
     at java.lang.Thread.run(Thread.java:745) 
Caused by: org.apache.hadoop.security.token.SecretManager$InvalidToken: Token has expired 
     at sun.reflect.GeneratedConstructorAccessor58.newInstance(Unknown Source) 
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
     at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
     at org.apache.hadoop.ipc.RemoteException.instantiateException(RemoteException.java:106) 
     at org.apache.hadoop.ipc.RemoteException.unwrapRemoteException(RemoteException.java:95) 
     at org.apache.hadoop.hbase.protobuf.ProtobufUtil.getRemoteException(ProtobufUtil.java:327) 
     at org.apache.hadoop.hbase.protobuf.ProtobufUtil.getRowOrBefore(ProtobufUtil.java:1593) 
     at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegionInMeta(ConnectionManager.java:1398) 
     at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegion(ConnectionManager.java:1199) 
     at org.apache.hadoop.hbase.client.RpcRetryingCallerWithReadReplicas.getRegionLocations(RpcRetryingCallerWithReadReplicas.java:315) 
     ... 30 more 
Caused by: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.token.SecretManager$InvalidToken): Token has expired 
     at org.apache.hadoop.hbase.security.HBaseSaslRpcClient.readStatus(HBaseSaslRpcClient.java:155) 
     at org.apache.hadoop.hbase.security.HBaseSaslRpcClient.saslConnect(HBaseSaslRpcClient.java:222) 
     at org.apache.hadoop.hbase.ipc.RpcClientImpl$Connection.setupSaslConnection(RpcClientImpl.java:617) 
     at org.apache.hadoop.hbase.ipc.RpcClientImpl$Connection.access$700(RpcClientImpl.java:162) 
     at org.apache.hadoop.hbase.ipc.RpcClientImpl$Connection$2.run(RpcClientImpl.java:743) 
     at org.apache.hadoop.hbase.ipc.RpcClientImpl$Connection$2.run(RpcClientImpl.java:740) 
     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:1783) 
     at org.apache.hadoop.hbase.ipc.RpcClientImpl$Connection.setupIOstreams(RpcClientImpl.java:740) 
     at org.apache.hadoop.hbase.ipc.RpcClientImpl$Connection.writeRequest(RpcClientImpl.java:906) 
     at org.apache.hadoop.hbase.ipc.RpcClientImpl$Connection.tracedWriteRequest(RpcClientImpl.java:873) 
     at org.apache.hadoop.hbase.ipc.RpcClientImpl.call(RpcClientImpl.java:1242) 
     at org.apache.hadoop.hbase.ipc.AbstractRpcClient.callBlockingMethod(AbstractRpcClient.java:227) 
     at org.apache.hadoop.hbase.ipc.AbstractRpcClient$BlockingRpcChannelImplementation.callBlockingMethod(AbstractRpcClient.java:336) 
     at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$BlockingStub.get(ClientProtos.java:34070) 
     at org.apache.hadoop.hbase.protobuf.ProtobufUtil.getRowOrBefore(ProtobufUtil.java:1589) 

この問題を解決する方法を知っている人はいますか? 事前に感謝します。 Beniamino

+0

'spark-submit'を実行するときに' --principal'と '--keytab'オプションを使用しましたか? – MaxU

+0

はい、私はしました。エグゼキュータキャッシュ内のチケットの有効期限が切れると、7日ごとにエラーが表示されます –

+0

ダンプをフォーマットして「いくらか読める」ようにしてください。同様のトピックについてChris Nauroth(HortonWorks、HBaseコミッター)の答えをSOで検索してください。 –

答えて

1

We(スプライスマシン)は、お客様と同じ問題がありました。私たちの問題はhttps://issues.apache.org/jira/browse/SPARK-12646によって引き起こされました。 _HOSTの問題を修正するコードを書きました。また、この問題を回避するためにSpark 2.2にアップグレードしました。

関連する問題