开始使用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 条评论
登录 后参与评论

相关文章

来自专栏Python爬虫与数据挖掘

Centos7.4系统的虚拟机网络配置教程

前几天小编给大家分享了如何给Centos6.7版本的虚拟机配置网络,感兴趣的小伙伴可以点击进去看看。小编按照Centos6.7版本的虚拟机网络配...

811
来自专栏云计算教程系列

如何在Ubuntu 16.04上安装和配置NATS

NATS是一种开源高性能消息系统,通常被称为“云的中枢神经系统”。它能够每秒路由数百万条消息,这使其成为连接微服务和物联网(IoT)设备的理想选择。

720
来自专栏从零学习云计算

openshift/origin学习记录(0)——Ansible安装多节点openshift集群

本节内容是基于Ansible Playbook自动部署openshift集群,之后几节内容会通过一个AllInOne的集群手动添加组件,研究实现的流程。 ...

6460
来自专栏Laoqi's Linux运维专列

Kubernetes 1.8.6 集群部署–创建证书(二)

以下操作都在 master 节点即 192.168.161.161 上执行,证书只需要创建一次即可,以后在向集群中添加新节点时只要将 /etc/kubernet...

3626
来自专栏玄魂工作室

Python灰帽编程 3.1 ARP欺骗

ARP欺骗是一种在局域网中常用的攻击手段,目的是让局域网中指定的(或全部)的目标机器的数据包都通过攻击者主机进行转发,是实现中间人攻击的常用手段,从而实现数据监...

3276
来自专栏吴伟祥

文件拷贝工具 原

WinSCP是一个Windows环境下使用SSH的开源图形化SFTP客户端。同时支持SCP协议。它的主要功能就是在本地与远程计算机间安全的复制文件。.winsc...

893
来自专栏生信宝典

Docker基本使用

Docker能做什么 The key benefit of Docker is that it allows users to package an appli...

1857
来自专栏云计算教程系列

如何在Ubuntu 16.04上安装和配置Zabbix以安全地监视远程服务器

Zabbix是用于web和应用程序的开源监控软件。它提供对从服务器,虚拟机和任何其他类型的网络设备收集的数千个指标的实时监控。这些指标可帮助确定IT基础架构的当...

1073
来自专栏我思故我在

增加VirtualBox虚拟机的磁盘空间大小(Host:Win7 VirtualBox5.0.16 VM:Win10)

34714
来自专栏我的博客

HTTP 状态码汇总

400 Bad request(错误请求) 401.1 Logon failed(登录失败) 401.2 Logon failed due to serve...

3308

扫码关注云+社区