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

    • Type: New Feature
    • Status: Resolved
    • Priority: Major
    • Resolution: Duplicate
    • Affects Version/s: 2.7.0
    • Fix Version/s: None
    • Component/s: fs/swift
    • Labels:
      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

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

                Dates

                • Created:
                  Updated:
                  Resolved: