Details
-
Improvement
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
2.6.1
-
None
-
Reviewed
Description
This case sometimes sees in hive when user issues queries over all partitions by mistakes. The file status cached when listing status could accumulate to over 3g. After digging into the dumped memory, the LocatedBlock occupies about 50%(sometimes over 60%) memory that retained by LocatedFileStatus, as shows followed,
Right now we only extract the block locations info from LocatedFileStatus, the datanode infos(types) or block token are not taken into account. So there is no need to cache LocatedBlock, as do like this:
BlockLocation[] blockLocations = dedup(stat.getBlockLocations());
LocatedFileStatus shrink = new LocatedFileStatus(stat, blockLocations);
private static BlockLocation[] dup(BlockLocation[] blockLocations) {
BlockLocation[] copyLocs = new BlockLocation[blockLocations.length];
int i = 0;
for (BlockLocation location : blockLocations)
return copyLocs;
}
Attachments
Attachments
Issue Links
- links to