Для одного «маленького» файла
Вы можете скопировать один файл из Google Cloud Storage (GCS) в HDFS, используя команду hdfs
copy.Обратите внимание, что вам нужно запустить это из узла в кластере:
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 для получения подробной информации.
Подумайте над тем, чтобы оставить данные в GCS
Наконец, вы можете оставить свои данные в GCS.Поскольку соединитель GCS реализует интерфейс распределенной файловой системы Hadoop, он может использоваться в качестве замены для HDFS в большинстве случаев.Заметными исключениями являются случаи, когда вы полагаетесь на (большинство) элементарных операций с файлами / каталогами или хотите использовать приложение, чувствительное к задержке, например HBase . Руководство по миграции HDFS Dataproc дает хороший обзор миграции данных.