文档章节

Kafka集群部署与示例

aibati2008
 aibati2008
发布于 2016/10/14 17:28
字数 940
阅读 92
收藏 5

1 Kafka Cluster的部署

  由于Kafka 集群需要依赖ZooKeeper集群,所以这里我们需要事先搭建好ZK集群(可与kafka集群分离),我这里kafka和zk并没有安在同一机器上,而是直接使用的hadoop集群里的zk。

  server列表
kafka集群 slave4,slave5,slave6
zookeeper集群 master1,master2,slave1

 

  首先,我们将下载好的Kafka安装包kafka_2.9.1解压,命令如下所示:

  • 解压Kafka到slave4
[hadoop@slave4~]$ tar -zxvf kafka_2.9.1-0.8.2.1.tgz
  • 进入到Kafka解压目录
[hadoop@slave4~]$ cd kafka_2.9.1-0.8.2.1
  • 配置环境变量
[hadoop@slave4~]$ vi /etc/profile
export KAFKA_HOME=/home/hadoop/kafka_2.9.1-0.8.2.1
export PATH=$PATH:$KAFKA_HOME/bin
  • 配置Kafka的zookeeper.properties 
# the directory where the snapshot is stored.
dataDir=/home/hadoop/data/zk
# the port at which the clients will connect
clientPort=2181
# disable the per-ip limit on the number of connections since this is a non-production config
maxClientCnxns=0
  • 配置server.properties
# The id of the broker. This must be set to a unique integer for each broker.
broker.id=0

# Zookeeper connection string
# comma separated host:port pairs, each corresponding to a zk
zookeeper.connect=master1:2181,master2:2181,slave1:2181

  注:这里配置broker的时候,每台机器上的broker保证唯一,从0开始。如:在另外2台机器上分别配置broker.id=1,broker.id=2

  • 配置producer.properties
# list of brokers used for bootstrapping knowledge about the rest of the cluster
# format: host1:port1,host2:port2 ...
metadata.broker.list=slave4:9092,slave5:9092,slave6:9092
  • 配置consumer.properties
# Zookeeper connection string
# comma separated host:port pairs, each corresponding to a zk
# server. e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002"
zookeeper.connect=master1:2181,master2:2181,slave1:2181

  至此,Kafka 集群部署完成。

2. kafka集群简单例子测试

启动

  首先,在启动Kafka集群服务之前,确保我们的ZK集群已启动,下面我们启动Kafka集群服务。启动命令如下所示:

[hadoop@slave4 kafka_2.11-0.8.2.1]$ kafka-server-start.sh config/server.properties &

  注:其他2个节点参照上述方式启动。

  另外,启动其他节点的时候,在最先开始启动的节点会显示其它节点加入的信息记录。

验证启动进程

[hadoop@slave4 kafka_2.11-0.8.2.1]$ jps
2049 QuorumPeerMain
2184 Kafka
2233 Jps

创建Topic

  在服务启动后,我们开始创建一个Topic,命令如下所示:

[hadoop@slave4 ]$ kafka-topics.sh --zookeeper master1:2181,master2:2181,slave1:2181 --topic test1 --replication-factor 3 --partitions 1 --create

  我们可以查看该Topic的相关信息,命令如下所示:

[hadoop@slave4 ]$ kafka-topics.sh --zookeeper master1:2181,master2:2181,slave1:2181 --topic test1 --describe

  下面解释一下这些输出。第一行是对所有分区的一个描述,然后每个分区都会对应一行,因为我们只有一个分区所以下面就只加了一行。

  • Leader:负责处理消息的读和写,Leader是从所有节点中随机选择的。
  • Replicas:列出了所有的副本节点,不管节点是否在服务中。
  • Isr:是正在服务中的节点

生产消息

  下面我们使用kafka的Producer生产一些消息,然后让Kafka的Consumer去消费,命令如下所示:

[hadoop@slave4 ]$ kafka-console-producer.sh --broker-list slave4:9092,slave5:9092,slave6:9092 --topic test1

消费消息

  接着,我们在另外一个节点启动消费进程,来消费这些消息,命令如下所示:

[hadoop@slave5 ]$ kafka-console-consumer.sh --zookeeper master1:2181,master2:2181,slave1:2181 --from-beginning --topic test1

  消费记录如下图所示:

 

3.HA特性

  这里,从上面的截图信息可以看出,在slave4节点上Kafka服务是Lead,我们先将slave4节点的Kafka服务kill:

[hadoop@slave4 config]$ jps
2049 QuorumPeerMain
2375 Jps
2184 Kafka
[hadoop@slave4 config]$ kill -9 2184

  然后,其他节点立马选举出了新的Leader,如下图所示:

  下面,我们来测试消息的生产和消费,如下图所示:

  • 生产消息

  • 消费消息

  通过测试,可以发现,Kafka的HA特性还是不错的,拥有不错的容错机制。

 

 

以下是kafka技术分享系列目录,这个比较全,kafka能学习的估计都在里面了

http://blog.csdn.net/lizhitao/article/details/39499283

© 著作权归作者所有

aibati2008
粉丝 14
博文 87
码字总数 61726
作品 0
成都
技术主管
私信 提问
近实时大规模数据流式传输 - Brooklin

Brooklin 是一种近实时的大规模数据流分布式服务,LinkedIn 自 2016 年以来一直在使用这项服务,支撑每天数千个数据流和超过 2 万亿条消息。 为什么要开发 Brooklin? 由于对可扩展、低延迟数...

匿名
07/18
3.3K
1
OpenStack 上搭建 Kafka 集群

最近在 OpenStack 环境下需要部署消息队列集群,包括 RabbitMQ 和 Kafka,这篇记述一下 Kafka 集群的部署过程。 本文所用的环境包括: 软件版本 OpenStack 版本: Pike release Kafka 版本:2...

blackpiglet
2018/10/15
0
0
在 OKD 和 Kubernetes 上运行 Apache Kafka 集群 - Strimzi

Strimzi提供了一种在各种部署配置中在OpenShift和Kubernetes上运行Apache Kafka集群的方法。 在使用Strimzi项目时,使用Kubernetes和OKD(适用于Red Hat OpenShift)启动和运行Apache Kafka集...

匿名
2018/11/09
412
0
Kafka 与 k8s/docker, 应用是共享还是独占??

想问下大家部署的kafka集群是共享集群,还是独占集群。 是一个应用,部署一套Kafka集群+k8s。 还是共享一个Kafka集群,上面通过不同的topics来区分应用。 感觉现在的大部分中间件,都会独占容...

吐槽的达达仔
07/20
270
4
福利丨这也许是目前市面上最权威的Kafka学习指南!

Kafka,不是村上春树的《海边的卡夫卡》,不是《变形记》的作者弗兰兹·卡夫卡。程序员世界里的 Kafka,有三分之一的世界 500 强公司都在使用它发布和订阅、存储及实时地处理大规模流数据。 ...

DBAplus社群
2018/01/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

02.日志系统:一条SQL更新语句是如何执行的?

我们还是从一个表的一条更新语句说起,我们创建下面一张表: create table T(ID int primary key, c int); 如果要将ID=2这一行c的值加1,SQL可以这么写: update T set c=c+1 where ID=2; 前...

scgaopan
今天
9
0
【五分钟系列】掌握vscode调试技巧

调试前端js 准备一个前端项目 index.html <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1......

aoping
今天
8
0
PhotoShop 高级应用:USM锐化/S锐化/防抖

、 高反差锐化+混合模式:叠加模式 【将更多的边缘细节添加到图像中】

东方墨天
今天
9
0
Python数据可视化之matplotlib

常用模块导入 import numpy as npimport matplotlibimport matplotlib.mlab as mlabimport matplotlib.pyplot as pltimport matplotlib.font_manager as fmfrom mpl_toolkits.mplot3d i......

松鼠大帝
昨天
7
0
我用Bash编写了一个扫雷游戏

我在编程教学方面不是专家,但当我想更好掌握某一样东西时,会试着找出让自己乐在其中的方法。比方说,当我想在 shell 编程方面更进一步时,我决定用 Bash 编写一个扫雷游戏来加以练习。 我在...

老孟的Linux私房菜
昨天
15
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部