从阅读官网上的用户指南来学习Flume
看官网的介绍Flume is a distributed, reliable, and available service for efficiently collecting, aggregating, and moving large amounts of log data. It has a simple and flexible architecture based on streaming data flows. It is robust and fault tolerant with tunable reliability mechanisms and many failover and recovery mechanisms. It uses a simple extensible data model that allows for online analytic application.
从官方的描述,我们得知Flume是一个用于高效收集、聚合和移动大量日志数据的分布式、可靠的、可用的服务。它有一个简单而灵活的基于数据流的结构。它具有可调的可靠性机制和许多故障转移和恢复机制,具有强大的容错能力。它用一个简单的可扩展数据模型,能够在线分析应用程序。
一、安装flume
1)从官网上得知,安装flume需要JDK
2)从http://archive.cloudera.com/cdh5/cdh/5/下载flume-ng-1.6.0-cdh5.7.0.tar.gz
wget http://archive.cloudera.com/cdh5/cdh/5/flume-ng-1.6.0-cdh5.7.0.tar.gz 下载安装包
tar -zxvf flume-ng-1.6.0-cdh5.7.0.tar.gz -C /home/app 解压flume安装包,用-C指定安装位置
3)为方便使用,我们将flume配置到环境变量
vi ~/.bash_profile
添加如下内容
export FLUME_HOME=/home/app/apache-flume-1.6.0-cdh5.7.0-bin
export PATH=$FLUME_HOME/bin:$PATH
二、Flume配置文件修改,$FLUME_HOME/conf目录下的flume-env.sh
cp flume-env.sh.templata flume-env.sh #复制一份模板
vi flume-env.sh
将下图内容改为java环境变量的地址
三、使用Flume从指定网络端口采集数据输出到控制台
阅读官网可知使用flume启动一个agent,需要用到一个指定包含source、channel、sink的配置文件,使用flume的关键就是写配置文件
A)配置Soucre B)配置Channel C)配置Sink D)关联以上三个组件
1)flume官方案例
在conf目录下新建example.conf内容从官网copy如下
# example.conf: A single-node Flume configuration
# Name the components on this agent 第一步先给agent的组件起名字
#sources、sinks、channels说明一个agent可以有多个source、sink、channel
a1.sources = r1 #a1是agent的名字 r1是sources的名字
a1.sinks = k1 #k1是sinks的名字
a1.channels = c1 #c1是channels的名字
# Describe/configure the source 配置agent名称为r1的source
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 44444 #监听44444端口
# Describe the sink 配置agent名称为k1的sink
a1.sinks.k1.type = logger
# Use a channel which buffers events in memory 配置agent名称为c1的channel
a1.channels.c1.type = memory
#a1.channels.c1.capacity = 1000 注释掉不需要
#a1.channels.c1.transactionCapacity = 100 注释掉不需要
# Bind the source and sink to the channel 将三个组件串起来
a1.sources.r1.channels = c1 #把source r1的channel指定为c1
a1.sinks.k1.channel = c1 #把sink k1的channel指定为c1
配置文件编辑好之后从官网copy启动命令
flume-ng agent \
--conf $FLUME_HOME/conf \
--conf-file $FLUME_HOME/conf/example.conf \
--name a1 \
-Dflume.root.logger=INFO,console
flume-ng agent \
--conf $FLUME_HOME/conf \ fluem配置文件路径
--conf-file $FLUME_HOME/confexample.conf \ 启动agent需要的配置文件
--name a1 \ agent名字
- Dflume.root.logger=INFO,console 输出内容到控制台
flume启动之后可以用命令telnet 配置文件中的端口来测试
telnet localhost 44444 PS:CTRL+]键,这时会强制退到telnet命令界面下,再用quit可退出telnet
随便输入一些数据回车,会看到启动的flume agent将接受到的内容输出到控制台