一、原理

1.Linux环境Flume安装配置及使用
2.Apache Flume 入门教程
3.flume的部署和avro source测试;netcast source测试
4.Flume部署及使用
5.Flume监听本地Linux-hive日志文件采集到HDFS

1.Flume组件

  1. Flume的作用: 可用于实时计算和离线计算的数据源采集工具 。
  2. Flume 的核心(agent)就是把数据从数据源收集过来,再送到目的地。为了保证高可靠输送一定成功,
    在送到目的地之前,会先缓存数据,待数据真正到达目的地后,删除自己缓存的数据。
  3. Flume : 传输的数据的基本单位是 Event,如果是文本文件,通常是一行记录,这也是事务的基本单位。
  • Event : (包含:headers:{} 、body) 从 Source,流向 Channel,再到 Sink,本身为一个 byte 数组,在
    flume中使用事件作为传输的基本单元。
  • Source : 数据源,用户从数据发生器采集接收数据,source产生数据流,同时会把产生的数据流以Flume的
    event格式传输到一个或者多个channel。
  • Channel : 就像一个管道(队列),接收 Source 的输出,再推送给 Sink 消费。数据直到进入到下一个Channel中
    或者进入终端才会被删除。即:中转Event临时存储,在 sources 和 sinks之间起一个连接作用 。Channel 是一
    个完整的事务,这一点保证了数据在收发的时候的一致性. 并且它可以和任意数量的source和sink链接。
  • Sink : 下沉,取出 Channel 中的数据,然后送给外部源(HDFS、HBase)或者其他 Source。

Flume组件简介

2.安装与配置

(1).Flume前提环境

java环境

(2).解压apache-flume-1.6.0-bin.tar.gz安装包到目标目录下

# 解压
tar -zxvf apache-flume-1.6.0-bin.tar.gz.tar.gz -C /usr/local
# 更改名字
cd /usr/local
mv apache-flume-1.6.0-bin flume

(3).修改配置文件: flume-env.sh

# 进入配置文件目录
cd /usr/local/flume/conf
# 复制配置文件
cp flume-env.sh.template flume-env.sh
# 修改以下信息
vi flume-env.sh
export JAVA_HOME=/usr/local/jdk

(4).配置环境变量

# 打开配置文件
vi /etc/profile
# 追加以下内容
export FLUME_HOME=/usr/local/flume
export PATH=$PATH:$FLUME_HOME/bin
# 声明环境变量,即让环境变量立即生效
source /etc/profile
# 使用命令查看Flume版本信息
flume-ng version
# 执行结果
Flume 1.6.0
Source code repository: https://git-wip-us.apache.org/repos/asf/flume.git
Revision: 2561a23240a71ba20bf288c7c2cda88f443c2080
Compiled by hshreedharan on Mon May 11 11:15:44 PDT 2015
From source with checksum b29e416802ce9ece3269d34233baf43f

(5).配置Flume示例1 -- netcat source

netcat source + memory channel + logger sink
# 使用Flume的关键就是写配置文件,分别配置Source、Channel、Sink,然后把三者串联起来; 比如这里写一个配置文
件$FLUME_HOME/conf/example_netcat.conf,使用netcat source、memory channel、logger sink,
# example_netcat.conf内容如下:
a1.sources = r1
a1.sinks = k1
a1.channels = c1
a1.sources.r1.type = netcat
a1.sources.r1.bind = master
a1.sources.r1.port = 55555
a1.sinks.k1.type = logger
a1.channels.c1.type = memory
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

(6).启动Flume agent

flume-ng agent 使用ng启动agent
--name a1指定的agent别名
--conf YYYY/ 指定配置所在的文件夹
--conf-file YYYY/XXXXXX 指定配置文件
-Dflume.root.logger=INFO,console 可选,指定日志输出级别(输出到控制台)
& 可选,Flume在后台运行
# 命令示例,根据指定的配置文件启动Agent
flume-ng agent \
--name a1 \
--conf $FLUME_HOME/conf \
--conf-file $FLUME_HOME/conf/example_netcat.conf \
-Dflume.root.logger=INFO,console

(7).使用telnet输入数据验证

telnet master 55555
# 启动后输入内容123就可以在Flume看到如下数据:
Event: { headers:{} body: 31 32 33 0D 123. }
Event是FLume数据传输的基本单元
Event = 可选的header + byte array

wangyq_sure
21 声望0 粉丝

认真学习、思考、反思、总结、分享日常的编程经验~~