2014-10-02 14 views
9

Ho un sacco di file binari compressi in formato * gz. Questi sono generati su un nodo remoto e devono essere trasferiti su HDFS che si trova su uno dei server del datacenter.Trasferimento di file da nodo remoto a HDFS con Flume

Sto esplorando l'opzione di inviare i file con Flume; Esplorerò l'opzione di farlo con una configurazione di Spooling Directory, ma a quanto pare funziona solo quando la directory del file si trova localmente sullo stesso nodo HDFS.

Qualche suggerimento su come affrontare questo problema?

risposta

2

Per questo caso non esiste una soluzione pronta per l'uso. Ma potresti provare queste soluzioni:

  1. È possibile creare la propria implementazione di origine per tale scopo (utilizzando Flume SDK). Ad esempio, this project sembra essere in grado di connettersi alla directory remota da ssh e utilizzarlo come origine.
  2. È possibile creare uno script programmato personalizzato per copiare periodicamente i file remoti nella directory di spool locale, quindi utilizzarlo come origine dir dello spool per l'agente flume.
  3. Si potrebbe provare a creare un altro script per leggere i dati remoti e quindi scriverlo nei suoi output e utilizzare tale script nello Exec Source.
  4. È possibile individuare il canale (e l'agente) sulla macchina, in cui si trovano i dati (vedere Can Spool Dir of flume be in remote machine?).
7

Perché non si eseguono due agenti Flume diversi, uno sul computer remoto e uno sul nodo della data. L'agente sulla macchina remota può leggere la directory di spooling e inviarla ad avro sink. E l'agente sul datanode può leggere attraverso avro source e scaricare i dati su HDFS.

Problemi correlati