 <p>You have both the option. You could stream data directly from Amazon S3 or first copy it to HDFS and then process it locally. The first way is good if you only intend to read the data once. And if your plan is to query the same input data multiple times, then you'd probably want to copy it to HDFS first.</p> <p>And yes, by using S3 as an input to MapReduce you lose the data locality optimization. Also, if your plan is to use S3 as a replacement for HDFS, I would recommend you to go with <code>S3 Block FileSystem</code> instead of <code>S3 Native FileSystem</code> as it imposes a limit of 5GB on file size.</p> <p>HTH</p>