flume知识点

flume操作

启动flume项目

[root@master flume]# ./bin/flume-ng agent -c ./conf/ -n flume项目的名称 -f flume项目的路径

flume项目配置信息

基本配置
#指定项目名为a1,source名为s1,channel名为c1,sink名为k1
a1.sources=s1
a1.channels=c1
a1.sinks=k1

#配置sources(数据源)
a1.sources.s1.type=netcat
a1.sources.s1.bind=master
a1.sources.s1.port=7777

#配置sinks(下沉位置)
a1.sinks.k1.type=logger

#配置channels(管道)
a1.channels.c1.type=memory
a1.channels.c1.capacity=1000
a1.channels.c1.transactionCapacity=100

#将source、channel、sink相连接
a1.sources.s1.channels=c1
a1.sinks.k1.channel=c1
source配置项

类型:netcat:

# 数据源为netcat端口
a1.sources.s1.type=netcat
a1.sources.s1.bind=master  # 主机名或ip地址
a1.sources.s1.port=7777  # 端口号

exec:

# 数据源为监听文件
a1.sources.s1.type=exec
a1.sources.s1.command= tail -F /opt/upload/a.txt  # 指定文件路径

spooldir:

# 数据源为监听文件夹(新文件)
a1.sources.s1.type=spooldir
a1.sources.s1.spoolDir=/opt/upload  # 指定文件夹路径
# 以下为可选
a1.sources.s1.fileHeader=true  # 开启头信息
a1.sources.s1.fileSuffix=.COMPLETED  # 给已监听到的文件加后缀名
a1.sources.s1.ignorePattern=([^ ]*\.tmp)  # 不对后缀名为.tmp的文件操作
channel配置项

memory:

a1.channels.c1.type=memory
a1.channels.c1.capacity=1000
a1.channels.c1.transactioncapacity=100

file:

a1.channels.c1.type = file
a1.channels.c1.checkpointDir = /opt/upload/checkpoint
a1.channels.c1.dataDirs = /opt/upload/data
sink配置项

logger:

a1.sinks.k1.type=logger

hdfs:

a1.sinks.k1.type=hdfs
a1.sinks.k1.hdfs.path=hdfs://master:9000/flume/event/%Y%m%d/%H
a1.sinks.k1.hdfs.filePerfix=flume-  # 给上传的文件加前缀
# 设置文件滚动,不要产生大量小文件
a1.sinks.k1.hdfs.rollInterval=10  # 按照时间滚动文件,为0时不按照时间滚动
a1.sinks.k1.hdfs.rollSize=134217728  # 文件大小多大时滚动(单位:字节)
a1.sinks.k1.hdfs.rollCount=0  # 写入文件的时间数达到多少时滚动(一般设为0)
# 设置文件夹滚动
a1.sinks.k1.hdfs.round=true  # 是否按照时间滚动文件夹,一般为true
a1.sinks.k1.hdfs.roundValue=1 # 设置多少时间单位创建一个新的文件夹
a1.sinks.k1.hdfs.roundUnit=hour # 重新定义时间单位second/minute/hour)
# 设置时间戳属性
a1.sinks.k1.hdfs.useLocalTimeStamp=True # 是否使用本地时间戳,默认False
# 防止乱码
a1.sinks.k1.hdfs.fileType=DataStream

kafka:

a1.sinks.k1.type=org.apache.flume.sink.kafka.KafkaSink#这是一个大K和一个大的S
a1.sinks.k1.topic=myTopic  # 指定topic
# 创建生产者
a1.sinks.k1.brokerList=master:9092,slave1:9092,slave2:9092
a1.sinks.k1.kafka.producer.acks=1
a1.sinks.k1.kafka.producer.linger.ms=1
a1.sinks.k1.kafka.flumeBatchSize=20	
avro类型

source为avro时:

接收Avro Sink发送来的数据

a1.sources.s1.type=avro
a1.sources.s1.bind=0.0.0.0 # ip地址,0.0.0.0绑定所有机器
a1.sources.s1.port=6666  # 本机接收端口

sink为avro时:

将本机数据由avro压缩发送到另一台机器

a1.sinks.k1.type=avro
a1.sinks.k1.hostname = master # 发送的IP地址
a1.sinks.k1.port=6666 # 发送端口

flume与kafka如何结合使用

编写好flume代码,

例:

从master的44444端口传入数据,传入hsx的主题里面,就可以消费了

顺序流程,运行flume,打开消费者,打开[port]的端口

a1.sources=r1
a1.sinks=k1
a1.channels=c1
#sources
a1.sources.r1.type=netcat
a1.sources.r1.bind=master
a1.sources.r1.port=44444
#sinks k1
a1.sinks.k1.type=org.apache.flume.sink.kafka.KafkaSink
a1.sinks.k1.topic=hsx
a1.sinks.k1.brokerList=master:9092,slave1:9092,slave2:9092
a1.sinks.k1.kafka.producer.acks=1
a1.sinks.k1.kafka.producer.linger.ms=1
a1.sinks.k1.kafka.flumeBatchSize=20
#sinks k2
#a1.sinks.k1.type=logger
#channels c1
a1.channels.c1.type=memory
#link
a1.sources.r1.channels=c1
a1.sinks.k1.channel=c1
~                      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值