一、Logger Sink

记录指定级别(比如INFO,DEBUG,ERROR等)的日志,通常用于调试

要求,在 --conf(-c )参数指定的目录下有log4j的配置文件

根据设计,logger sink将体内容限制为16字节,从而避免屏幕充斥着过多的内容。如果想要查看调试的完整内容,那么你应该使用其他的sink,也许可以使用file_roll sink,它会将日志写到本地文件系统中。

可配置项说明:

配置示例:

#配置Agent a1 的组件
a1.sources=r1
a1.channels=c1
a1.sinks=s1 #描述/配置a1的r1
a1.sources.r1.type=netcat
a1.sources.r1.bind=0.0.0.0
a1.sources.r1.port= #描述a1的s1
a1.sinks.s1.type=logger
#描述a1的c1
a1.channels.c1.type=memory
a1.channels.c1.capacity=
a1.channels.c1.transactionCapacity= #位channel 绑定 source和sink
a1.sources.r1.channels=c1
a1.sinks.s1.channel=c1

二、File Roll Sink

在本地系统中存储事件。

每隔指定时长生成文件保存这段时间内收集到的日志信息。

可配置参数说明:

配置示例:

#配置Agent a1 的组件
a1.sources=r1
a1.sinks=s1
a1.channels=c1 #描述/配置a1的source1
a1.sources.r1.type=netcat
a1.sources.r1.bind=0.0.0.0
a1.sources.r1.port= #描述sink
a1.sinks.s1.type=file_roll
a1.sinks.s1.sink.directory=/home/work/rolldata
a1.sinks.s1.sink.rollInterval= #描述内存channel
a1.channels.c1.type=memory
a1.channels.c1.capacity=
a1.channels.c1.transactionCapacity= #位channel 绑定 source和sink
a1.sources.r1.channels=c1
a1.sinks.s1.channel=c1

创建指定的文件目录 /home/work/rolldata

启动测试

../bin/flume-ng agent -c ./ -f ./template.conf -n a1

三、Avro Sink

是实现多级流动、扇出流(1到多) 扇入流(多到1) 的基础。

可配置项说明:

3.1  多级流动案例需求说明:

让01机的flume通过netcat source源接收数据,然后通过avro sink 发给02机==》02机的flume利用avro source源收数据,然后通过avro sink 传给03机==》03机通过avro source源收数据,通过logger sink 输出到控制台上(本例中,02机的ip:192.168.234.212  || 03机的ip:192.168.234.213)

实现步骤:

1.准备三台虚拟机,并安装好flume(关闭每台机器的防火墙)

2.配置每台flume的配置文件

3.启动测试

01机的配置示例:

#配置Agent a1 的组件
a1.sources=r1
a1.sinks=s1
a1.channels=c1 #描述/配置a1的source
a1.sources.r1.type=netcat
a1.sources.r1.bind=0.0.0.0
a1.sources.r1.port= #描述sink
a1.sinks.s1.type=avro
a1.sinks.s1.hostname=192.168.234.212
a1.sinks.s1.port=9999 #描述内存channel
a1.channels.c1.type=memory
a1.channels.c1.capacity=
a1.channels.c1.transactionCapacity= #位channel 绑定 source和sink
a1.sources.r1.channels=c1
a1.sinks.s1.channel=c1

02机的配置示例:

#配置Agent a1 的组件
a1.sources=r1
a1.sinks=s1
a1.channels=c1 #描述/配置a1的source
a1.sources.r1.type=avro
a1.sources.r1.bind=0.0.0.0
a1.sources.r1.port= #描述sink
a1.sinks.s1.type=avro
a1.sinks.s1.hostname=192.168.234.213
a1.sinks.s1.port= #描述内存channel
a1.channels.c1.type=memory
a1.channels.c1.capacity=
a1.channels.c1.transactionCapacity= #位channel 绑定 source和sink
a1.sources.r1.channels=c1
a1.sinks.s1.channel=c1

03机的配置示例:

#配置Agent a1 的组件
a1.sources=r1
a1.sinks=s1
a1.channels=c1 #描述/配置a1的source1
a1.sources.r1.type=avro
a1.sources.r1.bind=0.0.0.0
a1.sources.r1.port= #描述sink
a1.sinks.s1.type=logger #描述内存channel
a1.channels.c1.type=memory
a1.channels.c1.capacity=
a1.channels.c1.transactionCapacity= #位channel 绑定 source和sink
a1.sources.r1.channels=c1
a1.sinks.s1.channel=c1

3.2扇出流案例需求说明

01机发出的数据,让02,03来接收

实现步骤:

1.准备三台虚拟机,并安装好flume(关闭每台机器的防火墙)

2.配置每台flume的配置文件

3.启动测试

01机的配置文件:

#配置Agent a1 的组件
a1.sources=r1
a1.sinks=s1 s2
a1.channels=c1 c2 #描述/配置a1的source1
a1.sources.r1.type=netcat
a1.sources.r1.bind=0.0.0.0
a1.sources.r1.port= #描述sink
a1.sinks.s1.type=avro
a1.sinks.s1.hostname=192.168.234.212
a1.sinks.s1.port= a1.sinks.s2.type=avro
a1.sinks.s2.hostname=192.168.234.213
a1.sinks.s2.port=
#描述内存channel
a1.channels.c1.type=memory
a1.channels.c1.capacity=
a1.channels.c1.transactionCapacity= a1.channels.c2.type=memory
a1.channels.c2.capacity=
a1.channels.c2.transactionCapacity= #位channel 绑定 source和sink
a1.sources.r1.channels=c1 c2
a1.sinks.s1.channel=c1
a1.sinks.s2.channel=c2

shanchu.conf

02,03配置示例:

#配置Agent a1 的组件
a1.sources=r1
a1.sinks=s1
a1.channels=c1 #描述/配置a1的source1
a1.sources.r1.type=avro
a1.sources.r1.bind=0.0.0.0
a1.sources.r1.port= #描述sink
a1.sinks.s1.type=logger #描述内存channel
a1.channels.c1.type=memory
a1.channels.c1.capacity=
a1.channels.c1.transactionCapacity= #位channel 绑定 source和sink
a1.sources.r1.channels=c1
a1.sinks.s1.channel=c1

shanchu.conf

3.3 扇入案列需求说明

02,03机收到的数据都发往01

02,03的配置示例:

#配置Agent a1 的组件
a1.sources=r1
a1.sinks=s1
a1.channels=c1 #描述/配置a1的source1
a1.sources.r1.type=netcat
a1.sources.r1.bind=0.0.0.0
a1.sources.r1.port= #描述sink
a1.sinks.s1.type=avro
a1.sinks.s1.hostname=192.168.234.163
a1.sinks.s1.port= #描述内存channel
a1.channels.c1.type=memory
a1.channels.c1.capacity=
a1.channels.c1.transactionCapacity= #位channel 绑定 source和sink
a1.sources.r1.channels=c1
a1.sinks.s1.channel=c1

shanru.conf

01机的配置示例:

#配置Agent a1 的组件
a1.sources=r1
a1.sinks=s1
a1.channels=c1 #描述/配置a1的source1
a1.sources.r1.type=avro
a1.sources.r1.bind=0.0.0.0
a1.sources.r1.port= #描述sink
a1.sinks.s1.type=logger #描述内存channel
a1.channels.c1.type=memory
a1.channels.c1.capacity=
a1.channels.c1.transactionCapacity= #位channel 绑定 source和sink
a1.sources.r1.channels=c1
a1.sinks.s1.channel=c1

shanru.conf

四、HDFS Sink

此Sink将事件写入到Hadoop分布式文件系统HDFS中。

目前它支持创建文本文件和序列化文件。

对这两种格式都支持压缩。

这些文件可以分卷,按照指定的时间或数据量或事件的数量为基础。

它还通过类似时间戳或机器属性对数据进行 buckets/partitions 操作    It also buckets/partitions data by attributes like timestamp or machine where the event originated.

HDFS的目录路径可以包含将要由HDFS替换格式的转移序列用以生成存储事件的目录/文件名。

使用这个Sink要求haddop必须已经安装好,以便Flume可以通过hadoop提供的jar包与HDFS进行通信。

可配置项说明

配置项

说明

channel

type

hdfs

hdfs.path

HDFS 目录路径 (hdfs://namenode/flume/webdata/)

hdfs.inUseSuffix

.tmp        Flume正在处理的文件所加的后缀

hdfs.rollInterval

30        Number of seconds to wait before
举例:如果flume需要40s,30s=>1个文件  10s=>30s 1个文件

hdfs.rollSize

1024        File
size to trigger roll, in bytes (0: never roll based on file size)

hdfs.rollCount

10        Number
of events written to file before it rolled (0 = never roll based on number of
events)

hdfs.fileType

SequenceFile        File
format: currently SequenceFile, DataStream or CompressedStream

hdfs.retryInterval

80        Time
in seconds between consecutive attempts to close a file. Each close call
costs multiple RPC round-trips to the Namenode, so setting this too low can
cause a lot of load on the name node. If set to 0 or less, the sink will not
attempt to close the file if the first attempt fails, and may leave the file
open or with a ”.tmp” extension.

 

#配置Agent a1 的组件
a1.sources=r1
a1.sinks=s1
a1.channels=c1 #描述/配置a1的source1
a1.sources.r1.type=netcat
a1.sources.r1.bind=0.0.0.0
a1.sources.r1.port= #描述sink
a1.sinks.s1.type=hdfs
a1.sinks.s1.hdfs.path=hdfs://192.168.234.21:9000/flume
#处理数据的类型,DataStream为普通的文本类型
a1.sinks.s1.hdfs.fileType=DataStream #描述内存channel
a1.channels.c1.type=memory
a1.channels.c1.capacity=
a1.channels.c1.transactionCapacity= #位channel 绑定 source和sink
a1.sources.r1.channels=c1
a1.sinks.s1.channel=c1

报错是因为flume缺少相关hadoop的依赖jar包,找到以下的jar包,放到flume的lib目录下即可。

commons-configuration-1.6.jar

hadoop-auth-2.5.2.jar

hadoop-common-2.5.2.jar

hadoop-hdfs-2.5.2.jar

hadoop-mapreduce-client-core-2.5.2.jar

但是一个一个找特别麻烦,所以解决办法是将hadoop的jar包都拷贝到flume的lib目录下:

进入到hadoop安装目录的share目录下的hadoop目录

执行:scp common/*   common/lib/*   hdfs/*   hdfs/lib/*   mapreduce/*   mapreduce/lib/*   tools/lib/* 192.168.234.163:/home/software/flume/lib/

Flume的Sink的更多相关文章

  1. [bigdata] 使用Flume hdfs sink, hdfs文件未关闭的问题

    现象: 执行mapreduce任务时失败 通过hadoop fsck -openforwrite命令查看发现有文件没有关闭. [root@com ~]# hadoop fsck -openforwri ...

  2. [Flume][Kafka]Flume 与 Kakfa结合例子(Kakfa 作为flume 的sink 输出到 Kafka topic)

    Flume 与 Kakfa结合例子(Kakfa 作为flume 的sink 输出到 Kafka topic) 进行准备工作: $sudo mkdir -p /flume/web_spooldir$su ...

  3. 【原创】大叔经验分享(54)flume kudu sink运行一段时间kudu client报错

    flume kudu sink运行一段时间报错: 19/05/05 10:15:56 WARN client.ConnectToCluster: Error receiving a response ...

  4. flume中sink到hdfs,文件系统频繁产生文件,文件滚动配置不起作用?

    在测试hdfs的sink,发现sink端的文件滚动配置项起不到任何作用,配置如下: a1.sinks.k1.type=hdfs a1.sinks.k1.channel=c1 a1.sinks.k1.h ...

  5. Flume多Sink方案修正

    在实际项目中采用http://www.cnblogs.com/moonandstar08/p/6091384.html方案进行布署时,由于系统产生的消费比较大按照原方案进行布署时,随着国外局点不断增加 ...

  6. flume 自定义sink

    http://flume.apache.org/FlumeDeveloperGuide.html#sink 看了 还是比较好上手的,简单翻译一下 sink的作用是从 Channel 提取 Event  ...

  7. Hadoop实战-Flume之Sink Load-balancing(十七)

    a1.sources = r1 a1.sinks = k1 k2 a1.channels = c1 # Describe/configure the source a1.sources.r1.type ...

  8. Hadoop实战-Flume之Sink Failover(十六)

    a1.sources = r1 a1.sinks = k1 k2 a1.channels = c1 # Describe/configure the source a1.sources.r1.type ...

  9. flume中sink到hdfs,文件系统频繁产生文件和出现乱码,文件滚动配置不起作用?

    问题描述  解决办法 先把这个hdfs目录下的数据删除.并修改配置文件flume-conf.properties,重新采集. # Licensed to the Apache Software Fou ...

随机推荐

  1. RPC 原理

    转载地址:你应该知道的 RPC 原理 在校期间大家都写过不少程序,比如写个hello world服务类,然后本地调用下,如下所示.这些程序的特点是服务消费方和服务提供方是本地调用关系. 而一旦踏入公司 ...

  2. (22)bootstrap 初识 + Font Awesome(字体图标库)

    bootstrap作用就是简化布局 bootstrap是基于JQ的,所以内部代码使用的是jq语法 所以要使用bs,必须先倒入 1.head标签内倒入bs的css文件  <link rel=&qu ...

  3. 斐波那契数列的生成 %1e8 后的结果

    方法一  用数组开,一般开到1e7,1e8 左右的数组就是极限了   对时间也是挑战 #include<bits/stdc++.h> using namespace std; ; int ...

  4. js添加select中option

    1.js代码 $("#year").append("<option value="+value的值+">"+内容+"& ...

  5. MySQL之高可用MHA部署

    先说一下大概原理 虚拟机A  ip为10.0.3.92           作为master 虚拟机B  ip为10.0.3.102  作为slave1 虚拟机C  ip为10.0.3.103  作为 ...

  6. zabbix监控mysql最简单的方法

    该实验基于我的上一篇文章监控第一台主机的基础上 首先,因为水平有限,我选择直接关闭了防火墙和SELinux. 环境: 两台centos7,服务器端IP是192.168.200.128(以下简称主机), ...

  7. 03基于python玩转人工智能最火框架之TensorFlow介绍

    一句话介绍: Google开源的基于数据流图的科学计算库,适用于机器学习 不局限于机器学习,但目前被大多用于机器学习等. TensorFlow计算流图的概念图 Tensor在图中流动. TensorF ...

  8. 用IBM MQ中间件开发碰到的MQRC_NOT_AUTHORIZED(2035)问题

    我在一台工作站上面部署了MQ服务器,在MQ服务器中我建立了队列管理器MQ_TEST,在该队列管理器中我建立了一个本地队列MQ_Q以及一个服务器连接通道MQ_C,MQ_C中的MCA用户标识默认为空.同时 ...

  9. SharePoint Online 怎样让用户只能拥有sub site 的权限

    大家使用SharePoint 可能遇到这样的问题.  我怎样能设置manager 为site 的管理人员.  而我收下不同部门的员工只能访问他自己的sub site呢? 这个设置其实很简单. 1. 简 ...

  10. JavaScript Constructor & prototype

    阮一峰 JavaScript OOD 三部曲: 封装 JS 是一种基于对象(object-based)的语言. 但是JS不是一种真正的OOP语言, 因为语法中没有class. 以下就是简单的封装. 把 ...