kafka

要点

producer:生产者,push
consumer:消费者,pull
topic:主题,区分每一类消息
broker:kafka中存储节点
partition:分区,将topic分成多个分片,方便操作备份
安装和部署
kafka的api:
消费者,生产者官网有案例Documentation
kafka分区方式:
1.手动指定分区号
2.通过动态key的hash取模分区
3.不设置key通过轮询
4.自定义分区 implement,partitionner
kafka配置文件:
server.properties
consumer.properties
producer.properties
与flume的整合:
kafka的监控:

简介:

开源分布式消息系统,由scala写成

类似于JMS的特性,拥有生产者消费者功能
kafka对消息保存时根据topic进行归类
发送消息者:producer
消息接受者consumer091下,
此外kafka集群拥有多个kafka实例组成每个实例(server)成为broker
无论是kafka集群还是producer和consumer都依赖于zookeeper集群保存一些meta信息用来保证系统可用性
JSM:
java的一套技术规范

点对点模式(kafka是多对多模式但是一个partition只能同时被一个消费者消费,消息不丢失):
常见的jms消息服务器
核心组件Destination:消息发送的目的地queue和topic
message
producer
消息的生产者要发送一个消息必须
常见的jms消息服务器
jms消息服务器:activeMQ
主要特点:
生产者,服务器和消费者都可以分布
消息存储顺序些
性能极高吞吐量极大
支持消息顺序
支持本地和xa事务
客户端pull随即读利用sendfile系统调用zero-copy
批量拉去数据
高性能,高可用,可扩展的分布式消息中间件类似以linkedin的kafka具有消息存储顺序些

创建topic

partition个数设置为block的整数倍

ps:
kafka为什么快因为在磁盘上是顺序读写不是随机读写

kafka遇到的问题
    分区:key的哈希取模分区key值要变否则会产生数据倾斜
    轮询:
    自定义:
一个topic下有多个partition每个partition可以有多个大小相等的segment但每个段segment file消息数量不一定相等,这种特性方便old segment file快速被删除。默认保留7天的数据

flume是单点容易产生单点故障
kafka集群解决flume的单点故障,解决数据流平缓性问题
flume不能收集windowserver,但可以通过ftp传送到linux然后再liunx收集


生产者:
同步模式
通过ack保证数据不丢失
异步模式
配置多长时间往磁盘刷新和多少条数据往磁盘刷新一次
消费者:
    offset偏移量提交在index里记录了保证数据到的不丢失

==集群监控:==
ganglia
zabbix

kafka调优:
在生产者配置上:
1.同步还是异步发送消息,默认“sync”表同步,”async”表异步。异步可以提高发送吞吐量
2.通过时间和文件大小双重控制
发送给broker
在消费者配置上:
# 最大取多少块缓存到消费者(默认10) 用于调优
queued.max.message.chunks=50

3.一个消费者可以消费多个partition,其在数据量大的时候设置多个分区可以提高并行度

flume和kafka整合:

[1.6的flume参数](https://www.cnblogs.com/cnmenglang/p/6550427.html
)

a1.sinks.k1.channel = c1
a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
a1.sinks.k1.topic = testnew
a1.sinks.k1.brokerList = bigdata-1:2181,bigdata-2:2181,bigdata-3:2181
a1.sinks.k1.kafka.flumeBatchSize = 20
a1.sinks.k1.kafka.producer.acks = 1

1.8fulme配置:

a1.sinks.k1.channel = c1
a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
a1.sinks.k1.kafka.topic = testnew
a1.sinks.k1.kafka.bootstrap.servers = node01:9092,node02:9092,node03:9092
a1.sinks.k1.kafka.flumeBatchSize = 20
a1.sinks.k1.kafka.producer.acks = 1
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值