Giambattista Bloisi created HADOOP-20086:
--------------------------------------------

             Summary: S3A magic committer: option to save job data in a cluster 
filesystem with fs.s3a.committer.magic.tmp.path
                 Key: HADOOP-20086
                 URL: https://issues.apache.org/jira/browse/HADOOP-20086
             Project: Hadoop Common
          Issue Type: New Feature
          Components: cloud-storage
    Affects Versions: 3.5.0
            Reporter: Giambattista Bloisi


The S3A magic committer keeps all its job data in S3, under {{__magic}} in the 
destination. That includes the job and job attempt directories and the 
{{.pendingset}} file each task saves when it commits. So every task commit 
writes an object to S3, and job commit lists the job attempt directory in S3 
and reads every {{.pendingset}} back from it.

These are small objects on the commit path, which is where jobs are most 
sensitive to latency. A job with many tasks makes many S3 PUT, LIST and GET 
requests just for commit bookkeeping. On some S3-compatible stores this also 
runs into request throttling or listing consistency limits. The data is 
temporary and only used inside the job, so it doesn't need to be in S3; the 
job's cluster filesystem (e.g. HDFS) is a better place for it.

*Proposal:* add the option {{fs.s3a.committer.magic.tmp.path}}. When it is set, 
the magic committer keeps its job and job attempt directories, including the 
{{.pendingset}} files, under that path instead of under the destination. Task 
commit and job commit then save, list and read {{.pendingset}} files without 
any S3 requests. When it is unset, nothing changes.

Task output is still written under {{__magic}} in the destination, as the S3A 
filesystem needs that path to turn writes into delayed multipart uploads. To 
keep the per-file {{.pending}} data out of S3 too, also set 
{{fs.s3a.committer.magic.track.commits.in.memory.enabled}}.

{code:xml}
<property>
  <name>fs.s3a.committer.magic.tmp.path</name>
  <value>hdfs://cluster/tmp/s3a-magic</value>
</property>
<property>
  <name>fs.s3a.committer.magic.track.commits.in.memory.enabled</name>
  <value>true</value>
</property>
{code}



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to