flume主要用于日志采集,其中的agent里面包含3个核心的组件:source(采集/输入)—->channel(缓存/管道)—–>sink(输出),类似生产者、仓库、消费者的架构。
source:source组件是专门用来收集数据的,可以处理各种类型、各种格式的日志数据,包括avro、thrift、exec、jms、spooling directory、netcat、sequence generator、syslog、http、legacy、自定义。
channel:source组件把数据收集来以后,临时存放在channel中,即channel组件在agent中是专门用来存放临时数据的——对采集到的数据进行简单的缓存,可以存放在memory、jdbc、file等等。
sink:sink组件是用于把数据发送到目的地的组件,目的地包括hdfs、logger、avro、thrift、ipc、file、null、hbase、solr、自定义。
Flume与Kafka对比可参看文章末尾部分
Flume
在具体介绍本文内容之前,先给大家看一下Hadoop业务的整体开发流程: