2017-10-26 1 views
1

CDH 5.8.4 클러스터가 있습니다. 내가 clarnder 스파크 - hbase 커넥터 즉, HBaseContext를 사용하여 HBase에서 데이터를 읽고 쓰는 스파크 스트리밍 응용 프로그램을 실행 중입니다. 응용 프로그램을 시작할 때 spark-submit 스크립트에 주체와 kinit를 제공합니다. 7 일 후에 HBase 컨텍스트와 관련된 티켓 kerberos의 만료에 대한 오류와 함께 응용 프로그램이 충돌하는 것을보고 있습니다. 다음은 실행 프로그램 로그의 오류입니다.spark-hbase 커넥터가 만료 된 티켓 kerberos

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 커미터)의 대답을 찾으십시오. –

답변

1

We (Splice Machine)은 고객과 동일한 문제가있었습니다. 문제가 발생한 원인은 https://issues.apache.org/jira/browse/SPARK-12646입니다. 우리는 _HOST 문제를 해결하기위한 몇 가지 코드를 작성했으며이 문제를 해결하기 위해 Spark 2.2로 업그레이드했습니다.

관련 문제