kafka学习教程

Kafka学习教程

一.kafka简介

1.      订阅发布消息系统,解耦发布者和订阅者。


原有的直连消息模型


发布订阅系统

2.      基本概念

1)      生产者和消费者 producer/consumer


         生产者创建消息,消费者读取消息。实现时间上的解耦。

2)      主题和分区 topic/partition

Kafka的消息通过主题分类。同一个主题可以放在不同分区中。

 

3)      容器 broker

一个独立的kafka服务器就是一个容器(broker)。多个broker构成一个集群,集群中有一个首领(leader),其他broker从属于首领(leader)。一个分区可以分配给多个broker提供消息冗余,如果一个broker失效,其他可以接替他的工作。如果leader失效会产生新的leader。

3.      Kafka优势:

1)      多个生产者

2)      多个消费者

3)      基于磁盘存储

4)      伸缩性

5)      高性能

二.安装kafka broker

1.      前提准备

需要安装java, zookeeper。下载kafka安装包。官方地址:http://kafka.apache.org/downloads.html

2.      安装kafka broker

1)      解压缩

#tar –zxf kafka_x.xx.tgz

2)      设置日志路径:

#mkdir /tmp/kafka-logs

3)      配置kafka/config/server.properties

主要参数:

broker.id 集群中的broker.id不能重复

prot 监听端口,默认为9902

zookeeper.connect 保存broker元数据和主题的zookeeper地址,默认localhost:2181。可以设置路径,格式为hostname:port/path,默认根目录。

log.dirs 日志保存路径

num.recovery.threads.per.data.dir 每个日志目录启动的线程数,需要启动的线程数为log.dirs设置的目录数* num.recovery.threads.per.data.dir。

auto.create.topics.enable 自动创建主题

4)      启动

#bin/kafka-server-start.sh config/server.properties

指定配置文件启动。

三.Kafka工具和命令

在kafka/bin目录下包含了kafka的一些工具,根据工具可以学习和调试kafka的功能。具体如下图:

对应这些工具的kafka常用命令如下:

1.      启动kafka服务

bin/kafka-server-start.sh config/server.properties &

2.      关闭kafka服务

bin/kafka-server-stop.sh

3.      查看主题topics

[root@dn1 bin]# ./kafka-topics.sh--list -zookeeper dn1

ATLAS_ENTITIES

ATLAS_HOOK

__consumer_offsets

ambari_kafka_service_check

4.      添加主题topic

[root@dn1 bin]# ./kafka-topics.sh --create --zookeeperdn1:2181,dn2:2181 --replication-factor 1 --partitions 1 --topic test

Created topic "test"

5.      查看topic描述

[root@dn1 bin]# ./kafka-topics.sh--describe --zookeeper localhost:2181 --topic test

Topic:test      PartitionCount:1        ReplicationFactor:1     Configs:

    Topic: test     Partition: 0    Leader: 1001    Replicas: 1001  Isr: 1001

6.      生产者发布消息

[root@dn1 bin]# ./kafka-console-producer.sh --broker-listdn1:6667,dn2:6667 --topic test

OSendMessage 1

Send Message 2

7.      消费者读取消息

[root@dn1bin]# ./kafka-console-consumer.sh --zookeeper dn1:2181,dn2:2181 --topic test--from-beginning

Using theConsoleConsumer with old consumer is deprecated and will be removed in a futuremajor release. Consider using the new consumer by passing [bootstrap-server]instead of [zookeeper].

{metadata.broker.list=dn1.hadoop:6667,request.timeout.ms=30000, client.id=console-consumer-9264,security.protocol=PLAINTEXT}

SendMessage 1

Send Message 2

8.      查看消费者分组

[root@dn1bin]# ./kafka-consumer-groups.sh --list --zookeeper dn1:2181

console-consumer-38656

console-consumer-40076

console-consumer-6266

console-consumer-9910

9.      查看消息的偏移量、校验和、魔术数字节、消息大小和压缩算法

[root@dn1 bin]# ./kafka-run-class.shkafka.tools.ConsumerOffsetChecker --zookeeper dn1:2181 --groupconsole-consumer-9910 --topic test

[2018-05-23 09:57:18,054] WARN WARNING: ConsumerOffsetChecker isdeprecated and will be dropped in releases following 0.9.0. UseConsumerGroupCommand instead. (kafka.tools.ConsumerOffsetChecker$)

Group           Topic                          Pid Offset          logSize         Lag             Owner

console-consumer-9910test                           0  47              50              3               none


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值