2015-03-18 2 views
0

Я новичок в flume. , но я хочу передать данные о погоде на любой сайт в мое местоположение hdfs. так что я создал раковина, источник и канал ... как нижеFlume to stream в данных о погоде

weather.channels= memory-channel 
weather.channels.memory-channel.capacity=10000 
weather.channels.memory-channel.type = memory 
weather.sinks = hdfs-write 
weather.sinks.hdfs-write.channel=memory-channel 
weather.sinks.hdfs-write.type = logger 
weather.sinks.hdfs-write.hdfs.path = hdfs://localhost:8020/user/hadoop/flume 
weather.sinks.hdfs-write.rollInterval = 1200 
weather.sinks.hdfs-write.hdfs.writeFormat=Text 
weather.sinks.hdfs-write.hdfs.fileType=DataStream 
weather.sources= Weather 
weather.sources.Weather.bind = api.openweathermap.org/data/2.5/forecast/city?id=524901&APPID=******************************** 
weather.sources.Weather.channels=memory-channel 
weather.sources.Weather.type = netcat 
weather.sources.Weather.port = 80 

так я использую здесь API для работы с этим. Что еще я могу использовать для потоковой передачи данных о погоде, какого веб-сайта я могу использовать или какого API я должен использовать для настройки источника? При выполнении команды водовода-нг, чтобы запустить агент, я получаю следующее

15/03/18 11:13:28 ERROR lifecycle.LifecycleSupervisor: Unable to start EventDrivenSourceRunner:{ 
source:org.apache.flume.source.http.HTTPSource{name:Weather,state:IDLE} } - Exception follows. 
java.lang.IllegalStateException: Running HTTP Server found in 
source:Weather before I started one.Will not attempt to start. 
at com.google.common.base.Preconditions.checkState(Preconditions.java:145)at org.apache.flume.source.http.HTTPSource.start(HTTPSource.java:189) 
at org.apache.flume.source.EventDrivenSourceRunner.start(EventDrivenSourceRunner.java:44) 
at org.apache.flume.lifecycle.LifecycleSupervisor$MonitorRunnable.run(LifecycleSupervisor.java:251) 
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:304) 
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:178) 
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
at java.lang.Thread.run(Thread.java:745) 
C15/03/18 11:13:31 INFO lifecycle.LifecycleSupervisor: Stopping lifecycle supervisor 10 
15/03/18 11:13:31 INFO node.PollingPropertiesFileConfigurationProvider: Configuration provider stopping 
15/03/18 11:13:31 INFO instrumentation.MonitoredCounterGroup: Component type: CHANNEL, name: memory-channel stopped 

ответ

0

ошибка «lyfecycle» Вы видите, является причиной предыдущей ошибки, пытаясь запустить сервер HTTP.

Исходная ошибка, вероятно, связана с попыткой привязки к привилегированному порту 80 с пользователем без пользователя. Измените порт на> 1024, например. 8080

Однако, он не будет работать так, как вы пытаетесь использовать. Источник http или netcat прислушивается к вызовам, не идет выбор URL, который вы устанавливаете в bind.

Я вижу два варианта:

  1. Создать Линукс демон идти в Wget или локон к этому URL через регулярные промежутки времени, сохранить результат в файл, а затем настроить желоб с источником золотника.
  2. Создайте собственный источник Flume, который объединяет этот URL через регулярные интервалы