Flume+Kafka

旧知识:堆栈内存
我们在创建对象的时候,会在栈里存放对象的地址,而在堆内存中真正存放对象实例
空指针:一般我们说的空指针就是栈内存指向堆内存里的对象时没有发现堆里有这个对
象,通俗点讲也就是jvm通过自己写的类名去堆里面找这个对象的时候,没找到。
新知识:
1.Flume的使用
最简单的一个flume配置文件的设置
a1就是一个agent
a1.source = r1 就是说明source的名字
a1.sinks = k1 就是说明sinks的名字
a1.channels = c1 就是说明channels的名字
a1.source.r1.type = netcat 是说明source接收端口的数据
a1.source.r1.bind = localhost 绑定的那个ip地址
a1.source.r1.port = 4444 指定检测哪个端口号的数据
a1.sinks.k1.type = logger 指定sinks的输出类型日志类型
a1.channels.c1.type = memory 指定将数据缓存到内存中
a1.channels.c1.capacity = 1000 channel一次能储存多少个event
a1.channels.c1.transactionCapacity = 100 每一次流动多少个event
a1.source.r1.channels = c1 将source和channels连接起来
a1.sinks.k1.channels = c1 将sinks和channels连接起来

安装过后查看版本: ./flume-ng version 
启动Flume命令:flume-ng agent -n a1 -f flume.conf -Dflume.root.logger=INFO,console
-n 表示agent的name -f 表示制定加载的配置文件 -Dflume.root.logger设置日志级别
启动之后连接:telnet 主机ip 端口号
安装telnet
yum install telnet

退出 ctrl+]  quit

 

2.Kafka

用于处理大批量请求和数据的系统或者说消息中间件(MQ)

它是一个消息系统(MQ)分为两种方式:(1)一对一的发送,将一个消息具体发送到一个机器上

       (2)发布订阅的方式,一个消息发布,多条消息订阅

Kafka默认存储时间7天

 Kafka的特点:1.高吞吐率2.支持数据持久化3.支持完全分布式4.适应在线流处理和离线批处理
消息系统适用于:解耦(将一条业务逻辑写到一个接口里)、冗余(可以理解为如果两张表另一张表的字段经常
需要在查询第一张表的时候用到,就将其字段加到第一张表里,但是也有缺点)、扩展、峰值处理能力、可恢复
性、异步通信(引出异步、同步处理两个概念:当我们执行到一个方法上接下来的处理需要判断这个方法的返

回值再进行其他操作的时候叫做同步处理,而且必须同步处理)

Flume+Kafka_第1张图片

Kafka运行原理:producer接收到消息后通过push推送的方式将请求推送给Broker(是一个处理请求的服务器,可有多台,在配置的时候必须给每一台broker配置一个id,broker.id = 0)同时将源数据(请求的时间、地址、用于描述这个请求的信息)发送给zk进行管理,然后我们的consumer(也就是服务器)回去zk里找到这个源数据信息,通过pull(抓取)的方式去Broker里拿请求处理。Broker在这里提供缓冲的作用。

 

你可能感兴趣的:(Flume+Kafka)