Hive动态分区太多也会有问题

最近在测试动态分区时,猜测可能是动态分区的数太多,导致一个SQL始终报错:

aused by: org.apache.hadoop.hive.ql.metadata.HiveException: java.io.IOException: Bad connect ack with firstBadLink as 192.168.2.24:50010
 at org.apache.hadoop.hive.ql.exec.FileSinkOperator.processOp(FileSinkOperator.java:602)
 at org.apache.hadoop.hive.ql.exec.Operator.process(Operator.java:471)
 at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:762)
 at org.apache.hadoop.hive.ql.exec.SelectOperator.processOp(SelectOperator.java:84)
 at org.apache.hadoop.hive.ql.exec.Operator.process(Operator.java:471)
 at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:762)
 at org.apache.hadoop.hive.ql.exec.TableScanOperator.processOp(TableScanOperator.java:83)
 at org.apache.hadoop.hive.ql.exec.Operator.process(Operator.java:471)
 at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:762)
 at org.apache.hadoop.hive.ql.exec.MapOperator.process(MapOperator.java:531)
 ... 8 more
Caused by: java.io.IOException: Bad connect ack with firstBadLink as 192.168.2.24:50010
 at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.createBlockOutputStream(DFSClient.java:3465)
 at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.nextBlockOutputStream(DFSClient.java:3381)
 at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.access$2600(DFSClient.java:2589)
 at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream$DataStreamer.run(DFSClient.java:2829)

 

当时我们看到的时候,就认为很简单,不就是关闭防火墙,然后就再修改/etc/selinux/config里的SELINUX=disabled。

确实当时的测试环境里,确实有些机器没有关闭防火墙这些,然后就关闭防火墙等,想想应该不会再运行出错了吧,

测试的结果恰恰相反,还是报此错误(对分区字段也做了distribute by)。

如果我们将数据量缩小,执行此动态分区的SQL语句是能够成功。

目前根据经验判断应该是动态分区数太多导致,也正在努力检查其真正原因。

 

判断的方式:

我们打算用一个时间段3000多万记录来做一个动态分区,如果执行成功,那么出来的结果应该是一个动态分区,

然后我们用5年的时间段3000多万的记录来做一个动态分区,如果执行失败,就能证明是动态分区数太多导致。

反之其他场景也就说明了我们的判断是有误的。


最近听说此问题与交换机有关,我正在检查中。

测试结果与预期相反,并不是动态分区的问题导致,而且当集群里的数据量突然猛增时,出现对block处理不及时导致。

在测试的过程中,很多环境变量在命令行里设置的时候,是没有效果的,在配置文件(hive-site.xml)里才有效果。

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值