在CentOS 7上安装配置Flume

文/xieruijun 2015-12-27 04:00:00

简介

大数据时代的各种互联网应用产生大量的数据和日志,需要将这些日志收集起来,进行统一的分析处理,在应用系统和数据分析系统之间需要一座桥梁,进行通用的日志收集处理。Apache Flume 是一种分布式的、高可靠的、高可用的日志收集聚合系统,将不同来源海量的日志数据传输到集中的数据存储。Flume 最初由Cloudera开发,后成为Apache基金会顶级项目。Flume 可用于日志数据、网络流量数据、社交网络数据、邮件数据等不同数据源的处理,与Facebook的Scribe、Yahoo的Chukwa、LinkedIn的Kafka类似,是一款特性优异,简单易用的日志系统。

Flume agent 负责把外部事件流(数据流)传输到指定下一跳,agent包括source(数据源)、channel(传输通道)、sink(接收端)。Flume agent可以多跳级联,组成复杂的数据流。 Flume 支持多种类型的source:Avro数据源、Thrift数据源、Kafka数据源、NetCat数据源、Syslog数据源、文件数据源、自定义数据源等,可灵活地与应用系统集成,需要较少的开发代价。 Flume 能够与常见的大数据工具结合,支持多种sink:HDFS、Hive、HBase、Kafka等,将数据传输到这些系统,进行进一步分析处理。

本教程主要介绍Flume 1.6.0在美团云 CentOS 7主机上的安装和配置,并进行功能验证。

安装

安装JDK

Flume 运行系统要求1.6以上的Java 运行环境,从oracle网站下载JDK 安装包,解压安装:

$tar zxvf jdk-8u65-linux-x64.tar.gz
$mv jdk1.8.0_65 java

设置Java 环境变量:

JAVA_HOME=/opt/java
PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME PATH

安装Flume

官网下载Flume 二进制安装包,解压安装:

tar zxvf apache-flume-1.6.0-bin.tar.gz
mv apache-flume-1.6.0-bin flume
cd flume

配置

source 使用 necat 类型,sink 采用 file_roll 类型, 从监听端口获取数据,保存到本地文件。 拷贝配置模板:

cp conf/flume-conf.properties.template conf/flume-conf.properties

编辑配置如下:

# The configuration file needs to define the sources,
# the channels and the sinks.
# Sources, channels and sinks are defined per agent,
# in this case called 'agent'

agent.sources = r1
agent.channels = c1
agent.sinks = s1

# For each one of the sources, the type is defined
agent.sources.r1.type = netcat
agent.sources.r1.bind = localhost
agent.sources.r1.port = 8888

# The channel can be defined as follows.
agent.sources.r1.channels = c1

# Each sink's type must be defined
agent.sinks.s1.type = file_roll
agent.sinks.s1.sink.directory = /tmp/log/flume

#Specify the channel the sink should use
agent.sinks.s1.channel = c1

# Each channel's type is defined.
agent.channels.c1.type = memory

# Other config values specific to each type of channel(sink or source)
# can be defined as well
# In this case, it specifies the capacity of the memory channel
agent.channels.c1.capacity = 100

功能验证

1.建立输出目录

mkdir -p /tmp/log/flume

2.启动服务

bin/flume-ng agent --conf conf -f conf/flume-conf.properties -n agent&

运行日志位于logs目录,或者启动时添加-Dflume.root.logger=INFO,console 选项前台启动,输出打印日志,查看具体运行日志,服务异常时查原因。

3.发送数据

telnet localhost 8888
输入
hello world!
hello Flume!

4.查看数据文件 查看 /tmp/log/flume 目录文件:

cat /tmp/log/flume/1447671188760-2
hello world!
hello Flume!

与Kafka 集成

Flume 可以灵活地与Kafka 集成,Flume侧重数据收集,Kafka侧重数据分发。 Flume可配置source为Kafka,也可配置sink 为Kafka。 配置sink为kafka例子如下

agent.sinks.s1.type = org.apache.flume.sink.kafka.KafkaSink
agent.sinks.s1.topic = mytopic
agent.sinks.s1.brokerList = localhost:9092
agent.sinks.s1.requiredAcks = 1
agent.sinks.s1.batchSize = 20
agent.sinks.s1.channel = c1

Flume 收集的数据经由Kafka分发到其它大数据平台进一步处理。

总结

本文主要介绍了Flume的安装和简单应用,配置测试场景验证了Flume 功能。可根据实际应用场景配置Flume,设置对应的source、sink,方便地收集各种应用数据。

参考资料

知识共享许可协议
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。

最新文章 全部