Flume框架简介
- Flume提供一个分布式的,可靠的,对大数据量的日志进行高效收集、聚集、移动的服务。
- Flume基于流式架构,容错性强,也很灵活简单,主要用于在线实时分析。
- 角色
1. Source:用于采集数据,Source是产生数据流的地方,同时Source会将产生的数据流传输到 Channel,这个有点类似于Java IO部分的Channel
2. Channel:用于桥接Sources和Sinks,类似于一个队列。
3. Sink:从Channel收集数据,将数据写到目标源(可以是下一个Source,也可以是HDFS或者HBase) - Flume数据传输的基本单元(Event),以事件的形式将数据从源头送至目的地
- 传输过程:source监控某个文件,文件产生新的数据,拿到该数据后,将数据封装在一个Event中,并put到channel后commit提交,channel队列先进先出,sink去channel队列中拉取数据,然后写入到hdfs或者HBase中
安装
- 解压
tar -zxvf apache-flume-1.8.0-bin.tar.gz -C /usr/local
- 重命名
mv apache-flume-1.8.0-bin flume-1.8.0
- 修改配置文件
// 重命名 mv flume-env.sh.template flume-env.sh //修改配置信息 export JAVA_HOME=/usr/local/jdk1.8.0_211
- 配置环境变量
vim /etc/profile export FLUME_HOME=/usr/local/flume-1.8.0 export PATH=$PATH:$FLUME_HOME/bin source /etc/profile
案例一、 Flume监听端口,输出端口数据
- 安装telnet工具
rpm -ivh telnet-server-0.17-59.el7.x86_64.rpm rpm -ivh telnet-0.17-59.el7.x86_64.rpm
- 创建Flume Agent配置文件flume-telnet.conf
# Name the components on this agent a1.sources = r1 a1.sinks = k1 a1.channels = c1 # Describe/configure the source a1.sources.r1.type = netcat a1.sources.r1.bind = localhost a1.sources.r1.port = 44444 # Describe the sink