本文源码:GitHub || GitEE
一、Flume简介
1、根底形容
Flume是Cloudera提供的一个高可用的,高牢靠的,分布式的海量日志采集、聚合和传输的零碎,Flume反对在日志零碎中定制各类数据发送方,用于收集数据;
特点:分布式、高可用、基于流式架构,通常用来收集、聚合、搬运不同数据源的大量日志到数据仓库。
2、架构模型
Agent包含三个外围组成,Source、Channel、Sink。Source负责接收数据源,并兼容多种类型,Channel是数据的缓冲区,Sink解决数据输入的形式和目的地。
Event是Flume定义的一个数据流传输的根本单元,将数据从源头送至目的地。
Flume能够设置多级Agent连贯的形式传输Event数据,从最后的source开始到最终sink传送的目标存储系统,如果数量过多会影响传输速率,并且传输过程中单节点故障也会影响整个传输通道。
Flume反对多路复用数据流到一个或多个目的地,这种模式能够将雷同数据复制到多个channel中,或者将不同数据散发到不同的channel中,并且sink能够抉择传送到不同的目的地。
Agent1了解为路由节点负责Channel的Event平衡到多个Sink组件,每个Sink组件分別连贯到独立的Agent上,实现负载平衡和谬误复原的性能。
Flume的应用组合形式做数据聚合,每台服务器部署一个flume节点采集日志数据,再汇聚传输到存储系统,例如HDFS、Hbase等组件,高效且稳固的解决集群数据的采集。
二、装置过程
1、安装包
apache-flume-1.7.0-bin.tar.gz
2、解压命名
[root@hop01 opt]# pwd/opt[root@hop01 opt]# tar -zxf apache-flume-1.7.0-bin.tar.gz[root@hop01 opt]# mv apache-flume-1.7.0-bin flume1.7
3、配置文件
配置门路:/opt/flume1.7/conf
mv flume-env.sh.template flume-env.sh
4、批改配置
增加JDK依赖
vim flume-env.shexport JAVA_HOME=/opt/jdk1.8
5、环境测试
装置netcat工具
sudo yum install -y nc
创立工作配置
[root@hop01 flume1.7]# cd job/[root@hop01 job]# vim flume-netcat-test01.conf
增加根底工作配置
留神:a1示意agent名称。
# this agenta1.sources = sr1a1.sinks = sk1a1.channels = sc1# the sourcea1.sources.sr1.type = netcata1.sources.sr1.bind = localhosta1.sources.sr1.port = 55555# the sinka1.sinks.sk1.type = logger# events in memorya1.channels.sc1.type = memorya1.channels.sc1.capacity = 1000a1.channels.sc1.transactionCapacity = 100# Bind the source and sinka1.sources.sr1.channels = sc1a1.sinks.sk1.channel = sc1
开启flume监听端口
/opt/flume1.7/bin/flume-ng agent --conf /opt/flume1.7/conf/ --name a1 --conf-file /opt/flume1.7/job/flume-netcat-test01.conf -Dflume.root.logger=INFO,console
应用netcat工具向55555端口发送数据
[root@hop01 ~]# nc localhost 55555hello,flume
查看flume管制面
三、利用案例
1、案例形容
基于flume在各个集群服务进行数据采集,而后数据传到kafka服务,再思考数据的生产策略。
采集:基于flume组件的便捷采集能力,如果间接应用kafka会产生大量的埋点动作不好保护。
生产:基于kafka容器的数据长期存储能力,防止零碎高度沉闷期间采集数据过大冲垮数据采集通道,并且能够基于kafka做数据隔离并针对化解决。
2、创立kafka配置
[root@hop01 job]# pwd/opt/flume1.7/job[root@hop01 job]# vim kafka-flume-test01.conf
3、批改sink配置
# the sinka1.sinks.sk1.type = org.apache.flume.sink.kafka.KafkaSink# topica1.sinks.sk1.topic = kafkatest# broker地址、端口号a1.sinks.sk1.kafka.bootstrap.servers = hop01:9092# 序列化形式a1.sinks.sk1.serializer.class = kafka.serializer.StringEncoder
4、创立kafka的Topic
上述配置文件中名称:kafkatest,上面执行创立命令之后查看topic信息。
[root@hop01 bin]# pwd/opt/kafka2.11[root@hop01 kafka2.11]# bin/kafka-topics.sh --create --zookeeper hop01:2181 --replication-factor 1 --partitions 1 --topic kafkatest[root@hop01 kafka2.11]# bin/kafka-topics.sh --describe --zookeeper hop01:2181 --topic kafkatest
5、启动Kakfa生产
[root@hop01 kafka2.11]# bin/kafka-console-consumer.sh --bootstrap-server hop01:2181 --topic kafkatest --from-beginning
这里指定topic是kafkatest。
6、启动flume配置
/opt/flume1.7/bin/flume-ng agent --conf /opt/flume1.7/conf/ --name a1 --conf-file /opt/flume1.7/job/kafka-flume-test01.conf -Dflume.root.logger=INFO,console
四、源代码地址
GitHub·地址https://github.com/cicadasmile/big-data-parentGitEE·地址https://gitee.com/cicadasmile/big-data-parent
浏览标签
【Java根底】【设计模式】【构造与算法】【Linux零碎】【数据库】
【分布式架构】【微服务】【大数据组件】【SpringBoot进阶】【Spring&Boot根底】
【数据分析】【技术导图】【 职场】