Uploaded image for project: 'Hive'
  1. Hive
  2. HIVE-17684

HoS memory issues with MapJoinMemoryExhaustionHandler

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 4.0.0-alpha-1
    • Spark
    • None

    Description

      We have seen a number of memory issues due the HashSinkOperator use of the MapJoinMemoryExhaustionHandler. This handler is meant to detect scenarios where the small table is taking too much space in memory, in which case a MapJoinMemoryExhaustionError is thrown.

      The configs to control this logic are:

      hive.mapjoin.localtask.max.memory.usage (default 0.90)
      hive.mapjoin.followby.gby.localtask.max.memory.usage (default 0.55)

      The handler works by using the MemoryMXBean and uses the following logic to estimate how much memory the HashMap is consuming: MemoryMXBean#getHeapMemoryUsage().getUsed() / MemoryMXBean#getHeapMemoryUsage().getMax()

      The issue is that MemoryMXBean#getHeapMemoryUsage().getUsed() can be inaccurate. The value returned by this method returns all reachable and unreachable memory on the heap, so there may be a bunch of garbage data, and the JVM just hasn't taken the time to reclaim it all. This can lead to intermittent failures of this check even though a simple GC would have reclaimed enough space for the process to continue working.

      We should re-think the usage of MapJoinMemoryExhaustionHandler for HoS. In Hive-on-MR this probably made sense to use because every Hive task was run in a dedicated container, so a Hive Task could assume it created most of the data on the heap. However, in Hive-on-Spark there can be multiple Hive Tasks running in a single executor, each doing different things.

      Attachments

        1. HIVE-17684.01.patch
          6 kB
          Misha Dmitriev
        2. HIVE-17684.02.patch
          6 kB
          Misha Dmitriev
        3. HIVE-17684.03.patch
          6 kB
          Misha Dmitriev
        4. HIVE-17684.04.patch
          6 kB
          Misha Dmitriev
        5. HIVE-17684.05.patch
          8 kB
          Sahil Takiar
        6. HIVE-17684.06.patch
          8 kB
          Sahil Takiar
        7. HIVE-17684.07.patch
          22 kB
          Misha Dmitriev
        8. HIVE-17684.08.patch
          27 kB
          Sahil Takiar
        9. HIVE-17684.09.patch
          28 kB
          Misha Dmitriev
        10. HIVE-17684.10.patch
          28 kB
          Misha Dmitriev
        11. HIVE-17684.11.patch
          28 kB
          Sahil Takiar

        Issue Links

          Activity

            People

              misha@cloudera.com Misha Dmitriev
              stakiar Sahil Takiar
              Votes:
              0 Vote for this issue
              Watchers:
              11 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: