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

Avoid creating "._COPYING_" temporary file when copying file to Swift file system

    XMLWordPrintableJSON

Details

    • New Feature
    • Status: Resolved
    • Major
    • Resolution: Duplicate
    • 2.7.0
    • None
    • fs/swift
    • None

    Description

      When copy file from HDFS or local to another file system implementation, in CommandWithDestination.java, it creates a temp file by adding suffix ".COPYING". Once file is successfully copied, it will remove the suffix by rename().

      try

      { PathData tempTarget = target.suffix("._COPYING_"); targetFs.setWriteChecksum(writeChecksum); targetFs.writeStreamToFile(in, tempTarget, lazyPersist); targetFs.rename(tempTarget, target); }

      finally

      { targetFs.close(); // last ditch effort to ensure temp file is removed }

      It is not costly in HDFS. However, if copy to Swift file system, the rename process is to create a new file. It is not efficient if users copy a lot of files to swift file system. I did some tests, for a 1G file copying to swift, it will take 10% more time. We should only do the copy one time for Swift file system. Changes should be limited to the Swift driver level.

      Attachments

        Issue Links

          Activity

            People

              airbots Chen He
              airbots Chen He
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: