log4j +fastjson 模拟日志
log4j : 日志级别 INFO ,DEBUG,WARN,ERROR,FATAL
log4j.appender.R.File={flume}
#java 代码详情见
#lunix 环境下执行jar文件
java -jar jar包 /root/data/flume 配置文件名加路径
-----------------------flume ---------------------------------------------------------------
Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。
系统功能编辑
日志收集
Flume最早是Cloudera提供的日志收集系统,目前是Apache下的一个孵化项目,Flume支持在日志系统中定制各类数据发送方,用于收集数据。
数据处理
Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力 。Flume提供了从console(控制台)、RPC(Thrift-RPC)、text(文件)、tail(UNIX tail)、syslog(syslog日志系统),支持TCP和UDP等2种模式),exec(命令执行)等数据源上收集数据的能力。
工作方式编辑
Flume-og采用了多Master的方式。为了保证配置数据的一致性,Flume引入了ZooKeeper,用于保存配置数据,ZooKeeper本身可保证配置数据的一致性和高可用,另外,在配置数据发生变化时,ZooKeeper可以通知Flume Master节点。Flume Master间使用gossip协议同步数据。
Flume-ng最明显的改动就是取消了集中管理配置的 Master 和 Zookeeper,变为一个纯粹的传输工具。Flume-ng另一个主要的不同点是读入数据和写出数据现在由不同的工作线程处理(称为 Runner)。 在 Flume-og 中,读入线程同样做写出工作(除了故障重试)。如果写出慢的话(不是完全失败),它将阻塞 Flume 接收数据的能力。这种异步的设计使读入线程可以顺畅的工作而无需关注下游的任何问题。
Event
SOUCER => CHannel => SINk
NETCAT(ip+port) memory logger
SPOOLDIR(dir) file hdfs
TAILDIR(dir) kafka
SOUCER:NETACT,SHANEL:MEMORT,SINK:LOGGER
vim flume01.cnf
配置文件
#组件声明
a1.sources = s1
a1.channels = c1
a1.sinks = k1
#初始化数据源
a1.sources.s1.type = netcat
a1.sources.s1.bind = 192.168.92.200
a1.sources.s1.port = 6666
#以bak结尾的忽略掉
a1.sources.s1.ignorePasttern = ^(.)*\\.bak$
#添加后缀
a1.sources.s1.fileSuffix = .bak
#初始化通道
a1.channels.c1.type = memory
#
a1.channels.c1.checkpointDir= /opt/software/flume190/mydata/checkpoint
a1.channels.c1.dataDirs= /opt/software/flume190/mydata/data
a1.channels.c1.capacity =100
a1.channels.c1.transactionCapacity = 10
#初始化