2013-06-06 2 views
0

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

#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 

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

ответ

0

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

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

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

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

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 
+0

Сэр Я использую Подводящий канал-Нг и не Подводящий канал-OG. – RazorProgrammer

+0

Я знаю, я имел в виду имена 'collector' и' aggregator'as для ваших агентов, вы можете просто называть их «agent1» и «agent2» ... –

+0

Cihat благодарит за вашу помощь. У вас есть какие-либо ссылки или какой-либо образец кода. Кроме того, чтобы объяснить вам реальную ситуацию, я получаю доступ к кластеру из 8 машин через сервер шлюза с flume agent, запущенным на каждой машине в кластере. Я хотел спросить, на какой машине должен быть мой исходный файл? Caz вывела его на сервер шлюза. – RazorProgrammer