前提:

1)五台虚拟机(三台也可以)
2)flume单节点测试并学会
3)hadoop集群搭建完成

Flume NG集群,架构图


Flume的存储可以支持多种,这里只列举了HDFS

角色分配

名称 HOST 角色
Agent1 chun1 Web Server
Agent2 chun2 Web Server
Agent3 chun3 Web Server
Collector1 chun4 AgentMstr1
Collector2 chun5 AgentMstr1

表中所示,Agent1,Agent2,Agent3数据分别流入到Collector1和Collector2,Flume NG本身提供了Failover机制,可以自动切换和恢复。在上图中,有3个产生日志服务器分布在不同的机房,要把所有的日志都收集到一个集群中存储。下 面我们开发配置Flume NG集群

配置

在单点Flume中(这里介绍了单点的配置),基本配置都完成了,我们只需要新添加两个配置文件,它们是agent.properties和collector.properties,其配置内容如下所示:

agent配置

(根据自己需求把source读的路径(r1.command )和要配置的collector的主机名修改也就是k1和k2的hostname)
[root@chun1 flume-1.9.0-bin]# vi conf/agent.properties#agent1 name
agent1.channels = c1
agent1.sources = r1
agent1.sinks = k1 k2#set gruop
agent1.sinkgroups = g1#set channel
agent1.channels.c1.type = memory
agent1.channels.c1.capacity = 1000
agent1.channels.c1.transactionCapacity = 100agent1.sources.r1.channels = c1
agent1.sources.r1.type = exec
agent1.sources.r1.command = tail -F /usr/local/flume-1.9.0/job/log/test.log
agent1.sources.r1.interceptors = i1 i2
agent1.sources.r1.interceptors.i1.type = static
agent1.sources.r1.interceptors.i1.key = Type
agent1.sources.r1.interceptors.i1.value = LOGIN
agent1.sources.r1.interceptors.i2.type = timestamp# set sink1
agent1.sinks.k1.channel = c1
agent1.sinks.k1.type = avro
agent1.sinks.k1.hostname = chun4
agent1.sinks.k1.port = 52020# set sink2
agent1.sinks.k2.channel = c1
agent1.sinks.k2.type = avro
agent1.sinks.k2.hostname = chun5
agent1.sinks.k2.port = 52020#set sink group
agent1.sinkgroups.g1.sinks = k1 k2#set failover
agent1.sinkgroups.g1.processor.type = failover
agent1.sinkgroups.g1.processor.priority.k1 = 10
agent1.sinkgroups.g1.processor.priority.k2 = 1
agent1.sinkgroups.g1.processor.maxpenalty = 10000

修改后把flume发送给chun1,chun2,chun3,chun4,chun5( 发送后chun1,chun2,chun3不需要修改)

(chun4,chun5把刚才创建的agent.properties删除,添加一个collector.properties 并加入以下内容)

collector配置

记得把主机名改掉
[root@chun4 conf]# vi collector.properties #set Agent name
a1.sources = r1
a1.channels = c1
a1.sinks = k1#set channel
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100# other node,nna to nns
a1.sources.r1.type = avro
a1.sources.r1.bind = chun4  //chun5的此处要改
a1.sources.r1.port = 52020
a1.sources.r1.interceptors = i1
a1.sources.r1.interceptors.i1.type = static
a1.sources.r1.interceptors.i1.key = Collector
a1.sources.r1.interceptors.i1.value = chun4   //chun5的此处要改
a1.sources.r1.channels = c1#set sink to hdfs
a1.sinks.k1.type=hdfs
a1.sinks.k1.hdfs.path=/home/hdfs/flume/logdfs
a1.sinks.k1.hdfs.fileType=DataStream
a1.sinks.k1.hdfs.writeFormat=TEXT
a1.sinks.k1.hdfs.rollInterval=10
a1.sinks.k1.channel=c1
a1.sinks.k1.hdfs.filePrefix=%Y-%m-%d

运行 (先启动两个collector然后在启动三个agent)

在4,5上运行
cd /usr/local/flume-1.9.0bin/flume-ng agent -n a1 -c conf -f conf/collector.properties -Dflume.root.logger=DEBUG,console
在1,2,3上运行
cd /usr/local/flume-1.9.0bin/flume-ng agent -n agent1 -c conf -f conf/agent.properties -Dflume.root.logger=DEBUG,console

插入数据

往test.txt里插入数据
代码意思:没0.5秒循环插入chun-chun-chun
while true
> do
> echo 'chun-chun-chun' >> /usr/local/flume-1.9.0/job/log/test.log
> sleep 0.5
> done

查看 (hdfs的web端查看)

这时你会发现只有flume-ng1下有数据:说明是先往chun4上传

然后把chun4的进程杀死,就会发现数据开始往chun5传

然后再次打开(再次启动报错请看)数据又到chun4了(数据会先往权重高的传输)

(配置文件里有设置权重

agent1.sinkgroups.g1.processor.priority.k1 = 10
agent1.sinkgroups.g1.processor.priority.k2 = 1

)可以根据自己需求设置

Flume-ng 高可用搭建-与测试相关推荐

  1. Nginx反向代理,负载均衡,Redis集群 Twemproxy,redis session共享,keepalived高可用-搭建千万级网站系统

    Nginx反向代理,负载均衡,redis session共享,keepalived高可用-搭建千万级系统架构 1.安装Nginx 安装机器IP地址为: 192.168.91.129 (主) 192.1 ...

  2. SpringCloud注册中心高可用搭建

    转载自 SpringCloud注册中心高可用搭建 Spring Cloud的注册中心可以由Eureka.Consul.Zookeeper.ETCD等来实现,这里推荐使用Spring Cloud Eur ...

  3. spring boot配置ip_Spring Cloud 配置中心高可用搭建

    本文通过config server连接git仓库来实现配置中心,除了git还可以使用svn或者系统本地目录都行. 引入依赖 <dependencies><dependency> ...

  4. 立Flag 学习Ng - 高可用配置

    立Flag 学习Ng - 高可用配置 keepalived高可用配置 keepalived高可用配置 nginx解决tomcat高可用的思路,是前面加一层负载服务nginx.那当ng挂掉的时候同样需要 ...

  5. HADOOP 高可用搭建

    首先先说一下大概的步骤,就用四台为例,简单适合新手操作. 流程是:创建虚拟机,配置好:搭建linux系统:安装jdk(因为后面好多都依赖jkd):免密登录ssh:安装zookeeper:最后就是搭建高 ...

  6. K8s 集群资源监控、高可用搭建、部署java项目 (下)

    目录 集群资源监控 监控指标和搭建方案 搭建监控平台(k8s部署) 部署守护进程 部署prometheus 部署Grafana 高可用k8s集群 系统初始化 master节点部署keepalived ...

  7. n9e体验.以及部分高可用集群测试验证

    1.docker 环境 , docker-compose 参考1 参考2 参考3 下载二进制docker(离线内网安装) linux下载docker包地址 wget https://download. ...

  8. Redis的主从复制与高可用搭建(哨兵模式)

    前言 为什么要使用Redis 首先我们先介绍些redis的基本概念,redis是Nosql数据库,是一个key-value存储系统.虽然redis是key-value的存储系统,但是redis支持的v ...

  9. 10-Flink集群的高可用(搭建篇补充)

    戳更多文章: 1-Flink入门 2-本地环境搭建&构建第一个Flink应用 3-DataSet API 4-DataSteam API 5-集群部署 6-分布式缓存 7-重启策略 8-Fli ...

最新文章

  1. 系列文章|OKR与敏捷(二):实现全栈敏捷
  2. redis trie
  3. Nodejs简介以及Windows上安装Nodejs
  4. springboot中的spring-session用mysql实现session共享实践
  5. 银行理财不再保本保息,你还敢买吗?
  6. 【10.29周一电商,已好】中国日历的至高境界,377张震撼级插画,美到爆!
  7. 软件发布版本命名规则
  8. 处理PHP字符串的10个简单方法
  9. 计算机系统管理程序,计算机系统管理操作程序
  10. 关于STM32 串口二、串口三串口调试助手无法显示的问题
  11. 读书笔记 | 自动驾驶中的雷达信号处理(第1章 雷达系统基础)
  12. linux shell 统计词频,shell之词频统计
  13. bzoj4564: [Haoi2016]地图 仙人掌的圆方树 莫队 分块
  14. 摇篮式五轴与主轴摆动式五轴加工中心的区别
  15. 揭秘可变剪切研究的本质
  16. 自动化运维之自动化监控
  17. 史上最全Maven教程(三)
  18. 邀请函|欢迎参加2019云创大数据实验平台金融类/电子商务类/数学统计类院校各省总代理招募大会!...
  19. numpy.corrcoef 计算相关系数
  20. Dart 2.15 发布的新特性

热门文章

  1. SVN代码回滚命令之---svn up ./ -r 版本号---OK
  2. linux安装mysql5.6
  3. DB2 常用命令小结
  4. Hadoop 开源调度系统zeus(二)
  5. jQuery之ajax的跨域获取数据
  6. ContentType的类型
  7. 【转】excel表格导出集锦repeater实用,和普通用法
  8. Java学习笔记9-2——JavaWeb
  9. c语言子查询返回子菜单,T-SQL基础(三)之子查询与表表达式
  10. python做接口自动化测试仪器经销商_Python接口自动化测试的实现