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)

Reply via email to