立即注册 登录
About云-梭伦科技 返回首页

Useful丶M的个人空间 https://aboutyun.com/?53317 [收藏] [复制] [分享] [RSS]

日志

Flume学习笔记及案例

热度 1已有 1391 次阅读2017-1-13 13:52 |个人分类:大数据学习| 大数据, flume, 大数据框架

flume功能
Flume是一个分布式的,可靠的,可用的,非常有效率的对大数据量的日志数据进行收集、聚集、移动信息的服务。Flume仅仅运行在linux环境下。

它是一个基于流式的数据的非常简单的(就写一个配置文件就可以)、灵活的架构,它也是一个健壮的、容错的。它用一个简单的扩展数据模型用于在线实时应用分析。它的简单表现为:写个source、channel、sink,之后一条命令就能操作成功了。

Flume、kafka实时进行数据收集,spark、storm实时去处理,impala实时去查询。

flume结构

Flume-ng只有一个角色的节点:agent的角色,agent有source、channel、sink组成。
Source:
用于采集数据,Source是产生数据流的地方,同时Source会将产生的数据流传输到Channel
Channel:
连接 source 和 sink的数据传输通道
Sink:
从Channel收集数据,将数据写到目标源,可以是下一个Source也可以是HDFS或者HBase

Events
Event是Flume数据传输的基本单元
Flume以事件的形式将数据从源头传送到最终的目的
Event由可选的header和载有数据的一个byte array构成载有的数据对flume是不透明的
*Header是容纳了key-value字符串对的无序集合,key在集合内是唯一的。
*Header可以在上下文路由中使用扩展  

flume三大组件流程


source监控某个文件,将数据拿到,封装在一个event当中,并put/commit到channel当中,channel是一个队列,队列的优点是先进先出,放好后尾部一个个event出来,sink主动去从chennel当中去拉数据,sink再把数据写到某个地方,比如HDFS上面去。

案例:
Flume Agent实时监控端口,收集数据,将其以日志的形式打印在控制台。

1、复制
$ cp -a flume-conf.properties.template flume-telnet.conf

2、修改flume-telnet.conf
# Name the components on this agent
# a1为代理(中介)实例名,任意命名,agent分三部分
a1.sources = r1
a1.sinks = k1
a1.channels = c1

# Describe/configure the source
# netcat是用于调试和检查网络的工具包,windows和linux(redhat)均可用,需要安装
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 44444

# Describe the sink
# 可以在文档Flume Sinks--Logger Sink部分查找
# 往日志文件里面写
a1.sinks.k1.type = logger

# Describe the channels
# Use a channel which buffers events in memory
a1.channels.c1.type = memory
# channel里存放的最大event数
a1.channels.c1.capacity = 1000
# 每个事务支持的最大event数
a1.channels.c1.transactionCapacity = 100

# 绑定source和sink到channel
# 注意:这里有's'
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

配置文件的使用:
a) 命名
b) 配置source、sink、channel
c) 关联

---------------------

测试:
安装telnet
# yum -y install telnet

启动flume,'-D'设置日志级别和输出源
$ bin/flume-ng agent --conf conf/ --name a1 --conf-file conf/flume-telnet.conf -Dflume.root.logger=INFO,console

打开另外一个窗口
--检查是否有程序(flume)在监听44444端口
netstat -an|grep 44444
--连接本机的44444端口,telnet是访问这个端口的客户端
然后随意输入字符串...
$ telnet localhost 44444

PS:
a) 退出telnet:'ctrl+]',然后输入quit。
b) 若flume-ng无法退出,则打开一个新的窗口,jps(或netstat -antp|grep 44444)查找pid,使用 kill -9



路过

雷人

握手

鲜花

鸡蛋

发表评论 评论 (1 个评论)

回复 nothingonyou 2017-1-16 14:24
楼主说的好啊,学习了

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册

关闭

推荐上一条 /2 下一条