fiume的容错机制

准备条件:提前安装好HDFS集群和flume集群

flume的容错(failover)

容错是指在采集日志时,配置多个fluem安装优先级的大小(只有一台flume采集,其他的flume相当于替补),分顺序的采集日志。
在这里插入图片描述

配置文件

创建"exec-avro.conf"

[root@hadoop1 conf]# vi  exec-avro.conf
#指定Agent的组件名称
a1.sources = r1
a1.channels = c1
#指定两个下沉地址
a1.sinks = k1 k2

#设置资源,此处监听文件,也可以是监听文件夹或者端口
a1.sources.r1.type = exec
a1.sources.r1.command = tail -F /a.log

#设置通道channels
a1.channels.c1.type = memory
a1.channels.c1.capatity = 1000
a1.channels.c1.transactionCapacity = 100

#设置sink1,通过52020这个端口传递到"192.168.215.165"中
#设置下沉目的地sink1,avro可以跨网络传输
a1.sinks.k1.type=avro
a1.sinks.k1.hostname=192.168.215.165
a1.sinks.k1.port=52020

#设置sink2,通过52020这个端口传递到"192.168.215.166"中
a1.sinks.k2.type=avro
a1.sinks.k2.hostname=192.168.215.166
a1.sinks.k2.port=52020

#关系
a1.sources.r1.channels=c1
a1.sinks.k1.channel=c1
a1.sinks.k2.channel=c1

#设置proceecing
a1.sinkgroups=g1
a1.sinkgroups.g1.sinks=k1 k2
#指明容错优先级
a1.sinkgroups.g1.processor.type=failover
a1.sinkgroups.g1.processor.priority.k1=10
a1.sinkgroups.g1.processor.priority.k2=4
a1.sinkgroups.g1.processor.maxpenalty=10000

创建"avro-logger.conf"(第二级配置,将数据下沉到logger,在每个二级机器上都创建)

[root@hadoop2 conf]# vi avro-logger.conf
[root@hadoop3 conf]# vi avro-logger.conf
#命名
a1.sources = r1
a1.sinks = k1
a1.channels = c1

#资源
a1.sources.r1.type = avro
#各个二级虚拟机只需要修改这一行代码
a1.sources.r1.bind = 192.168.215.165
a1.sources.r1.port = 52020

# sink,这个下沉类型可以改变
a1.sinks.k1.type = logger

#通道
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

#连接
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

创建"avro-logger.conf"(第二级配置,将数据下沉到hdfs集群,在每个二级机器上都创建)

#命名
a1.sources = r1
a1.sinks = k1
a1.channels = c1

#资源
a1.sources.r1.type = avro
#各个二级虚拟机只需要修改这一行代码
a1.sources.r1.bind = 192.168.215.165
a1.sources.r1.port = 52020

# sink,这个下沉类型可以改变
a1.sinks.k1.type = hdfs

#对于sink的配置描述 传递到hdfs上面
a1.sinks.k1.type = hdfs 
#集群的nameservers名字,没有名字就写成"NameNode节点的ip:9000"
#单节点的直接写:hdfs://hadoop1:9000/xxx
a1.sinks.k1.hdfs.path = hdfs://ns/flume/%Y%m%d 
a1.sinks.k1.hdfs.filePrefix = events- 
a1.sinks.k1.hdfs.fileType = DataStream 
#不按照条数生成文件 
a1.sinks.k1.hdfs.rollCount = 0 
#HDFS上的文件达到128M时生成一个文件 
a1.sinks.k1.hdfs.rollSize = 134217728 
#HDFS上的文件达到60秒生成一个文件 
a1.sinks.k1.hdfs.rollInterval = 60 
 
 
#对于channel的配置描述 使用内存缓冲区域做数据的临时缓存
a1.channels.c1.type = memory
a1.channels.c1.capacity = 2000
a1.channels.c1.transactionCapacity = 1000
 
#通过channel c1将source r1和sink k1关联起来
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

启动

[root@hadoop2 apache-flume-1.8.0-bin]#  flume-ng agent --conf conf --conf-file conf/avro-logger.conf  --name a1  -Dflume.root.logger=INFO,console
[root@hadoop3 apache-flume-1.8.0-bin]#  flume-ng agent --conf conf --conf-file conf/avro-logger.conf  --name a1  -Dflume.root.logger=INFO,console
[root@hadoop1 apache-flume-1.8.0-bin]#  flume-ng agent --conf conf --conf-file conf/exec-avro.conf  --name a1  -Dflume.root.logger=INFO,console

猜你喜欢

转载自blog.csdn.net/weixin_38613375/article/details/89496794