我正在开发一个Java MapReduce应用程序,该应用程序必须能够为用户本地计算机上的某些图片提供上传服务到S3存储桶。
问题是应用程序必须在EC2群集上运行,因此我不确定在复制文件时如何引用本地计算机。 copyFromLocalFile(..)方法需要来自本地机器的路径,该路径将是EC2集群......
我不确定我是否正确陈述了问题,任何人都可以理解我的意思吗?
由于
答案 0 :(得分:1)
您也可以调查s3distcp:http://docs.amazonwebservices.com/ElasticMapReduce/latest/DeveloperGuide/UsingEMR_s3distcp.html
Apache DistCp是一个开源工具,可用于复制大量数据。 DistCp使用MapReduce以分布式方式进行复制 - 跨多个服务器共享复制,错误处理,恢复和报告任务。 S3DistCp是DistCp的扩展,经过优化可与Amazon Web Services配合使用,尤其是Amazon Simple Storage Service(Amazon S3)。使用S3DistCp,您可以有效地将大量数据从Amazon S3复制到HDFS,然后由Amazon Elastic MapReduce(Amazon EMR)作业流处理。您还可以使用S3DistCp在Amazon S3存储桶之间或从HDFS到Amazon S3复制数据。
答案 1 :(得分:0)
您需要先将userMachine中的文件提取到至少1个节点,然后才能通过MapReduce使用它们。
FileSystem
和FileUtil
函数指的是HDFS
上的路径或群集中某个节点的本地磁盘。
它无法引用用户的本地系统。 (也许如果你做了一些ssh设置......也许?)