Kafka是一个分布式的、可分区的、可复制的消息系统。它提供了普通消息系统的功能,但具有自己独特的设计。这个独特的设计是什么样的呢

介绍

Kafka是一个分布式的、可分区的、可复制的消息系统。它提供了普通消息系统的功能,但具有自己独特的设计。这个独特的设计是什么样的呢?

首先让我们看几个基本的消息系统术语:

•Kafka将消息以topic为单位进行归纳。
•将向Kafka topic发布消息的程序成为producers.
•将预订topics并消费消息的程序成为consumer.
•Kafka以集群的方式运行,可以由一个或多个服务组成,每个服务叫做一个broker.
producers通过网络将消息发送到Kafka集群,集群向消费者提供消息,如下图所示:

客户端和服务端通过TCP协议通信。Kafka提供了Java客户端,并且对多种语言都提供了支持。

说明:

操作系统:CentOS 6.x 64位

Kafka版本:kafka_2.11-2.1.0

实现目的:

单机安装配置kafka

具体操作:

一、关闭防火墙

关闭: service iptables stop
禁用: chkconfig iptables off

二、安装JDK

kafka运行需要JDK支持

1、下载JDK

http://download.oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.rpm

注意:直接复制到下载工具进行下载,版本请使用JDK7

下载完成之后,上传到/usr/local/src目录下

2、安装JDK

cd /usr/local/src

chmod +x jdk-7u79-linux-x64.rpm # 添加执行权限

rpm -ivh jdk-7u79-linux-x64.rpm #安装

安装完成之后,可以cd /usr/java/ 到安装目录查看

3、添加JDK到系统环境变量

vi /etc/profile #编辑,在最后添加以下代码

JAVA_HOME=/usr/java/jdk1.7.0_79

PATH=$PATH:$JAVA_HOME/bin:/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin

CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar

export JAVA_HOME

export PATH

export CLASSPATH

:wq! #保存退出

source /etc/profile #使配置文件立即生效

java -version #查看JDK版本信息

到此,JDK安装完成。

三、安装kafka

1、下载kafka

cd /usr/local/src

wget http://59.80.44.99/archive.apache.org/dist/kafka/2.1.0/kafka_2.12-2.1.0.tgz

注意,kafka_2.12-2.1.0.tgz版本是已经编译好的版本,解压就能使用。

tar -xzvf kafka_2.12-2.1.0.tgz #解压

mv kafka_2.12-2.1.0 /usr/local/kafka #移动到安装目录

2、配置kafka

mkdir /usr/local/kafka/log/kafka #创建kafka日志目录

cd /usr/local/kafka/config #进入配置目录

vi server.properties #编辑修改相应的参数 (参考配置说明地址:http://blog.csdn.net/lizhitao/article/details/25667831)

broker.id=0

port=9092 #端口号

host.name=192.168.5.56 #服务器IP地址,修改为自己的服务器IP

log.dirs=/usr/local/kafka/log/kafka #日志存放路径,上面创建的目录

log.cleaner.enable=false     #是否开启日志清理

zookeeper.connect=192.168.5.56:2181 #zookeeper地址和端口

:wq! #保存退出

3、配置zookeeper

mkdir /usr/local/kafka/zookeeper #创建zookeeper目录

mkdir /usr/local/kafka/log/zookeeper #创建zookeeper日志目录

cd /usr/local/kafka/config #进入配置目录

vi zookeeper.properties #编辑修改相应的参数

dataDir=/usr/local/kafka/zookeeper #zookeeper数据目录

dataLogDir=/usr/local/kafka/log/zookeeper #zookeeper日志目录

clientPort=2181

maxClientCnxns=100

tickTime=2000

initLimit=10

syncLimit=5

:wq! #保存退出

四、创建启动、关闭kafka脚本

cd /usr/local/kafka

#创建启动脚本

vi kafkastart.sh #编辑,添加以下代码

#!/bin/sh

#启动zookeeper

/usr/local/kafka/bin/zookeeper-server-start.sh /usr/local/kafka/config/zookeeper.properties &

sleep 3 #等3秒后执行

#启动kafka

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

:wq! #保存退出

#创建关闭脚本

vi kafkastop.sh #编辑,添加以下代码

#!/bin/sh

#关闭zookeeper

/usr/local/kafka/bin/zookeeper-server-stop.sh /usr/local/kafka/config/zookeeper.properties &

sleep 3 #等3秒后执行

#关闭kafka

/usr/local/kafka/bin/kafka-server-stop.sh /usr/local/kafka/config/server.properties &

:wq! #保存退出

#添加脚本执行权限

chmod +x kafkastart.sh

chmod +x kafkastop.sh

五、设置脚本开机自动执行

vi /etc/rc.d/rc.local #编辑,在最后添加一行

sh /usr/local/kafka/kafkastart.sh & #设置开机自动在后台运行脚本

:wq! #保存退出

sh /usr/local/kafka/kafkastart.sh #启动kafka

sh /usr/local/kafka/kafkastop.sh #关闭kafka

至此,Linux下Kafka单机安装配置完成。

六、kafka样例测试

首先要按照上述 启动kafka

1、单节点 - 单代理配置

在此配置中,您有一个ZooKeeper和代理id实例。 以下是配置它的步骤 -

创建Kafka主题 - Kafka提供了一个名为 kafka-topics.sh 的命令行实用程序,用于在服务器上创建主题。 打开新终端并键入以下示例。

语法

bin/kafka-topics.sh --create --zookeeper localhost: --replication-factor  --partitions  --topic topic-name

示例

bin/kafka-topics.sh --create --zookeeper localhost: --replication-factor  --partitions  --topic Hello-Kafka

我们刚刚创建了一个名为 Hello-Kafka 的主题,其中包含一个分区和一个副本因子。 上面创建的输出将类似于以下输出 -

输出 - 创建主题 Hello-Kafka 

创建主题后,您可以在Kafka代理终端窗口中获取通知,并在config / server.properties文件中的“/ tmp / kafka-logs /"中指定的创建主题的日志。

主题列表

要获取Kafka服务器中的主题列表,可以使用以下命令 -

语法

bin/kafka-topics.sh --list --zookeeper localhost:

输出

Hello-Kafka

由于我们已经创建了一个主题,它将仅列出 Hello-Kafka 。 假设,如果创建多个主题,您将在输出中获取主题名称。

启动生产者以发送消息

语法

bin/kafka-console-producer.sh --broker-list localhost: --topic topic-name

从上面的语法,生产者命令行客户端需要两个主要参数 -

代理列表 - 我们要发送邮件的代理列表。 在这种情况下,我们只有一个代理。 Config / server.properties文件包含代理端口ID,因为我们知道我们的代理正在侦听端口9092,因此您可以直接指定它。localhost要换成服务器ip。

主题名称 - 以下是主题名称的示例。

示例

bin/kafka-console-producer.sh --broker-list 10.1.2.3: --topic Hello-Kafka

生产者将等待来自stdin的输入并发布到Kafka集群。 默认情况下,每个新行都作为新消息发布,然后在 config / producer.properties 文件中指定默认生产者属性。 现在,您可以在终端中键入几行消息,如下所示。

输出

$ bin/kafka-console-producer.sh --broker-list 10.1.1.3:
--topic Hello-Kafka[-- ::,]
WARN property topic is not valid (kafka.utils.Verifia-bleProperties)
Hello
My first message
My second message

启动消费者以接收消息

与生产者类似,在 config / consumer.proper-ties 文件中指定了缺省使用者属性。 打开一个新终端并键入以下消息消息语法。注意localhost需要改为服务器ip

语法

bin/kafka-console-consumer.sh --bootstrap-server localhost: --topic topic-name --from-beginning

示例

bin/kafka-console-consumer.sh --bootstrap-server 10.1.1.3: --topic Hello-Kafka --from-beginning

如果想实时显示的话则去掉后面的   --from-beginning

输出

Hello
My first message
My second message

最后,您可以从制作商的终端输入消息,并看到他们出现在消费者的终端。 到目前为止,您对具有单个代理的单节点群集有非常好的了解。 现在让我们继续讨论多个代理配置。

2、单节点多代理配置

在单服务器上模拟kafka集群模型可参考  http://www.bubuko.com/infodetail-1989010.html。

在进入多个代理集群设置之前,首先启动ZooKeeper服务器。

创建多个Kafka Brokers - 我们在配置/ server.properties中已有一个Kafka代理实例。 现在我们需要多个代理实例,因此将现有的server.prop-erties文件复制到两个新的配置文件中,并将其重命名为server-one.properties和server-two.properties。 然后编辑这两个新文件并分配以下更改 -

config / server-one.properties

# The id of the broker. This must be set to a unique integer for each broker.
broker.id=
# The port the socket server listens on
port=
# A comma seperated list of directories under which to store log files
log.dirs=/tmp/kafka-logs-

config / server-two.properties

# The id of the broker. This must be set to a unique integer for each broker.
broker.id=
# The port the socket server listens on
port=
# A comma seperated list of directories under which to store log files
log.dirs=/tmp/kafka-logs-

启动多个代理 - 在三台服务器上进行所有更改后,打开三个新终端,逐个启动每个代理。

Broker1
bin/kafka-server-start.sh config/server.properties
Broker2
bin/kafka-server-start.sh config/server-one.properties
Broker3
bin/kafka-server-start.sh config/server-two.properties

现在我们有三个不同的经纪人在机器上运行。 自己尝试,通过在ZooKeeper终端上键入 jps 检查所有守护程序,然后您将看到响应。

创建主题

让我们为此主题将复制因子值指定为三个,因为我们有三个不同的代理运行。 如果您有两个代理,那么分配的副本值将是两个。

语法

bin/kafka-topics.sh --create --zookeeper localhost: --replication-factor  -partitions  --topic topic-name

示例

bin/kafka-topics.sh --create --zookeeper localhost: --replication-factor  -partitions  --topic Multibrokerapplication

输出

created topic "Multibrokerapplication"

 Describe 命令用于检查哪个代理正在侦听当前创建的主题,如下所示 -

bin/kafka-topics.sh --describe --zookeeper localhost: --topic Multibrokerappli-cation

输出

bin/kafka-topics.sh --describe --zookeeper localhost: --topic Multibrokerappli-cation

Topic:Multibrokerapplication    PartitionCount:
ReplicationFactor: Configs: Topic:Multibrokerapplication Partition: Leader:
Replicas:,, Isr:,,

从上面的输出,我们可以得出结论,第一行给出所有分区的摘要,显示主题名称,分区数量和我们已经选择的复制因子。 在第二行中,每个节点将是分区的随机选择部分的领导者。

在我们的例子中,我们看到我们的第一个broker(with broker.id 0)是领导者。 然后Replicas:0,2,1意味着所有代理复制主题最后 Isr  in-sync 副本的集合。 那么,这是副本的子集,当前活着并被领导者赶上。

启动生产者以发送消息

此过程保持与单代理设置中相同。

示例

bin/kafka-console-producer.sh --broker-list localhost: --topic Multibrokerapplication

输出

bin/kafka-console-producer.sh --broker-list 10.1.1.3: --topic Multibrokerapplication
[-- ::,] WARN Property topic is not valid (kafka.utils.Verifia-bleProperties)
This is single node-multi broker demo
This is the second message

启动消费者以接收消息

此过程保持与单代理设置中所示的相同。

语法

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic Multibrokerapplica-tion --from-beginning

输出

bin/kafka-console-consumer.sh --bootstrap-server 10.1.1.3:9092 --topic Multibrokerapplica-tion —from-beginning 
This is single node-multi broker demo
This is the second message

基本主题操作

在本章中,我们将讨论各种基本主题操作。

修改主题

您已经了解如何在Kafka Cluster中创建主题。 现在让我们使用以下命令修改已创建的主题

语法

bin/kafka-topics.sh —zookeeper localhost: --alter --topic topic_name --parti-tions count

示例

We have already created a topic “Hello-Kafka" with single partition count and one replica factor.
Now using “alter" command we have changed the partition count.
bin/kafka-topics.sh --zookeeper localhost:
--alter --topic Hello-kafka --parti-tions

输出

WARNING: If partitions are increased for a topic that has a key,
the partition logic or ordering of the messages will be affected
Adding partitions succeeded!

删除主题

要删除主题,可以使用以下语法。

语法

bin/kafka-topics.sh --zookeeper localhost: --delete --topic topic_name

示例

bin/kafka-topics.sh --zookeeper localhost: --delete --topic Hello-kafka

输出

> Topic Hello-kafka marked for deletion

注意 - 如果 delete.topic.enable 未设置为true,则此操作不会产生任何影响

Kafka在Linux上安装部署及样例测试的更多相关文章

  1. Kibana在Linux上安装部署及使用说明

    Kibana安装及使用说明 Kibana是一个针对Elasticsearch的开源分析及可视化平台,用来搜索.查看交互存储在Elasticsearch索引中的数据. 官方地址:https://www. ...

  2. 怎么在linux上安装部署jenkins

    怎么在linux上安装部署jenkins 作为一个非科班出身自学的小白,踩过很多的坑,特此留下记录 以下在虚拟机上示例 系统:linux(centos7) 操作方式:xshell连接终端操作 教程之前 ...

  3. ElasticSearch在linux上安装部署(转)

    一.安装准备工作安装参考文档: ELK官网:https://www.elastic.co/ ELK官网文档:https://www.elastic.co/guide/index.html ELK中文手 ...

  4. 【mail邮件系统】linux上安装部署sendmail邮件系统

    sendmail是linux系统中一个邮箱系统,在系统中配置好sendmail就可以直接使用它来发送邮箱.sendmail的配置文件 /etc/mail/sendmail.cf :Sendmail的主 ...

  5. Kafka在window上安装部署

    1.准备工作   ①jdk 具体自行百度安装jdk,配置好 JAVA_HOME和path, 下载地址:   http://www.oracle.com/technetwork/java/javase/ ...

  6. linux 上安装部署python

    一般在linux中使用python 需要安装pyenv 进行版本控制 因为linux6.9自带的Python是2.6的 同时很多命令都是基于2.6开发的 所以系统环境不能改 我们要开发 只能用pyen ...

  7. Logstash在Linux上安装部署

    Logstash 简介: Logstash 是一个实时数据收集引擎,可收集各类型数据并对其进行分析,过滤和归纳.按照自己条件分析过滤出符合数据导入到可视化界面.它可以实现多样化的数据源数据全量或增量传 ...

  8. linux上安装配置samba服务器

    linux上安装配置samba服务器 在linux上安装配置samba服务器 在这给大家介绍一个不错的家伙,samba服务.如果您正在犯愁,如何在Windows和Linux之间实现资源共享,就请看看这 ...

  9. Node.js~在linux上的部署~pm2管理工具的使用

    之前写了两篇关于在linux上部署nodejs的文章,大家如果没有基础可以先看前两篇<Node.js~在linux上的部署>,<Node.js~在linux上的部署~外网不能访问no ...

随机推荐

  1. h5文件(.h5和.hdf5)

    HDF5 (.h5, .hdf5) HDF 是 Hierarchical Data Format(分层数据格式)的缩写 HDF 版本 5不与 HDF 版本 4 及早期版本兼容. HDF5 (.h5, ...

  2. C++ 使用vector时遇到的一个问题

    我在测试程序中定义一个存储三维点的结构体,并定义该结构体的vector,当我在向vector插入元素时,编译一直提示错误: 代码片段如下:  C++ Code  1234567891011121314 ...

  3. 采用get方式提交数据到服务器实例

    GetDemo项目目录 一.编写StreamTools.java /** * */ package com.hyzhou.getdemo.utiils; import java.io.ByteArra ...

  4. Ldap 漏洞

    0x00 Ldap安装 官网地址:https://www.userbooster.de/en/download/openldap-for-windows.aspx 在win2008上安装,一路Next ...

  5. Robot Framework配置发送邮件功能

    请参考:http://www.robotframework.net/?/article/118

  6. Create maintenance backup plan in SQL Server 2008 R2 using the wizard

    You will need to identify how you want your maintenance plan to be setup. In this example the mainte ...

  7. Redis 操作有序集合数据

    Redis 操作有序集合数据: > zadd names "Tom" // zadd 用于往有序集合中添加元素,其中 1 在 Redis 中称为 score(分数),用来进行 ...

  8. sutdio中替换全局方法

    Ctril Shift R Text to find :是要搜索的内容或者要被替换的内容 Replace with :是要替换的内容 Preview:是可以看到预览 在Scope的选项卡里 Whole ...

  9. c语言学习笔记---符号

    专题2.符号的技巧: 1) 注释符与转义符 vC语言中的接续符(\)是指示编译器行为的利器: 接续符的使用:编译器会将反斜杠剔除,嗯在反斜杠后面的字符自动解到前面的一行. 在接续单词时,反斜杠之后不能 ...

  10. 《转载》renameTo文件在windows环境下可以,在linux中报错

    以前我一直以为File#renameTo(File)方法与OS下面的 move/mv 命令是相同的,可以达到改名.移动文件的目的.不过后来经常发现问题:File#renameTo(File)方法会返回 ...