如何使用谷歌云将文件从Dataproc中的GCS存储桶复制到HDFS?

Div*_*hra 3 hadoop google-cloud-dataproc

我已将数据文件上传到Dataproc中项目的GCS存储桶.现在我想将该文件复制到HDFS.我怎样才能做到这一点?

Ben*_*hom 5

对于单个"小"文件

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

hdfs dfs -cp gs://<bucket>/<object> <hdfs path>
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为hdfs://<master node>它是默认的文件系统.如果需要,您可以显式指定方案和NameNode:

hdfs dfs -cp gs://<bucket>/<object> hdfs://<master node>/<hdfs path>
Run Code Online (Sandbox Code Playgroud)

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

对于"大"文件或大文件目录

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

hadoop distcp  gs://<bucket>/<directory> <HDFS target directory>
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅DistCp文档.

考虑将数据留在GCS上

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