如何使用Google Cloud将Dataproc中的GCS存储桶中的文件复制到HDFS?

时间:2019-01-29 21:11:48

标签: hadoop google-cloud-dataproc

我已将数据文件上载到Dataproc中项目的GCS存储桶中。现在,我想将该文件复制到HDFS。我该怎么办?

1 个答案:

答案 0 :(得分:5)

用于单个“小”文件

您可以使用hdfs复制命令将单个文件从Google Cloud Storage(GCS)复制到HDFS。请注意,您需要从集群中的一个节点上运行它:

hdfs dfs -cp gs://<bucket>/<object> <hdfs path>

这是有效的,因为hdfs://<master node>是默认文件系统。您可以根据需要明确指定方案和NameNode:

hdfs dfs -cp gs://<bucket>/<object> hdfs://<master node>/<hdfs path>

请注意,GCS对象使用gs:方案。路径应与使用gsutil时的路径相同。

对于“大”文件或文件大目录

使用hdfs dfs时,数据通过本地计算机传输。如果要复制的数据集很大,则可能需要使用DistCp在集群上并行执行此操作:

hadoop distcp  gs://<bucket>/<directory> <HDFS target directory>

有关详细信息,请咨询DistCp documentation

考虑将数据保留在GCS上

最后,考虑将数据保留在GCS上。由于GCS连接器实现了Hadoop的分布式文件系统接口,因此在大多数情况下,它可以用作HDFS的直接替代。当您依靠(大多数)原子文件/目录操作或想要使用对延迟敏感的应用程序(如HBase)时,例外是值得注意的。 Dataproc HDFS migration guide很好地概述了数据迁移。

相关问题