Передача файлов с удаленного узла на HDFS с помощью Flume

У меня есть куча двоичных файлов, сжатых в формат *gz. Они генерируются на удаленном узле и должны быть переданы в HDFS, расположенный на одном из серверов центра обработки данных.

Я изучаю возможность отправки файлов с Flume; я исследую возможность сделать это с конфигурацией каталога буферизации, но, по-видимому, это работает только тогда, когда каталог файла находится локально на том же узле HDFS.

любые предложения, как справиться с этим проблема?

2 ответов


для такого случая нет готового решения. Но вы можете попробовать эти способы:

  1. вы можете создать свою собственную исходную реализацию для этой цели (используя Flume SDK). Например, этот проект кажется, можно подключиться к удаленному dir по ssh и использовать его в качестве источника.
  2. вы можете создать пользовательский запланированный скрипт для периодического копирования удаленных файлов в локальный каталог катушки, а затем использовать его в качестве источника буферизации dir для flume агент.
  3. вы можете попробовать создать другой скрипт для чтения удаленных данных, а затем записать его в свой вывод и использовать такой скрипт в Exec Source.
  4. вы можете найти свой flume (и агент) на машине, где находятся данные (см. может ли катушка Dir flume находиться в удаленной машине? ).

Почему бы вам не запустить два разных агента Flume, один на удаленной машине и один на вашем узле даты. Агент на удаленном компьютере может прочитать каталог буферизации и отправить его в приемник avro. И агент на datanode может прочитать Через Источник avro и сбросить данные в HDFS.