hive-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Wei Zheng (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HIVE-11467) WriteBuffers rounding wbSize to next power of 2 may cause OOM
Date Mon, 10 Aug 2015 17:45:46 GMT

    [ https://issues.apache.org/jira/browse/HIVE-11467?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14680435#comment-14680435
] 

Wei Zheng commented on HIVE-11467:
----------------------------------

[~sershe] The test failures are due to customized wbsize setting (not power of 2), and MapJoinBytesTableContainer
didn't have this enforcement. Since WriteBuffers has a number of consumers, such as MapJoinBytesTableContainer,
HybridHashTableContainer, VectorMapJoinFastKeyStore and VectorMapJoinFastValueStore, I would
say we'd better still keep the rounding logic in WriteBuffers cstr. What do you think? Hybrid
is the only exception that it does the rounding by itself.

> WriteBuffers rounding wbSize to next power of 2 may cause OOM
> -------------------------------------------------------------
>
>                 Key: HIVE-11467
>                 URL: https://issues.apache.org/jira/browse/HIVE-11467
>             Project: Hive
>          Issue Type: Bug
>          Components: Hive
>    Affects Versions: 1.2.0, 2.0.0
>            Reporter: Wei Zheng
>            Assignee: Wei Zheng
>         Attachments: HIVE-11467.01.patch, HIVE-11467.02.patch, HIVE-11467.03.patch
>
>
> If wbSize passed to WriteBuffers cstr is not power of 2, it will do a rounding first
to the next power of 2
> {code}
>   public WriteBuffers(int wbSize, long maxSize) {
>     this.wbSize = Integer.bitCount(wbSize) == 1 ? wbSize : (Integer.highestOneBit(wbSize)
<< 1);
>     this.wbSizeLog2 = 31 - Integer.numberOfLeadingZeros(this.wbSize);
>     this.offsetMask = this.wbSize - 1;
>     this.maxSize = maxSize;
>     writePos.bufferIndex = -1;
>     nextBufferToWrite();
>   }
> {code}
> That may break existing memory consumption assumption for mapjoin, and potentially cause
OOM.
> The solution will be to pass a power of 2 number as wbSize from upstream during hashtable
creation, to avoid this late expansion.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message