flume1.7 入门

Posted fengyuwuqing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flume1.7 入门相关的知识,希望对你有一定的参考价值。

工作原因要用到flume来采集日志,简单接触后写下来一些,随更。
详细请看官网
http://flume.apache.org/releases/content/1.7.0/FlumeUserGuide.html#a-simple-example

flume依赖Java环境,此版本至少要1.7以上的java

 

Openjdk 安装

Linux:

1.下载tar.gz的安装包(我下载的是Adopt 11 LTS版)

2.放入指定目录(mkdir /usr/bin/jdk11)

   /usr/bin/jdk11

3.添加环境变量(全局/etc/profile    用户vim ~/.bashrc)

   export JAVA_HOME=/usr/lib/jdk11

   export JRE_HOME=${JAVA_HOME}/jre

   export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

   export PATH=.:${JAVA_HOME}/bin:$PATH

4.source /etc/profile

5.测试 java -version

 

flume配置

简单描述:source收集信息,sinks推送信息到其他源或消息队列(kafka,MQ...)或存储(es,HDSF...),channel是前两者传输的管道(有缓存的作用)。

一 配置java的环境变量
1. cp flume-env.sh.template flume-env.sh
2. vim flume-env.sh +22
    export JAVA_HOME=/usr/lib/jdk11
3. 检验 ./bin/flume-ng version

 

二 配置文件
vim ./conf/example.conf:单节点Flume配置

#命名此代理上的组件
a1.sources = r1
a1.sinks = k1
a1.channels = c1

#描述/配置源(type的类型是固定的,但有多个应用场景的类型)
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 44444

#描述接收器
a1.sinks.k1.type = logger

#使用一个通道来缓冲事件到内存
a1.channels.c1.type = 内存
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

#将源和接收器绑定到通道
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

 

三 启动
1. $ bin/flume-ng agent --conf conf --conf-file example.conf --name a1 -Dflume.root.logger=INFO,console
2. $ telnet localhost 44444
正在尝试127.0.0.1 ...
已连接到localhost.localdomain(127.0.0.1)。
转义字符为‘^]‘。
你好,世界!<ENTER>
确定
3.原始的Flume终端将在日志消息中输出事件。

19年12月6日15 :32:19 INFO source.NetcatSource:源起
19年12月6日15 :32:19 INFO source.NetcatSource:创建的ServerSocket:sun.nio.ch.ServerSocketChannelImpl [/127.0.0.1:44444]
19年12月6日15 :32:34 INFO sink.LoggerSink:事件:{头:{}体:48 65 6C 6F 6C 20 77 72 6F 6C 64 21 0D世界你好!}

其他用法:
1.将/usr/logs/log.10的内容发送到在该端口上监听的Flume源(这个应该是比较常用的)
$ bin/flume-ng avro-client -H localhost -p 41414 -F /usr/logs/log.10

2.exec
# Describe/configure the source
a1.sources = r1
a1.channels = c1
a1.sources.r1.type = exec
a1.sources.r1.command = tail -F / var / log / secure
a1.sources.r1.channels = c1

3.常用的source 基本有:
avro 监听一个端口,或从外部的avro客户端流接收事件event(多对一)
spooldir 监听一个目录,有新文件后将采集

4.常用的sinks(输出):
kafka
avro
elasticsearch

5.channel 连接源和sinks的管道(可缓存事件)
基本不用管,很少更改(可改为kafka等来缓存事件)

以上是关于flume1.7 入门的主要内容,如果未能解决你的问题,请参考以下文章

重磅:Flume1-7结合kafka讲解

SIX Spark Streaming 编程初级实践

Flume官方文档翻译——Flume 1.7.0 User Guide (unreleased version)中一些知识点

Flume官方文档翻译——Flume 1.7.0 User Guide (unreleased version)

Flume官方文档翻译——Flume 1.7.0 User Guide (unreleased version)

入门设计模式之汇总篇