kafka 快速入门

1.3快速入门

Step 1: 下载Kafka

点击这里下载 Download 并解压

> tar -xzf kafka_2.10-0.8.2.0.tgz> cd kafka_2.10-0.8.2.0

Step 2: 启动服务

Kafka 使用 ZooKeeper 因此需要首先启动 ZooKeeper 服务。如果你没有ZooKeeper 服务,可以使用Kafka自带脚本启动一个应急的单点的 ZooKeeper 实例。

> 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)...

Now start the Kafka server:

> 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)...

Step 3: 创建一个 topic

让我们创建一个
名字为 test
 的
 topic,此topic仅有一个分区和一个副本:

> bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test

运行如下命令查看此topic信息:

> bin/kafka-topics.sh --list --zookeeper localhost:2181 test

我们也可以通过配置
,让brokers
自动创建该topic,
 当向一个不存在的topic发布消息时 。

Step 4: 发送一些消息

Kafka 有命令行客户端,可以从一个文件或者标准输入向 kafka 集群发送消息。默认每一行是一个单独的消息。

运行producer 然后输入几条消息到控制台,输入回车发送到服务端。

> bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
 This is a message
 This is another message

Step 5: 启动一个consumer

Kafka 也有一个
consumer
 
命令行工具可以接受消息到标准输出。

> bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
This is a message
This is another message

不加参数运行命令会显示详细使用文档.

Step 6: 设置一个 multi-broker 集群

目前我们一直是在单个
broker上
运行, 这没啥意思。 对于Kafka来说, 一个 broker 就是一个集群只不过大小是1 而已,所以启动多个broker实例,没有什么变化。 But just to get feel for it, let‘s expand our cluster to three nodes (所有操作仍然在本机上操作)。

首先我们为每个broker 准备一个配置文件:

> cp config/server.properties config/server-1.properties 
> cp config/server.properties config/server-2.properties

Now 编辑这些新文件,内容如下:

 config/server-1.properties: 
broker.id=1 

port=9093 

log.dir=/tmp/kafka-logs-1 

config/server-2.properties: 
broker.id=2 

port=9094 

log.dir=/tmp/kafka-logs-2

每个broker.id 属性是唯一的,并且永不改变。
修改端口

日志目录仅因为所有的
broker运行在同一机器上,生产环境建议用统一的端口及日志目录。

之前已经开启过Zookeeper 和 broker了,现在只需要再启动两就好:

> bin/kafka-server-start.sh config/server-1.properties &...
> bin/kafka-server-start.sh config/server-2.properties &...

创建一个新的topic 并为其设置副本因子:

> bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 1 --topic my-replicated-topic

OK,现在我们已经搭建好一个集群了,但是我们还不知道他是怎么工作的?使用"describe topics"命令查看:

> bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic my-replicated-topic
Topic:my-replicated-topic PartitionCount:1        ReplicationFactor:3     Configs: 
 Topic: my-replicated-topic      Partition: 0    Leader: 1       Replicas: 1,2,0 Isr: 1,2,0

输出的第一行所有分区的概述, 附加的每行是关于每个分区的说明。因为我们只有一个分区所以,这里只有一行。

  • "leader" 负责该分区的读和写。Each node will be the leader for a randomly selected portion of the partitions.
  • "replicas" 保存该分区副本的节点列表。
  • "isr" is the set of "in-sync" replicas. This is the subset of the replicas list that is currently alive and caught-up to the leader.

注意:这个示例中节点1 是 这个topic 的leader。

我们再查看下原来的 topic:

> bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic test
Topic:test     PartitionCount:1        ReplicationFactor:1     Configs: 
 Topic: test     Partition: 0    Leader: 0       Replicas: 0     Isr: 0

这没什么惊讶的—原来的 topic 没有设置副本,所以
Replicas是
 0, 我们创建它时集群中只有一个节点。

让我们发布几条消息到我们的新 topic:

> bin/kafka-console-producer.sh --broker-list localhost:9092 --topic my-replicated-topic
...
my test message 1
my test message 2
^C

Now let‘s consume these messages:

> bin/kafka-console-consumer.sh --zookeeper localhost:2181 --from-beginning --topic my-replicated-topic
...
my test message 1
my test message 2
^C

现在让我们测试下容错性。这里 Broker 1 是 leader 所以我们 kill 掉它:

> ps | grep server-1.properties
7564 ttys002    0:15.91 /System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home/bin/java
...
> kill -9 7564

然后leader 切换为其他节点并且节点1 也不再 in-sync 设置中了:

> bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic my-replicated-topic
Topic:my-replicated-topic      PartitionCount:1        ReplicationFactor:3     Configs:
 Topic: my-replicated-topic      Partition: 0    Leader: 2       Replicas: 1,2,0 Isr: 2,0

但是消息仍然可以消费, 即使是之前的leader 写下的日志:

> bin/kafka-console-consumer.sh --zookeeper localhost:2181 --from-beginning --topic my-replicated-topic
...
my test message 1
my test message 2
^C
时间: 2024-10-10 10:35:25

kafka 快速入门的相关文章

kafka快速入门

Kafka Kafka 核心概念 什么是 Kafka Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写.该项目的目标是为处理实时数据提供一个统一.高吞吐.低延迟的平台.其持久化层本质上是一个"按照分布式事务日志架构的大规模发布/订阅消息队列",这使它作为企业级基础设施来处理流式数据非常有价值.此外,Kafka可以通过Kafka Connect连接到外部系统(用于数据输入/输出),并提供了Kafka Streams--一个Java流式处理库.该设计

3、Kafka学习分享|快速入门-V3.0

Kafka学习分享|快速入门 这个教程假定你刚开始是新鲜的,没有现存的Kafka或者Zookeeper 数据.由于Kafka控制控制脚本在Unix和Windows平台不同,在Windows平台使用bin\windows\ 代替 bin/,并且更改脚本扩展名为.bat. 第一步:下载编码 下载0.10.2.0版本并且解压它. 第二步:启动服务器 Kafka使用Zookeeper,因此如果你没有Zookeeper server,你需要先启动a ZooKeeper server.你可以使用Kafka的

架构设计:系统间通信(36)——Apache Camel快速入门(上)

1.本专题主旨 1-1.关于技术组件 在这个专题中,我们介绍了相当数量技术组件:Flume.Kafka.ActiveMQ.Rabbitmq.Zookeeper.Thrift .Netty.DUBBO等等,还包括本文要进行介绍的Apache Camel.有的技术组件讲得比较深入,有的技术组件则是点到为止.于是一些读者朋友发来信息向我提到,这个专题的文章感觉就像一个技术名词的大杂烩,并不清楚作者的想要通过这个专题表达什么思想. 提出这个质疑的朋友不在少数,所以我觉得有必要进行一个统一的说明.这个专题

Kafka Streams入门指南

应该会有不少人觉得我标题打错了,是不是想讲SparkStreaming或者Kafka+SparkStreaming啊?实际上这不是笔误,Kafka Streams是Kafka 0.10提供的新能力,用于实时处理Kafka中的数据流,和现有的流处理技术如SparkStreaming,Storm,Flink还是有些区别的. 1 概况 Kafka Streams是一套处理分析Kafka中存储数据的客户端类库,处理完的数据或者写回Kafka,或者发送给外部系统.它构建在一些重要的流处理概念之上:区分事件

RocketMQ快速入门

前面几篇文章介绍了为什么选择RocketMQ,以及与kafka的一些对比: 阿里 RocketMQ 优势对比,方便大家对于RocketMQ有一个简单的整体了解,之后介绍了:MQ 应用场景,让我们知道MQ在什么时候可以使用,可以解决什么问题,之后介绍了:RocketMQ集群部署配置:本篇文章接着上篇内容之后,来给大家介绍下RocketMQ快速入门. 如何使用 1.引入 rocketmq-client <dependency> <groupId>org.apache.rocketmq&

区块链快速入门(五)——区块链技术的演化

区块链快速入门(五)--区块链技术的演化 一.区块链技术的发展 比特币区块链面向转账场景,支持简单的脚本计算.如果引入更多复杂的计算逻辑,将能支持更多应用场景,即智能合约(Smart Contract).智能合约可以提供除了货币交易功能外更灵活的合约功能,执行更为复杂的操作.引入智能合约的区块链,已经超越了单纯数据记录功能:可以为区块链加入权限管理,高级编程语言支持等,实现更强大的.支持更多商用场景的分布式账本系统.区块链技术的三种典型演化场景如下: 二.区块链技术的分类 根据参与者的不同,区块

教你零基础如何快速入门大数据技巧

现在是大数据时代,很多人都想要学习大数据,因为不管是就业前景还是薪资都非常的不错,不少人纷纷从其他行业转型到大数据行业,那么零基础的人也想要学习大数据怎么办呢?下面一起探讨下零基础如何快速入门大数据技巧吧. 很多人都需要学习大数据是需要有一定的基础的,编程语言就是必备的条件之一,编程语言目前热门的有:Java.Python.PHP.C/C++等等,无论是学习哪一门编程语言,总之要精细掌握一门语言是非常必须的,我们先拿应用广泛的Java说起哦. .在入门学习大数据的过程当中有遇见学习,行业,缺乏系

Druid入门(1)—— 快速入门实时分析利器-Druid_0.17

一.安装准备 本次安装的版本是截止2020.1.30最新的版本0.17.0 软件要求 需要Java 8(8u92 +)以上的版本,否则会有问题 Linux,Mac OS X或其他类似Unix的操作系统(不支持Windows) 硬件要求 Druid包括一组参考配置和用于单机部署的启动脚本: nano-quickstart micro-quickstart small medium large xlarge 单服务器参考配置 Nano-Quickstart:1个CPU,4GB RAM 启动命令: b

卡夫卡快速入门

起源 Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写.该项目的目标是为处理实时数据提供一个统一.高吞吐.低延迟的平台.其持久化层本质上是一个“按照分布式事务日志架构的大规模发布/订阅消息队列”,这使它作为企业级基础设施来处理流式数据非常有价值.此外,Kafka可以通过Kafka Connect连接到外部系统(用于数据输入/输出),并提供了Kafka Streams——一个Java流式处理库.该设计受事务日志(英语:Transaction log)的影响较