kafka+zookeeper 集群搭建配置 实用知识

概念
  • producer : 消息生产者,发布消息到 kafka 集群的终端或服务。

  • consumer : 从 kafka 集群中消费消息的终端或服务。

  • Consumer group : high-level consumer API 中,每个 consumer 都属于一个 consumer group,每条消息只能被 consumer group 中的一个 Consumer 消费,但可以被多个 consumer group 消费。

  • topic: 每条发布到 kafka 集群的消息属于的类别,即 kafka 是面向 topic 的。

  • broker:kafka 集群中包含的服务器。

  • partition:partition 是物理上的概念,每个 topic 包含一个或多个 partition。kafka 分配的单位是 partition。

  • replica: partition 的副本,保障 partition 的高可用。

kafka27140952.png
kafka配置文件
# 核心配置
broker.id=0

############### Socket Server Settings ##############
# 监听端口
listeners=PLAINTEXT://:9092
# 配置服务提供远端访问能力
advertised.listeners=PLAINTEXT://192.168.199.101:9092
# 配置Https的连接
#listener.security.protocol.map=PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL
# server用来处理网络请求的网络线程数目;一般你不需要更改这个属性。
num.network.threads=3
# server用来处理请求的I/O线程的数目;这个线程数目至少要等于硬盘的个数。
num.io.threads=8
# SO_SNDBUFF 缓存大小,server进行socket 连接所用
socket.send.buffer.bytes=102400
# SO_RCVBUFF缓存大小,server进行socket连接时所用
socket.receive.buffer.bytes=102400
# server允许的最大请求尺寸; 这将避免server溢出,它应该小于Java heap size
socket.request.max.bytes=10485760

################ Log Basics ####################
# 此目录每次重启会被清理,测试用就不改了
log.dirs=/tmp/kafka-logs
# 如果创建topic时没有给出划分partitions个数,这个数字将是topic下partitions数目的默认数值。
num.partitions=1
num.recovery.threads.per.data.dir=1

################# Internal Topic Settings #################
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1

################# Log Flush Policy ###################
# The number of messages to accept before forcing a flush of data to disk
#log.flush.interval.messages=10000
# The maximum amount of time a message can sit in a log before we force a flush
#log.flush.interval.ms=1000

################# Log Retention Policy ##################
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000

################# Zookeeper #################
zookeeper.connect=localhost:2181
# Timeout in ms for connecting to zookeeper
zookeeper.connection.timeout.ms=6000

############ Group Coordinator Settings ############
group.initial.rebalance.delay.ms=0


例子 (kafka_2.11-0.10.1.1)
# Licensed to the Apache Software Foundation (ASF) 
############ Server Basics ###################

# The id of the broker. This must be set to a unique integer for each broker.
broker.id=1

# Switch to enable topic deletion or not, default value is false
#delete.topic.enable=true

############## Socket Server Settings ##################

# The address the socket server listens on. It will get the value returned from 
# java.net.InetAddress.getCanonicalHostName() if not configured.
#   FORMAT:
#     listeners = security_protocol://host_name:port
#   EXAMPLE:
#     listeners = PLAINTEXT://your.host.name:9092
listeners=PLAINTEXT://192.168.199.101:9091

# The number of threads handling network requests
num.network.threads=3

# The number of threads doing disk I/O
num.io.threads=8

# The send buffer (SO_SNDBUF) used by the socket server
socket.send.buffer.bytes=102400

# The receive buffer (SO_RCVBUF) used by the socket server
socket.receive.buffer.bytes=102400

socket.request.max.bytes=104857600

############# Log Basics ####################

# A comma seperated list of directories under which to store log files
log.dirs=/home/kfk/ka1_logs

# the brokers.
num.partitions=1

num.recovery.threads.per.data.dir=1

################# Log Flush Policy ###################

# The maximum amount of time a message can sit in a log before we force a flush
#log.flush.interval.ms=1000

############## Log Retention Policy #################
# The minimum age of a log file to be eligible for deletion
log.retention.hours=168

# The maximum size of a log segment file.
log.segment.bytes=1073741824

# to the retention policies
log.retention.check.interval.ms=300000

################ Zookeeper ################
# server. e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002".
# root directory for all kafka znodes.
zookeeper.connect=192.168.199.101:2181,192.168.199.101:2182,192.168.199.101:2183

# Timeout in ms for connecting to zookeeper
zookeeper.connection.timeout.ms=6000

启动命令

#!/bin/bash JMX_PORT=9981 bin/kafka-server-start.sh config/server1.properties >/dev/null 2>&1 &

停止命令

ps -ef |grep kafka |grep java|awk '{print $2}' |xargs kill -9


常用操作

创建topic test1

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

查看topic列表

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

查看一个 topic 的分区及副本状态信息。

bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic test1

启动生产者

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

启动消费者

bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test1 --from-beginning

**在生产者发送的消息,会在消费者接收到,用于测试基础功能

创建3个副本的topic

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

将已有的topic修改为3个分区

kafka-topics.sh --alter --zookeeper localhost:2181 --topic test1 --partitions 3

zookeeper

配置文件实例 (zookeeper-3.4.14)
tickTime=2000

initLimit=10

syncLimit=5

dataDir=/home/zkdata

dtaLogDir=/home/zkdata/logs

clientPort=2181

server.1=192.168.199.101:2881:3881
server.2=192.168.199.101:2882:3882
server.3=192.168.199.101:2883:3883
启动命令

sh /opt/zookeeper1/bin/zkServer.sh start

start/status/stop/restart

连接服务器

zkCli.sh -server 127.0.0.1:2181

常用命令

1.ls -- 查看某个目录包含的所有文件,例如:
[zk: 127.0.0.1:2181(CONNECTED) 1] ls /2.ls2 -- 查看某个目录包含的所有文件,
与ls不同的是它查看到time、version等信息,例如:
[zk: 127.0.0.1:2181(CONNECTED) 1] ls2 /3.create -- 创建znode,并设置初始内容,例如:
[zk: 127.0.0.1:2181(CONNECTED) 1] create /test "test" 
Created /test创建一个新的 znode节点“ test ”以及与它关联的字符串4.get -- 获取znode的数据,
如下:
[zk: 127.0.0.1:2181(CONNECTED) 1] get /test5.set -- 修改znode内容,例如:
[zk: 127.0.0.1:2181(CONNECTED) 1] set /test "ricky"6.delete -- 删除znode,例如:
[zk: 127.0.0.1:2181(CONNECTED) 1] delete /test7.quit -- 退出客户端8.help -- 帮助命令
zookeeper 四字命令 (服务器)

conf  输出相关服务配置的详细信息 
cons  列出所有连接到服务器的客户端的完全的连接 / 会话的详细信息。
      包括“接受 / 发送”的包数量、会话 id 、操作延迟、最后的操作执行等等信息 
dump  列出未经处理的会话和临时节点。 
envi  输出关于服务环境的详细信息(区别于 conf 命令)。 
reqs  列出未经处理的请求 ruok 测试服务是否处于正确状态。
      如果确实如此,那么服务返回“ imok ”,否则不做任何相应 stat 输出关于性能和连接的客户端的列表。 
wchs  列出服务器 watch 的详细信息 
wchc  通过 session 列出服务器 watch 的详细信息,它的输出是一个与 watch 相关的会话的列表 
      wchp 通过路径列出服务器 watch 的详细信息。它输出一个与 session 相关的路径
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343