Flume Tail a File

Я новичок в Flume-Ng, и мне нужна помощь в сохранении файла. У меня есть кластер, на котором работает Hadoop, а Flume работает удаленно. Я общаюсь с этим кластером с помощью шпатлевки. Я хочу сохранить файл на своем ПК и поместить его в HDFS в кластере. Я использую для этого следующий код.

#flume.conf: http source, hdfs sink
# Name the components on this agent 

tier1.sources = r1
tier1.sinks = k1
tier1.channels = c1


# Describe/configure the source
tier1.sources.r1.type = exec
tier1.sources.r1.command = tail -F /(Path to file on my PC)


# Describe the sink
tier1.sinks.k1.type = hdfs
tier1.sinks.k1.hdfs.path = /user/ntimbadi/flume/
tier1.sinks.k1.hdfs.filePrefix = events-
tier1.sinks.k1.hdfs.round = true
tier1.sinks.k1.hdfs.roundValue = 10
tier1.sinks.k1.hdfs.roundUnit = minute



 # Use a channel which buffers events in memory
 tier1.channels.c1.type = memory
 tier1.channels.c1.capacity = 1000
 tier1.channels.c1.transactionCapacity = 100


 # Bind the source and sink to the channel
 tier1.sources.r1.channels = c1
 tier1.sinks.k1.channel = c1

Я считаю, что ошибка в источнике. Этот вид источника не требует имени хоста или IP-адреса для поиска (в этом случае это должен быть мой компьютер). Может ли кто-нибудь просто дать мне подсказку о том, как сохранить файл на моем ПК, чтобы загрузить его в удаленно расположенную HDFS с помощью Flume.


person RazorProgrammer    schedule 06.06.2013    source источник


Ответы (1)


Исходный код exec в вашей конфигурации будет работать на машине, на которой вы запускаете агент tier1 флюма. Если вы хотите собирать данные с другой машины, вам также нужно будет запустить агент Flume на этой машине; подытоживая нужно:

  • агент (remote1), работающий на удаленной машине с источником avro, который будет прослушивать события от агентов-сборщиков и действовать как агрегатор.
  • агент (local1), работающий на вашей машине (для работы в качестве сборщика), который имеет exec источник и отправляет данные удаленному агенту через avro приемник.

Или, в качестве альтернативы, у вас может быть только один агент Flume, работающий на вашем локальном компьютере (с той же конфигурацией, которую вы опубликовали), и установить путь hdfs как «hdfs://REMOTE_IP/hdfs/path» (хотя я не совсем уверен, что это будет работай).

edit: Ниже приведены примеры конфигураций для сценария с двумя агентами (без некоторых изменений они могут не работать).

remote1.channels.mem-ch-1.type = memory

remote1.sources.avro-src-1.channels = mem-ch-1
remote1.sources.avro-src-1.type = avro
remote1.sources.avro-src-1.port = 10060
remote1.sources.avro-src-1.bind = 10.88.66.4 /* REPLACE WITH YOUR MACHINE'S EXTERNAL IP */

remote1.sinks.k1.channel = mem-ch-1
remote1.sinks.k1.type = hdfs
remote1.sinks.k1.hdfs.path = /user/ntimbadi/flume/
remote1.sinks.k1.hdfs.filePrefix = events-
remote1.sinks.k1.hdfs.round = true
remote1.sinks.k1.hdfs.roundValue = 10
remote1.sinks.k1.hdfs.roundUnit = minute

remote1.sources = avro-src-1
remote1.sinks = k1
remote1.channels = mem-ch-1

а также

local1.channels.mem-ch-1.type = memory

local1.sources.exc-src-1.channels = mem-ch-1
local1.sources.exc-src-1.type = exec
local1.sources.exc-src-1.command = tail -F /(Path to file on my PC)

local1.sinks.avro-snk-1.channel = mem-ch-1
local1.sinks.avro-snk-1.type = avro
local1.sinks.avro-snk-1.hostname = 10.88.66.4 /* REPLACE WITH REMOTE IP */
local1.sinks.avro-snk-1.port = 10060

local1.sources = exc-src-1
local1.sinks = avro-snk-1
local1.channels = mem-ch-1
person Cihan Keser    schedule 07.06.2013
comment
Сэр, я использую Flume-Ng, а не Flume-oG. - person RazorProgrammer; 07.06.2013
comment
Я знаю, я имел в виду collector и aggregator как имена для ваших агентов, вы можете так же называть их agent1 и agent2... - person Cihan Keser; 07.06.2013
comment
Джихат спасибо за помощь. У вас есть какие-либо ссылки или какой-либо образец кода. Также, чтобы объяснить вам реальную ситуацию, я обращаюсь к кластеру из 8 машин через шлюзовой сервер с агентом Flume, работающим на каждой машине в кластере. Я хотел спросить, на какой машине должен быть мой исходный файл? Caz прямо сейчас на сервере шлюза. - person RazorProgrammer; 07.06.2013
comment
См. отредактированный ответ для примера конфигурации. Что касается кластера из 8 машин, вы должны добавить больше информации о своем кластере в вопросе, если вам тоже нужна помощь по этому поводу. Вы можете использовать что-то вроде процессор приемника балансировки нагрузки в качестве объясняется в руководстве пользователя Flume. - person Cihan Keser; 08.06.2013