amazon-s3 - 如何将文件从 S3 复制到 Amazon EMR HDFS?

标签 amazon-s3 hadoop hive hdfs emr

我在 EMR 上运行 hive , 并需要将一些文件复制到所有 EMR 实例。

据我所知,一种方法是将文件复制到每个节点上的本地文件系统,另一种方法是将文件复制到 HDFS,但是我还没有找到直接从 S3 复制到 HDFS 的简单方法。

解决这个问题的最佳方法是什么?

最佳答案

最好的方法是使用 Hadoop 的 distcp 命令。示例(在其中一个集群节点上):

% ${HADOOP_HOME}/bin/hadoop distcp s3n://mybucket/myfile/root/myfile

这会将名为 myfile 的文件从名为 mybucket 的 S3 存储桶复制到 HDFS 中的 /root/myfile。请注意,此示例假定您在“ native ”模式下使用 S3 文件系统;这意味着 Hadoop 将 S3 中的每个对象视为一个文件。如果您改为在 block 模式下使用 S3,则需要将上例中的 s3n 替换为 s3。有关 native S3 和 block 模式之间差异的更多信息,以及对上述示例的详细说明,请参阅 http://wiki.apache.org/hadoop/AmazonS3 .

我发现 distcp 是一个非常强大的工具。除了能够使用它来将大量文件复制进出 S3 之外,您还可以对大型数据集执行快速的集群到集群复制。 distcp 不是通过单个节点推送所有数据,而是使用多个并行节点来执行传输。与作为中介将所有内容复制到本地文件系统的替代方案相比,这使得 distcp 在传输大量数据时要快得多。

关于amazon-s3 - 如何将文件从 S3 复制到 Amazon EMR HDFS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7487292/

相关文章:

java - AmazonS3Builder 生成有效的 AmazonS3 对象,但最终返回 null

csv - 如何处理 .csv 输入以在 Tensorflow Serving 批量转换中使用?

python - AWS Lambda 函数触发两次

hadoop - putHDFS处理器中的Nifi错误:无法确定当前用户

mongodb - Pig&MongoDB-如何使用MongoLoader加载文档嵌套字段?

python - 使用 python 流解析从 org.apache.avro.mapred.AvroAsTextInputFormat 生成的 json 字符串

hadoop - 执行前配置单元查询执行估计的强度

amazon-web-services - 'NULL' 中的 AWS 策略条件运算符 'YAML'

hadoop - 如何使用 Hive 将 '\N' 字符转换为空字符串

hive - 如何将字符串转换为配置单元中的结构数组并爆炸?