Zoltan Matyus created HIVE-24734: ------------------------------------ Summary: Sanity check in HiveSplitGenerator available slot calculation Key: HIVE-24734 URL: https://issues.apache.org/jira/browse/HIVE-24734 Project: Hive Issue Type: Bug Components: Tez Affects Versions: 4.0.0 Reporter: Zoltan Matyus
HiveSplitGenerator calculates the number of available slots from available memory like this: {code:java} if (getContext() != null) { totalResource = getContext().getTotalAvailableResource().getMemory(); taskResource = getContext().getVertexTaskResource().getMemory(); availableSlots = totalResource / taskResource; } {code} I had a scenario where the total memory was calculated correctly, but the task memory returned -1. This led to error like these: {noformat} tez.HiveSplitGenerator: Number of input splits: 1. -3641 available slots, 1.7 waves. Input format is: org.apache.hadoop.hive.ql.io.HiveInputFormat Estimated number of tasks: -6189 for bucket 1 java.lang.IllegalArgumentException: Illegal Capacity: -6189 {noformat} Admittedly, this happened during development, and hopefully will not occur on a properly configured cluster. (Although I'm not sure what the issue was on my setup, possibly XMX set higher than physical memory.) In any case, it feels like setting availableSlots < 1 will never lead to desired behavior, so in such cases we could emit a warning and correct the value to 1. -- This message was sent by Atlassian Jira (v8.3.4#803005)