hive更换1.2版本后,insert数据后,hdfs目录增加了-ext-10000目录
经排查发现执行用户非集群管理用户,使用集群管理用户可以正常。
hdfs 查看目录权限为集群管理用户。怀疑权限问题,不想手动修改hdfs权限,开启ranger 权限管控hive,赋权后正常使用。
分析代码:
1.原文件是非hdfs文件,copyFromLocal
2.原文件是hdfs文件
2.1 Encrypted模式 copy操作,如果文件大于默认值(32MB),则会进行distcp操作。
2.2 非Encrypted模式
(1)原目录是目标目录的子目录,原目录下的每个文件进行copy操作,如果文件大于默认值(32MB),则会进行distcp操作。
(2)其他情况,进行mv操作
因此,在hive1.2版本中,当原目录是目标目录的子目录时,会对所有文件循环进行copy或者distcp操作。这会导致磁盘io以及网络流量,浪费大量的时间,导致任务变的缓满。
临时解决办法: 将 hive1.2.1默认的参数:
hive.exec.stagingdir
.hive-staging
修改为
hive.exec.stagingdir
/tmp/hive/.hive-staging
可以规避问题。