(四)flume学习笔记——1.1初识flume

1.Flume介绍

  1. Flume的核心概念

     Source:用户需要根据自己的数据源的类型,选择合适的source对象!
     Sink:用户需要根据自己的数据存储的目的地的类型,选择合适的source对象!
     Interceptors:在source将event放入到channel之前,调用拦截器对event进行拦截和处理!
     Channel Selectors:当一个source对接多个channel时,由channel Selectors选取channel将event存入!
     sink processor:当多个sink从一个channel取数据时,为了保证数据的顺序,由sink processor从多个sink中挑选一个sink,由这个sink干活。
    

2.安装flume

①保证有JAVA_HOME
②解压即可

3.使用flume

启动agent:flume-ng agent -n agent的名称 -f agent配置文件 -c 其他配置文件所在的目录 -Dproperty=value

4.agent配置文件的编写

agent的配置文件的本质是一个properties文件!格式为属性名=属性值

在配置文件中需要编写:
①定义当前配置文件中agent的名称,再定义source,sink,channel它们的别名
②指定source和channel和sink等组件的类型
③指定source和channel和sink等组件的配置,配置参数名个值都需要参考flume的官方手册
④指定source和channel的对应关系,以及sink和channel的对应关系。连接组件!

5.案例

需求:

实时监控一个本机文件的内容,写入到hdfs中

组件选择

1.EXECSource
	介绍:execsource会在agent启动时,运行一个linux命令,运行linux命令的进程要求是一个可以持续产生数据的进程!
	通常情况下,如果指定的命令退出了,那么source也会退出并且不会再封装任何的数据!
	所以使用这个source一般推荐类似cat,tail -f这种命令,而不是date这种只会返回一个数据,并且执行完就退出的命令!
	配置:
		必须配置:
		type:  The component type name,needs to be exec
		command:The command to execute
2.HDFSSink
	介绍:hdfssink将event写入到HDFS!目前只支持生成两种类型的文件:text|sequenceFile,这两种文件都可以使用压缩
	写入到HDFS的文件可以自动滚动(关闭当前正在写的文件,创建一个新文件)。基于时间、events的数量、数据大小进行周期性的滚动
	支持基于时间和采集数据的机器进行分桶和分区的操作!
	HDFS数据所上传的目录或文件名可以包含一个格式化的转义序列,这个路径或文件名会在上传event时,被自动替换
	使用此Sink要求本机已经安装了hadoop,或持有hadoop的jar包!
	配置:
		必须配置:
		type:The component type name,needs to be hdfs
		hdfs.path:HDFS directory path(ed hdfs://namenode/flume/webdata)

配置:

#a1是agent的名称,a1中定义了一个叫r1的source,如果有多个,使用空格间隔
a1.sources=r1
a1.sinks=k1
a1.channels=c1
#组名.属性名=属性值
a1.sources.r1.type=exec
a1.sources.r1.command=tail -f /opt/module/apache-hive-1.2.1-bin/logs/hive.log
#定义sink
a1.sinks.k1.type=hdfs
#一旦路径中含有基于时间的转义序列,要求event的header在必须要timestamp有时间戳
a1.sinks.k1.hdfs.path=hdfs://h2:9000/flume/%Y%m%d/%H/%M
#上传文件的前缀
a1.sinks.k1.hdfs.filePrefix=-logs
#是否按照时间滚动文件夹
a1.sinks.k1.hdfs.round=true
#多少时间单位创建一个新的文件夹
a1.sinks.k1.hdfs.roundValue=1
#重新定义时间单位
a1.sinks.k1.hdfs.roundUnit=minute
#是否使用本地时间戳
a1.sinks.k1.hdfs.useLocalTimeStamp=true
#积攒多少个Event才flush到HDFS一次
a1.sinks.k1.hdfs.batchSize=100
#多久生成一个新的文件
a1.sinks.k1.hdfs.rollInterval=10
#设置每个文件的滚动大小
a1.sinks.k1.hdfs.rollSize=134217700
#文件的滚动与Event数量无关
a1.sinks.k1.hdfs.rollCount=0
#定义channel
a1.channels.c1.type=memory
a1.channels.c1.capacity=1000
#连接组件  同一个source可以对接多个channel,一个sink只能从一个chanel拿数据!
a1.sources.r1.channels=c1
a1.sinks.k1.channel=c1

执行命令

flume-ng agent -c conf/ -n a1 -f /opt/data/agent/execsource-hdfssink.conf
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值