我已将数据文件上载到Dataproc中项目的GCS存储桶中。现在,我想将该文件复制到HDFS。我该怎么办?
答案 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连接器实现了Hadoop的分布式文件系统接口,因此在大多数情况下,它可以用作HDFS的直接替代。当您依靠(大多数)原子文件/目录操作或想要使用对延迟敏感的应用程序(如HBase)时,例外是值得注意的。 Dataproc HDFS migration guide很好地概述了数据迁移。