2017-08-31 304 views
1

有人會用Nifi 1.3.0和Hive幫助解決這個問題。我發現與hive 1.2和Hive 2.1.1相同的錯誤。配置單元表格是分區,分區並存儲爲ORC格式。帶Hive的NiFi PutHiveStreaming處理器:連接到EndPoint失敗

該分區是在hdfs上創建的,但寫入階段的數據失敗。請檢查日誌如下:

[5:07 AM] papesdiop: Failed connecting to EndPoint {metaStoreUri='thrift://localhost:9083', database='mydb', table='guys', partitionVals=[dev] } 
[5:13 AM] papesdiop: I get in log see next, hope it might help too: 
[5:13 AM] papesdiop: Caused by: org.apache.hive.hcatalog.streaming.TransactionError: Unable to acquire lock on {metaStoreUri='thrift://localhost:9083', database='mydb', table='guys', partitionVals=[dev] } 
  at org.apache.hive.hcatalog.streaming.HiveEndPoint$TransactionBatchImpl.beginNextTransactionImpl(HiveEndPoint.java:578) 

FULL跟蹤日誌:

重新連接。 org.apache.thrift.transport.TTransportException:null at org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:132) at org.apache.thrift.transport.TTransport.readAll(TTransport.java: 86) at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:429) at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:318) at org.apache.thrift。 (org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore $ Client.recv_lock(TServiceClient.java:69) ThriftHiveMetastore.java:3906) at org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore $ Client。鎖(ThriftHiveMetastore.java:3893) 在org.apache.hadoop.hive.metastore.HiveMetaStoreClient.lock(HiveMetaStoreClient.java:1863) 在sun.reflect.GeneratedMethodAccessor380.invoke在sun.reflect.DelegatingMethodAccessorImpl(未知來源) .invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.invoke(RetryingMetaStoreClient.java:152) 在com.sun.proxy。$ Proxy126.lock(Unknown Source) at org.apache.hive.hcatalog.streaming.HiveEndPoint $ TransactionBatchImpl.beginNextTransactionImpl(HiveEndPoint.java:573) at org.apache.hive.hcatalog.streaming .HiveEndPoint $ TransactionBatchImpl.beginNextTransaction(HiveEndPoint.java:547) at org.apache.nifi.util.hive.HiveWriter.nextTxnBatch(HiveWriter.java:261) at org.apache.nifi.util.hive.HiveWriter。(HiveWriter.java:73) at org.apache.nifi .util.hive.HiveUtils.makeHiveWriter(HiveUtils.java:46) at org.apache.nifi.processors.hive.PutHiveStreaming.makeHiveWriter(PutHiveStreaming.java:964) at org.apache.nifi.processors.hive.PutHiveStreaming .getOrCreateWriter(PutHiveStreaming.java:875) at org.apache.nifi.processors.hive.PutHiveStreaming.lambda $ null $ 40(PutHiveStreaming.java:676) at org.apache.nifi.processor.util.pattern.ExceptionHandler。執行(ExceptionHandler.java:127) at org.apache.nifi.processors.hive.PutHiveStreaming.lambda $ onTrigger $ 44(PutHiveStreaming.java:673) at org.apache.nifi.controller.repo sitory.StandardProcessSession.read(StandardProcessSession.java:2136) 在org.apache.nifi.controller.repository.StandardProcessSession.read(StandardProcessSession.java:2106) 在org.apache.nifi.processors.hive.PutHiveStreaming.onTrigger( PutHiveStreaming.java:627) at org.apache.nifi.processors.hive.PutHiveStreaming.lambda $ onTrigger $ 36(PutHiveStreaming.java:551) at org.apache.nifi.processor.util.pattern.PartialFunctions.onTrigger(PartialFunctions .java:114) at org.apache.nifi.processor.util.pattern.RollbackOnFailure.onTrigger(RollbackOnFailure.java:184) at org.apache.nifi.processors。hive.PutHiveStreaming.onTrigger(PutHiveStreaming.java:551) at org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1120) at org.apache.nifi.controller.tasks.ContinuallyRunProcessorTask.call(ContinuingRunProcessorTask。 Java的:147) 在org.apache.nifi.controller.tasks.ContinuallyRunProcessorTask.call(ContinuallyRunProcessorTask.java:47) 在org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent $ 1.run(TimerDrivenSchedulingAgent.java:132) 在java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) at java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.access $ 301(ScheduledThreadPoolExecutor.java:180) 在java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor $ Worker。運行(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) 2017-09-07 06:41:31,015 DEBUG [Timer-4] oanprocessors.hive.PutHiveStreaming PutHiveStreaming [id = 13ed53d2-015e-1000-c7b1-5af434c38751]開始在所有作家發送心跳 2017-09-07 06:41:31,890 INFO [定時器驅動的進程線程-3] hive.metastore嘗試使用URI thrift連接到Metastore: // localhost:9083 2017-09-07 06:41:31,893 INFO [Timer-Driven Process Thread-3] hive.metastore連接到Metastore。 2017-09-07 06:41:31,911錯誤[定時器驅動的進程線程3] oanprocessors.hive.PutHiveStreaming PutHiveStreaming [id = 13ed53d2-015e-1000-c7b1-5af434c38751]無法爲端點創建HiveWriter:{metaStoreUri ='thrift:// localhost:9083',database ='default',table ='guys',partitionVals = [dev]}:org.apache.nifi.util.hive.HiveWriter $ ConnectFailure:無法連接到EndPoint {metaStoreUri ='thrift:// localhost:9083',database ='default',table ='guys',partitionVals = [dev]} org.apache.nifi.util.hive.HiveWriter $ ConnectFailure:無法連接到EndPoint {metaStoreUri ='thrift:// localhost:9083',database ='default',table ='guys',partitionVals = [dev]} at org.apache.nifi.util.hive.HiveWriter。(HiveWriter.java:79) at org.apache.nifi.util.hive.HiveUtils.makeHiveWriter(HiveUtils.java:46) at org.apache.nifi.processors.hive.PutHiveSt regan.makeHiveWriter(PutHiveStreaming.java:964) at org.apache.nifi.processors.hive.PutHiveStreaming.getOrCreateWriter(PutHiveStreaming.java:875) at org.apache.nifi.processors.hive.PutHiveStreaming.lambda $ null $ 40 (PutHiveStreaming.java:676) at org.apache.nifi.processor.util.pattern.ExceptionHandler.execute(ExceptionHandler.java:127) at org.apache.nifi.processors.hive.PutHiveStreaming.lambda $ onTrigger $ 44( PutHiveStreaming.java:673) 在org.apache.nifi.controller.repository.StandardProcessSession.read(StandardProcessSession.java:2136) 在org.apache.nifi.controller.repository.StandardProcessSession.read(StandardProcessSession.java:2106) at org.apache.nifi.processors.hive.PutHiveStreaming.onTrigger(PutHiveStreaming.java:627) at org。 apache.nifi.processors.hive.PutHiveStreaming.lambda $ onTrigger $ 36(PutHiveStreaming.java:551) at org.apache.nifi.processor.util.pattern.PartialFunctions.onTrigger(PartialFunctions.java:114) at org.apache .nifi.processor.util.pattern.RollbackOnFailure.onTrigger(RollbackOnFailure.java:184) at org.apache.nifi.processors.hive.PutHiveStreaming.onTrigger(PutHiveStreaming.java:551) at org.apache.nifi.controller .StandardProcessorNode.onTrigger(StandardProcessorNode.java:1120) at org.apache.nifi.controller.tasks.ContinuallyRunProcessorTask.call(ContinuingRunProcessorTask.java:147) at org.apache.nifi.controller.tasks.ContinuallyRunProcessorTask.call(ContinuingRunProcessorTask .java:47) at org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent $ 1.run(TimerDrivenS chedulingAgent。java:132) at java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) at java.util.concurrent。的ScheduledThreadPoolExecutor $ ScheduledFutureTask.access $ 301(ScheduledThreadPoolExecutor.java:180) 在java.util.concurrent.ScheduledThreadPoolExecutor中的$ ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) 在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149 ) at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) 引起人:org.apache.nifi.util.hive .HiveWriter $ TxnBatchFailure:從EndPoint獲取交易批次失敗:{metaStoreUri ='thrift:// loc alhost:9083' ,數據庫= '默認',表= '人',partitionVals = [dev的]} 在org.apache.nifi.util.hive.HiveWriter.nextTxnBatch(HiveWriter.java:264) 在org.apache 。.nifi.util.hive.HiveWriter(HiveWriter.java:73) ... 24個共同幀省略 所致:org.apache.hive.hcatalog.streaming.TransactionError:無法在{metaStoreUri ='節儉獲取鎖://本地主機:9083' ,數據庫= '默認',表= '人',partitionVals = [dev的]} 在org.apache.hive.hcatalog.streaming.HiveEndPoint $ TransactionBatchImpl.beginNextTransactionImpl(HiveEndPoint.java:578) at org.apache.hive.hcatalog.streaming.HiveEndPoint $ TransactionBatchImpl.beginNextTransaction(HiveEndPoint.java:547) at org.apache.nifi.util.hive.HiveWriter.nextTxnBatch(HiveWriter.java:261) ... 25在org.apache.thrift.transport.TTransport在org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:132)空 :公共幀省略 所致:org.apache.thrift.transport.TTransportException。 readAll(TTransport.java:86) at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:429) at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:318) at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:219) at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:69) at org.apache.hadoop.hive.metastore.api。 ThriftHiveMetastore $ Client.recv_lock(ThriftHiveMetastore.java:3906) at org.apache.hadoop.hive.metasto re.api.ThriftHiveMetastore $ Client.lock(ThriftHiveMetastore.java:3893) at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.lock(HiveMetaStoreClient.java:1863) at sun.reflect.GeneratedMethodAccessor380.invoke(Unknown Source ) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在java.lang.reflect.Method.invoke(Method.java:498) 在org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.invoke (RetryingMetaStoreClient.java:152) at com.sun.proxy。$ Proxy126.lock(Unknown Source) at org.apache.hive.hcatalog.streaming.HiveEndPoint $ TransactionBatchImpl.beginNextTransactionImpl(HiveEndPoint.java:573) .. 。共有27個框架遺漏了 2017-09-07 06:41:31,911錯誤[Timer-D裏文進程線程-3] oanprocessors.hive.PutHiveStreaming PutHiveStreaming [ID = 13ed53d2-015e-1000-c7b1-5af434c38751]連接蜂巢端點錯誤:在舊貨表球員://本地主機:9083 2017年9月7日06: 41:31911 DEBUG [定時器驅動進程線程-3] oanprocessors.hive.PutHiveStreaming PutHiveStreaming [ID = 13ed53d2-015e-1000-c7b1-5af434c38751]已選擇以得到它的資源;不會被調度到再次1000毫秒 2017年9月7日06運行:41:31912 ERROR [定時器驅動進程線程-3] oanprocessors.hive.PutHiveStreaming PutHiveStreaming [ID = 13ed53d2-015e-1000-c7b1-5af434c38751 ] Hive流連接/寫入錯誤,流文件將受到處罰並路由重試。 org.apache.nifi.util.hive。HiveWriter $ ConnectFailure:無法連接到端點{metaStoreUri = '節儉://本地主機:9083',數據庫= '默認',表= '傢伙',partitionVals =

Hive的表

CREATE TABLE mydb.guys (    firstname string,    lastname string) PARTITIONED BY (    job string) CLUSTERED BY (   firstname) INTO 10 BUCKETS ROW FORMAT SERDE   'org.apache.hadoop.hive.ql.io.orc.OrcSerde' STORED AS ORC LOCATION   'hdfs://localhost:9000/user/papesdiop/guys' TBLPROPERTIES ( 'transactional'='true')

在此先感謝

回答

0

如果在寫入HDFS過程中失敗,或許您的用戶沒有寫入目標目錄的權限?如果您從完整的堆棧跟蹤中獲得更多信息,請將其添加到您的問題中,因爲這有助於診斷問題。前一段時間我遇到這個問題時,是因爲我的NiFi用戶需要在目標OS上創建並添加到相應的HDFS組中,以便獲得PutHiveStreaming寫入ORC文件的權限,在HDFS中。

+0

嗨馬特, 我對所有服務(hdfs,yarn,hiveserver2,metastore,nifi)使用相同的用戶。動態創建hdfs中的分區,但空文件位於delta_0022710_0022714/bucket_00001_flush_length。 Full stacktrace log: – Papesdiop

+0

我編輯了完整跟蹤日誌的問題。感謝您的幫助 – Papesdiop

+0

您使用Apache NiFi或Hortonworks DataFlow嗎?您的集羣是Apache Hadoop還是來自供應商的發行版?這個錯誤意味着存在Thrift不匹配,這通常表示不兼容版本 – mattyb