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

Memory leak from large number of FileSystem instances in FileSystem.CACHE

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 0.9.0
    • 0.9.1, 0.10.0
    • Shims
    • None
    • Running with Hadoop 20.205.0.3+ / 1.0.x with security turned on.

    Description

      The problem manifested from stress-testing HCatalog 0.4.1 (as part of testing the Oracle backend).

      The HCatalog server ran out of memory (-Xmx2048m) when pounded by 60-threads, in under 24 hours. The heap-dump indicates that hadoop::FileSystem.CACHE had 1000000 instances of FileSystem, whose combined retained-mem consumed the entire heap.

      It boiled down to hadoop::UserGroupInformation::equals() being implemented such that the "Subject" member is compared for equality ("=="), and not equivalence (".equals()"). This causes equivalent UGI instances to compare as unequal, and causes a new FileSystem instance to be created and cached.

      The UGI.equals() is so implemented, incidentally, as a fix for yet another problem (HADOOP-6670); so it is unlikely that that implementation can be modified.

      The solution for this is to check for UGI equivalence in HCatalog (i.e. in the Hive metastore), using an cache for UGI instances in the shims.

      I have a patch to fix this. I'll upload it shortly. I just ran an overnight test to confirm that the memory-leak has been arrested.

      Attachments

        1. Hive_3098.patch
          7 kB
          Mithun Radhakrishnan
        2. Hive-3098_(FS_closeAllForUGI()).patch
          2 kB
          Mithun Radhakrishnan
        3. hive-3098.patch
          5 kB
          Mithun Radhakrishnan

        Issue Links

          Activity

            People

              mithun Mithun Radhakrishnan
              mithun Mithun Radhakrishnan
              Votes:
              0 Vote for this issue
              Watchers:
              18 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: