Передача файлов с удаленного узла на HDFS с помощью Flume
У меня есть куча двоичных файлов, сжатых в формат *gz. Они генерируются на удаленном узле и должны быть переданы в HDFS, расположенный на одном из серверов центра обработки данных.
Я изучаю возможность отправки файлов с Flume; я исследую возможность сделать это с конфигурацией каталога буферизации, но, по-видимому, это работает только тогда, когда каталог файла находится локально на том же узле HDFS.
любые предложения, как справиться с этим проблема?
2 ответов
для такого случая нет готового решения. Но вы можете попробовать эти способы:
- вы можете создать свою собственную исходную реализацию для этой цели (используя Flume SDK). Например, этот проект кажется, можно подключиться к удаленному dir по ssh и использовать его в качестве источника.
- вы можете создать пользовательский запланированный скрипт для периодического копирования удаленных файлов в локальный каталог катушки, а затем использовать его в качестве источника буферизации dir для flume агент.
- вы можете попробовать создать другой скрипт для чтения удаленных данных, а затем записать его в свой вывод и использовать такой скрипт в Exec Source.
- вы можете найти свой flume (и агент) на машине, где находятся данные (см. может ли катушка Dir flume находиться в удаленной машине? ).
Почему бы вам не запустить два разных агента Flume, один на удаленной машине и один на вашем узле даты. Агент на удаленном компьютере может прочитать каталог буферизации и отправить его в приемник avro. И агент на datanode может прочитать Через Источник avro и сбросить данные в HDFS.