Uploaded image for project: 'Hadoop Common'
  1. Hadoop Common
  2. HADOOP-14938

Configuration.updatingResource map should be initialized lazily

    Details

    • Type: Improvement
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 2.9.0, 3.0.0
    • Component/s: None
    • Labels:
      None
    • Hadoop Flags:
      Reviewed

      Description

      Using jxray (www.jxray.com), I've analyzed a heap dump of YARN RM running in a big cluster. The tool uncovered several inefficiencies in the RM memory. It turns out that one of the biggest sources of memory waste, responsible for almost 1/4 of used memory, is empty ConcurrentHashMap instances in org.apache.hadoop.conf.Configuration.updatingResource:

      905,551K (24.0%): java.util.concurrent.ConcurrentHashMap: 22118 / 100% of empty 905,551K (24.0%)
      ↖org.apache.hadoop.conf.Configuration.updatingResource
      ↖{j.u.WeakHashMap}.keys
      ↖Java Static org.apache.hadoop.conf.Configuration.REGISTRY
      

      That is, there are 22118 empty ConcurrentHashMaps here, and they collectively waste ~905MB of memory. This is caused by eager initialization of these maps. To address this problem, we should initialize them lazily.

        Attachments

        1. HADOOP-14938.01.patch
          6 kB
          Misha Dmitriev
        2. HADOOP-14938.02.patch
          6 kB
          Misha Dmitriev
        3. HADOOP-14938.03.patch
          8 kB
          Misha Dmitriev
        4. HADOOP-14938.branch-2.01.patch
          8 kB
          Misha Dmitriev
        5. HADOOP-14938.branch-3.0.01.patch
          8 kB
          Misha Dmitriev

          Activity

            People

            • Assignee:
              misha@cloudera.com Misha Dmitriev
              Reporter:
              misha@cloudera.com Misha Dmitriev
            • Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: