FusionInsight HD Hive在重复提交作业后异常

发布时间:  2016-09-10 浏览次数:  63 下载次数:  0
问题描述

集群版本:FusionInsight  HD V100R002C30LCN001SPC005

单平面组网

集群在第一提提交作业后,作业失败,再次进行提交后提示没有文件




处理过程

1.     下面日志中可以看到,由于当时连接数已经处于满了或者接近满了的状态,928分打开一个连接成功了,并且是最后一个可用的连接,然后执行了use EMLload data两条语句,完毕后就关闭了该连接。

该连接关闭后,马上又有其他线程将这个释放出来的连接占用了,于是紧跟其后的两个连接都报了over max的异常,没有连接成功。

2.  Hive审计日志中可以看到,9:28:43的这个连接成功了,在9:29:00的时候,成功执行了load data这条语句,因此原始路径的文件已经被移动到dcm_mall_user_visit_jnl_c2016-08-14目录下:

         Line 22428: 2016-08-04 09:28:43,832 | INFO  | HiveServer2-Handler-Pool: Thread-7870459 | OperationId=1b00d6c2-0e1d-4db6-92a8-284b6a727f0d      UserName=etlhadoop     UserIP=84.48.17.51         Time=2016/08/04 09:28:43     Opertaion=ExecuteStatement:        stmt={LOAD DATA INPATH '/user/etlhadoop/struct_data/clean/eml/dcm_mall_user_visit_jnl_c_001_0/2016-08-04/08'  into table dcm_mall_user_visit_jnl_c partition(pt_dt = '2016-08-04')}   Resource=        Result=SUCCESS      Detail= | org.apache.hive.service.cli.thrift.ThriftCLIService.logAuditEvent(ThriftCLIService.java:209)

         Line 22498: 2016-08-04 09:29:00,534 | INFO  | HiveServer2-Background-Pool: Thread-9407352 | OperationId=1b00d6c2-0e1d-4db6-92a8-284b6a727f0d      Result=SUCCESS | org.apache.hive.service.cli.operation.SQLOperation.runInternal(SQLOperation.java:201)

 

后续在11:55:10这个时间再次执行了一个load语句,但是load语句去查找HDFS路径发现文件已经在929分被移动走了,所以这里找不到该文件。


根因

语句问题

客户的应用脚本应该是按照这种逻辑:

 

Beeline –e “use EML” “load data xxxx”

 

Xxxx                    à do something

 

Beeline –e “some sql”     à 由于存在并发,在do something的时候,连接被其他任务抢走了,这一次连接over max 导致整个shell脚本失败,因此认为第一次执行任务失败了;然后再重试,重试的时候,又因为load已经成功过,所以原始文件已经被挪走了出现这个现象。


解决方案

客户进行语句优化,同一个作业不要多个线程来执行。


END