Kafka基本配置
来源:互联网 发布:公子无耻知乎 编辑:程序博客网 时间:2024/06/06 00:32
转自:
http://blog.csdn.net/smallnest/article/details/38491483
Apache Kafka是一个分布式消息发布订阅系统。它最初由LinkedIn公司基于独特的设计实现为一个分布式的提交日志系统( a distributed commit log),,之后成为Apache项目的一部分。Kafka系统快速、可扩展并且可持久化。它的分区特性,可复制和可容错都是其不错的特性。
第一步: 下载代码
下载 0.8.1 版本并解压。 (当前最新的稳定版本是0.8.1.1)
12
> tar -xzf kafka_2.9.2-0.8.1.1.tgz> cd kafka_2.9.2-0.8.1.1
第二步: 启动服务
Kafka使用Zookeeper所以你可能先要安装一个ZooKeeper.你可以使用kafka中打包好的脚本或者一个配置好的Zookeeper.
123
> bin/zookeeper-server-start.sh config/zookeeper.properties[2013-04-22 15:01:37,495] INFO Reading configuration from: config/zookeeper.properties (org.apache.zookeeper.server.quorum.QuorumPeerConfig)...
现在可以启动Kafka了:
1234
> bin/kafka-server-start.sh config/server.properties[2013-04-22 15:01:47,028] INFO Verifying properties (kafka.utils.VerifiableProperties)[2013-04-22 15:01:47,051] INFO Property socket.send.buffer.bytes is overridden to 1048576 (kafka.utils.VerifiableProperties)...
第三步: 新建一个话题Topic
Topic的名字叫”test”,只有一个分区和一个备份。
1
> bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
查看存在的Topic列表:
12
> bin/kafka-topics.sh --list --zookeeper localhost:2181test
除了手工创建Topic,你也可以配置你的broker当发布一个不存在的topic时自动创建topic。
第四步: 发送消息
Kafka提供了一个命令行的工具,可以从输入文件或者命令行中读取消息并发送给Kafka集群。每一行是一条消息。
123
> bin/kafka-console-producer.sh --broker-list localhost:9092 --topic testThis is a messageThis is another message
第五步: 消费消息
Kafka也提供了一个消费消息的命令行工具。
123
> bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginningThis is a messageThis is another message
这些命令行工具有很多的选项,你可以查看他们的文档来了解更多的功能。
第六步: 设置多个broker
目前我们运行在一个broker,不好玩。
让我们来点大的。
首先为每个broker创建一个配置文件。
12
> cp config/server.properties config/server-1.properties> cp config/server.properties config/server-2.properties
修改文件如下:
123456789
config/server-1.properties:broker.id=1port=9093log.dir=/tmp/kafka-logs-1config/server-2.properties:broker.id=2port=9094log.dir=/tmp/kafka-logs-2
broker.id属性别重样。为了在一台机器上启动两个broker,改了一下它们的port的。
Zookeeper还在,上面用的broker还活着。 来启动这两个broker.
1234
> bin/kafka-server-start.sh config/server-1.properties &...> bin/kafka-server-start.sh config/server-2.properties &...
创建一个topic试试, 奢侈一把,把备份设置为3:
1
> bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 1 --topic my-replicated-topic
成了。运行 “describe topics” 命令瞧瞧:
123
> bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic my-replicated-topicTopic:my-replicated-topicPartitionCount:1ReplicationFactor:3Configs:Topic: my-replicated-topicPartition: 0Leader: 1Replicas: 1,2,0Isr: 1,2,0
第一行给出了分区的汇总信息。每个分区行给出分区信息。
“leader” 节点是1.
“replicas” 信息,在节点1,2,0上,不管node死活,只是列出信息而已.
“isr” 工作中的复制节点的集合. 也就是活的节点的集合.
来看看一开始创建的节点:
123
> bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic testTopic:testPartitionCount:1ReplicationFactor:1Configs:Topic: testPartition: 0Leader: 0Replicas: 0Isr: 0
毫无新意,想必你已经明了了。
发布个消息:
12345
> bin/kafka-console-producer.sh --broker-list localhost:9092 --topic my-replicated-topic...my test message 1my test message 2^C
消费它:
12345
> bin/kafka-console-consumer.sh --zookeeper localhost:2181 --from-beginning --topic my-replicated-topic...my test message 1my test message 2^C
测试一下容错. 干掉leader,也就是Broker 1:
123
> ps | grep server-1.properties7564 ttys002 0:15.91 /System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home/bin/java...> kill -9 7564
Leader被切换到一个follower上节, 点 1 不会被列在isr中了,因为它死了:
123
> bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic my-replicated-topicTopic:my-replicated-topicPartitionCount:1ReplicationFactor:3Configs:Topic: my-replicated-topicPartition: 0Leader: 2Replicas: 1,2,0Isr: 2,0
但是,消息没丢啊,不信你试试:
12345
> bin/kafka-console-consumer.sh --zookeeper localhost:2181 --from-beginning --topic my-replicated-topic...my test message 1my test message 2^C
话题和日志 (Topic和Log)
更深入的了解一下Kafka中的Topic.
Topic是发布的消息的类别或者种子Feed名。对于每一个Topic, Kafka集群维护这一个分区的log,就像下图中的示例:
每一个分区都是一个顺序的、不可变的消息队列, 并且可以持续的添加。分区中的消息都被分配了一个序列号,称之为偏移量(offset),在每个分区中此偏移量都是唯一的。
Kafka集群保持所有的消息,直到它们过期, 无论消息是否被消费了。
实际上消费者所持有的仅有的元数据就是这个偏移量,也就是消费者在这个log中的位置。 这个偏移量由消费者控制:正常情况当消费者消费消息的时候,偏移量也线性的的增加。但是实际偏移量由消费者控制,消费者可以将偏移量重置为更老的一个偏移量,重新读取消息。
可以看到这种设计对消费者来说操作自如, 一个消费者的操作不会影响其它消费者对此log的处理。
再说说分区。Kafka中采用分区的设计有几个目的。一是可以处理更多的消息,不受单台服务器的限制。Topic拥有多个分区意味着它可以不受限的处理更多的数据。第二,分区可以作为并行处理的单元,稍后会谈到这一点。
分布式(Distribution)
Log的分区被分布到集群中的多个服务器上。每个服务器处理它分到的分区。 根据配置每个分区还可以复制到其它服务器作为备份容错。
每个分区有一个leader,零或多个follower。Leader处理此分区的所有的读写请求而follower被动的复制数据。如果leader当机,其它的一个follower会被推举为新的leader。
一台服务器可能同时是一个分区的leader,另一个分区的follower。 这样可以平衡负载,避免所有的请求都只让一台或者某几台服务器处理。
- Kafka基本配置
- zookeeper kafka基本配置
- kafka的安装配置跟基本使用
- kafka 基本配置介绍及DEMO
- kafka系列-kafka配置
- 配置 Kafka
- kafka配置
- kafka配置
- Kafka配置
- kafka基本介绍
- kafka基本使用实战
- kafka基本命令
- kafka基本操作
- kafka一些基本操作
- Kafka基本介绍
- kafka基本简介
- Kafka基本架构
- Kafka shell 基本命令
- [BZOJ1407][Noi2002]Savage
- UVa 140 Bandwidth 例题7-6
- 在代码中调用Xib
- 观察者模式
- [BZOJ1088][SCOI2005]扫雷Mine
- Kafka基本配置
- Reverse Bits
- 富爸爸,穷爸爸 读书笔记
- 科大讯飞平台接口的基本使用流程
- 点击一个标签中,某个文字,添加事件
- UIView属性的动画
- 手势:
- [BZOJ2748][HAOI2012]音量调节
- android xmlns:tools用法