1、Flume在集群中扮演的角色
Flume、Kafka用来实时进行数据收集,Spark、Storm用来实时处理数据,impala用来实时查询。
2、Flume框架简介
1.1 Flume提供一个分布式的,可靠的,对大数据量的日志进行高效收集、聚集、移动的服务,Flume只能在Unix环境下运行。
1.2 Flume基于流式架构,容错性强,也很灵活简单,主要用于在线实时分析。
角色:
** Source
用于采集数据,Source是产生数据流的地方,同时Source会将产生的数据流传输到Channel,这个有点类似于Java IO部分的Channel,它其实就是用来指定数据的来源.比如数据从linux上来的,直接指定linux本地一直读就行了.
** Channel
用于桥接Sources和Sinks,类似于一个队列。
** Sink
从Channel收集数据,将数据写到目标源(可以是下一个Source,也可以是HDFS或者HBase)
这三部分组成为Agent
1.4 传输单元
** Event
Flume数据传输的基本单元,以事件的形式将数据从源头送至目的地
1.5 传输过程
source监控某个文件,文件产生新的数据,拿到该数据后,将数据封装在一个Event中,并put到channel后commit提交,channel队列先进先出,sink去channel队列中拉取数据,然后写入到hdfs或者HBase中。
工作原理:
它首先会把大量数据流拆分成一个个的Event,每个Event又分为Header和Body,就相当于http的请求头和请求体,source会把拆分好的event一个个的放入channeel中,sink把这些event解码之后存放到最终的目的.
hive在操作的时候会在linux本地生成各种操作日志或者各种网站的日志,它会越来越大,导致存不下,需要把它存储到hdfs上,可以自己写个脚本定时上传,也可以使用flume框架来实现.它也可以实现抓包功能,直接把source对接到指定端口上,时间抓取端口传来的信息.
https://download.csdn.net/download/kxj19980524/11145564 flume的cdh版本
http://flume.apache.org/ 官网
http://flume.apache.org/releases/content/1.5.0/FlumeUserGuide.html
案例1,监听某个端口发送消息
# Name the components on this agent
#把agent起个名叫a1,sources叫r1,sinks叫k1,channels叫c1
a1.sources = r1
a1.sinks = k1
a1.channels = c1
#监听数据来源为本地的4444端口
# Describe/configure the source
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 44444
#logger是流传输过来解码后的数据
# Describe the sink
a1.sinks.k1.type = logger
#channels阶段以内存的形式保存数据 event数量100
# Use a channel which buffers events in memory
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
#把source和sink和channel对接 source可以对接多个channels sinks只能对接一个channel
# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
安装telnet工具 https://download.csdn.net/download/kxj19980524/11145614
$ sudo rpm -ivh telnet-server-0.17-59.el7.x86_64.rpm
$ sudo rpm -ivh telnet-0.17-59.el7.x86_64.rpm
首先判断44444端口是否被占用 $ netstat -an | grep 44444
先开启flume先听端口
$ bin/flume-ng agent --conf conf/ --name a1 --conf-file conf/flume-telnet.conf -Dflume.root.logger==INFO,console