开始使用Kafka

本译文自 Jean-Paul Azar发表在https://dzone.comGetting Started With Kafka,文中版权、图像代码等数据均归作者所有。为了本土化,翻译内容略作修改。

使用Kafka命令行了解Kafka

我们来看一个使用Kafka命令行的生产者和消费者的简单例子。

Kafka下载页面下载Kafka 0.10.2.x。 后来的版本可能会工作,但是这个例子是用0.10.2.x完成的。

我们假设你已经安装了Java SDK 1.8.x。

我们将Kafka下载文件解压缩到〜/ kafka-training /中,然后将Kafka安装文件夹重命名为kafka。请跟着一起做。

接下来,我们将运行ZooKeeper,然后运行Kafka Server / Broker。 我们将使用一些Kafka命令行实用程序来创建Kafka主题,通过生产者发送消息并从命令行使用消息。

为Kafka运行Zookeeper

Kafka依靠ZooKeeper。 为了简单起见,我们将使用一个ZooKeeper节点。

Kafka为ZooKeeper提供了一个名为zookeeper-server-start.sh的启动脚本,位于〜/ kafka-training / kafka / bin / zookeeper-server-start.sh

Kafka发行版还提供了一个ZooKeeper配置文件,它被设置为运行单个节点。

为了运行ZooKeeper,我们在kafka-training中创建这个脚本并运行它。

~/kafka-training/run-zookeeper.sh

#!/usr/bin/env bash
cd ~/kafka-training
kafka/bin/zookeeper-server-start.sh \
   kafka/config/zookeeper.properties

Run run-zookeeper.sh

~/kafka-training
$ ./run-zookeeper.sh

等待大约30秒左右,ZooKeeper就可以启动。

运行Kafka服务器

Kafka还为位于〜/ kafka-training / kafka / bin / kafka-server-start.sh的Kafka服务器提供了一个名为kafka-server-start.sh启动脚本

Kafka发行版还提供了一个Kafka配置文件,该文件被设置为运行Kafka单节点,并指向在localhost:2181上运行的ZooKeeper。

为了运行Kafka,我们在kafka-training中创建了这个脚本,并在另一个终端窗口中运行它。

~/kafka-training/run-kafka.sh

#!/usr/bin/env bash
cd ~/kafka-training
kafka/bin/kafka-server-start.sh \
    kafka/config/server.properties

Run run-kafka.sh

~/kafka-training
$ ./run-kafka.sh

等待Kafka启动大约30秒左右。

现在让我们创建我们将发送记录的主题。

创建Kafka主题

Kafka还提供一个实用程序来处理位于〜/ kafka-training / kafka / bin / kafka-topics.sh的主题kafka-topics.sh

我们将使用此工具创建一个名为my-topic的主题,复制因子为1,因为我们只有一个服务器。 我们将使用十三个分区作为我的主题,这意味着我们可以有多达13个Kafka消费者。

要运行Kafka,请在kafka-training \ lab1中创建此脚本,并在另一个终端窗口中运行它。

~/kafka-training/lab1/create-topic.sh

#!/usr/bin/env bash
cd ~/kafka-training
# 创建一个主题
kafka/bin/kafka-topics.sh --create \
  --zookeeper localhost:2181 \
  --replication-factor 1 --partitions 13 \
  --topic my-topic

Run create-topic.sh

~/kafka-training/lab1
$ ./create-topic.sh
Created topic "my-topic".

注意我们创建一个名称为my-topic的主题

列出主题

您可以看到Kafka使用kafka-topics.sh管理哪些主题,如下所示。

〜/ kafka-training / lab1 / list-topics.sh中创建文件。 并运行它。

~/kafka-training/lab1/list-topics.sh

#!/usr/bin/env bash
cd ~/kafka-training
# 列出现有的主题
kafka/bin/kafka-topics.sh --list \
    --zookeeper localhost:2181

请注意,我们必须指定在本地端口2181上运行ZooKeeper集群。

运行 list-topics.sh

~/kafka-training/lab1
$ ./list-topics.sh
__consumer_offsets
_schemas
my-example-topic
my-example-topic2
my-topic
new-employees

你可以看到主题my-topic在主题列表中。

运行Kafka Producer控制台

Kafka发行版提供了一个命令实用程序来从命令行发送消息。它启动一个终端窗口,您输入的所有内容都会发送到Kafka主题。

Kafka提供了一个实用程序 kafka-console-producer.sh~/kafka-training/kafka/bin/kafka-console-producer.sh 用于将消息发送到命令行上的主题。

创建文件 ~/kafka-training/lab1/start-producer-console.sh 并运行它。

~/kafka-training/lab1/start-producer-console.sh

#!/usr/bin/env bash
cd ~/kafka-training
kafka/bin/kafka-console-producer.sh \
    --broker-list localhost:9092 \
    --topic my-topic

请注意我们指定了正在运行Kafka的节点为localhost:9092

运行 start-producer-console.sh 然后发送至少四条信息

~/kafka-training/lab1
$ ./start-producer-console.sh
This is message 1
This is message 2
This is message 3
Message 4
Message 5

为了看到这些信息,我们需要运行消费者控制台。

运行Kafka使用者控制台

Kafka发行版提供了一个命令实用程序来查看来自命令行的消息。它以各种模式显示消息。

Kafka提供了kafka-console-consumer.sh 位于在 ~/kafka-training/kafka/bin/kafka-console-producer.sh 命令行上接收来自主题的消息的实用程序 。

创建文件 ~/kafka-training/lab1/start-consumer-console.sh 并运行它。

~/kafka-training/lab1/start-producer-console.sh

#!/usr/bin/env bash
cd ~/kafka-training
kafka/bin/kafka-console-consumer.sh \
    --bootstrap-server localhost:9092 \
    --topic my-topic \
    --from-beginning

请注意,我们指定了localhost:9092 像之前一样运行的Kafka节点 ,但是我们也指定my-topic 从头开始 读取所有消息 --from-beginning

在另一个终端中运行start-consumer-console.sh

~/kafka-training/lab1
$ ./start-consumer-console.sh
Message 4
This is message 2
This is message 1
This is message 3
bash
Message 5
Message 6
Message 7

请注意,这些消息不是按顺序排列的。这是因为我们只有一个用户,所以它正在读取所有13个分区的消息。订单只保证在一个分区内。

从命令行回顾使用Kafka

你先运行什么服务器?

你需要运行ZooKeeper比Kafka。

你用什么工具创建主题?

kafka-topics.sh

你用什么工具看题目?

kafka-topics.sh

我们用什么工具在命令行上发送消息?

kafka-console-producer.sh

我们用什么工具查看主题中的信息?

kafka-console-consumer.sh

为什么这些信息是不符合规定的?

消息在13个分区之间被分割。

我们怎么能从消费者那里得到消息?

我们只能使用一个分区或启动13个消费者。

原文链接:https://dzone.com/articles/getting-started-with-kafka-tutorial

原文作者:Jean-Paul Azar

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏北京马哥教育

生产环境之“进程”两字

一、进程概念 运行中的程序的一个副本,是被载入内存的一个指令集合 进程ID(Process ID,PID)号码被用来标记各个进程UID、GID、和SELinux...

3408
来自专栏CSDN技术头条

XEN、VMware ESXi、Hyper-V以及KVM架构解析

XEN 有简化虚拟模式,不需要设备驱动,能够保证每个虚拟用户系统相互独立,依赖于 service domains 来完成一些功能; Vmware ESXI 与 ...

58210
来自专栏我是攻城师

如何在Scala中读取Hadoop集群上的gz压缩文件

2904
来自专栏较真的前端

关于webpack的面试题总结

本文首发于前端面试总结@知乎专栏,各位可以通过点击文章下方的阅读原来来访问原文地址

3414
来自专栏我是攻城师

SparkStreaming如何优雅的停止服务

4037
来自专栏技术翻译

Kubernetes Demystified:Java应用程序资源的限制

随着容器技术变得越来越复杂,越来越多的企业客户选择Docker和Kubernetes作为其应用平台的基础。但是,这些客户在实践中遇到许多问题。本系列文章介绍了阿...

400
来自专栏Zephery

谈谈个人网站的建立(六)—— 数据库同步

先来回顾一下上一篇的小集群架构,tomcat集群,nginx进行反向代理,服务器异地: ? 由上一篇讲到,部署的时候,将war部署在不同的服务器里,通过spri...

3765
来自专栏懒人开发

Zookeeper应用:HBase的HA简单实现

相对应hadoop的高可用,HBase配置简单很多 HBase中可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有...

1273
来自专栏轻量级微服务

Kubernetes Pod 生命周期

Pod 的 status 属性是一个 PodStatus 对象,拥有一个 phase 字段。它简单描述了 Pod 在其生命周期的阶段。

791
来自专栏Java技术

使用Spring AOP实现MySQL数据库读写分离案例分析

分布式环境下数据库的读写分离策略是解决数据库读写性能瓶颈的一个关键解决方案,更是最大限度了提高了应用中读取 (Read)数据的速度和并发量。

712

扫码关注云+社区