用好kafka,你不得不知的那些工具
前言
工欲善其事,必先利其器。本文主要分享一下消息中间件kafka安装部署的过程,以及我平时在工作中针对kafka用的一些客户端工具和监控工具。
kafka部署架构
一个kafka集群由多个kafka broker
组成,每个broker
将自己的元数据信息注册到zookeeper
中,通过zookeeper
关联形成一个集群。
prettyZoo客户端
既然kafka
依赖zookeeper
,我难免就需要看看zookeeper
中究竟存储了kafka
的哪些数据,这边介绍一款高颜值的客户端工具prettyZoo
。PrettyZoo
是一款基于Apache Curator
和 JavaFX
实现的 Zookeeper
图形化管理客户端,使用非常简单。
下载地址: https://github.com/vran-dev/PrettyZoo
- 连接
- 界面化操作
zookeeper
小tips: kafka
部署时配置文件中配置zookeeper
地址的时候,可以采用如下的方式,带上目录,比如xxxx:2181/kafka
或者xxxx:2181/kafka1
,可以避免冲突。
#配置连接 Zookeeper 集群地址(在 zk 根目录下创建/kafka,方便管理)
zookeeper.connect=hadoop102:2181,hadoop103:2181,hadoop104:2181/ka
fka
kafka Tool客户端
Kafka Tool
是一个用于管理和使用Apache Kafka
集群的GUI
应用程序。 Kafka Tool
提供了一个较为直观的UI可让用户快速查看Kafka
集群中的对象以及存储在topic
中的消息,提供了一些专门面向开发人员和管理员的功能。
下载地址: https://www.kafkatool.com/index.html
kafka监控工具
kafka
自身并没有继承监控管理系统,因此对 kafka
的监控管理比较不便,好在有大量的第三方监控管理系统来使用,这里介绍一款优秀的监控工具Kafka Eagle
,可以用监控 Kafka
集群的整体运行情况。
下载地址:https://www.kafka-eagle.org/
,部署也很简单,根据官方文档一步一步来即可。
注意,kafka需要开启JMX端口,即修改kafka
的启动命令文件kafka-server-start.sh
,如下图:
kafka集群部署
一、zookeeper集群部署
- 上传安装包
- 移动到指定文件夹
mv zookeeper-3.4.6.tar.gz /opt/apps/
- 解压
tar -zxvf zookeeper-3.4.6.tar.gz
- 修改配置文件
- 进入配置文件目录
cd /opt/apps/zookeeper-3.4.6/conf
- 修改配置文件名称
mv zoo_sample.cfg zoo.cfg
- 编辑配置文件
vi zoo.cfg
## zk数据保存位置
dataDir=/opt/apps/data/zkdata
## 集群配置, hadoop1、hadoop2、hadoop3是主机名,后面是端口,没有被占用即可
server.1=hadoop1:2888:3888
server.2=hadoop2:2888:3888
server.3=hadoop3:2888:3888
- 创建数据目录
mkdir -p /opt/apps/data/zkdata
- 生成一个
myid
文件,内容为它的id
, 表示是哪个节点。
echo 1 > /opt/apps/data/zkdata/myid
- 配置环境变量
vi /etc/profile
#ZOOKEEPER_HOME
export ZOOKEEPER_HOME=/opt/apps/zookeeper-3.4.6
export PATH=$PATH:$ZOOKEEPER_HOME/bin
source /etc/profile
- 在其他几个节点,即
hadoop2
,hadoop3
上重复上面的步骤,但是myid文件的内容有所区别,分别是对应的id。
echo 2 > /opt/apps/data/zkdata/myid
echo 3 > /opt/apps/data/zkdata/myid
- 启停集群
bin/zkServer.sh start zk 服务启动
bin/zkServer.sh status zk 查看服务状态
bin/zkServer.sh stop zk 停止服务
二、kafka集群部署
- 官方下载地址:
http://kafka.apache.org/downloads.html
- 上传安装包, 移动到指定文件夹
mv kafka_2.11-2.2.2.tgz /opt/apps/
- 解压
tar -zxvf kafka_2.11-2.2.2.tgz
- 修改配置文件
- 进入配置文件目录
cd /opt/apps/kafka_2.11-2.2.2/config
- 编辑配置文件
vi server.properties
#为依次增长的:0、1、2、3、4,集群中唯一 id
broker.id=0
#数据存储的⽬录
log.dirs=/opt/apps/data/kafkadata
#指定 zk 集群地址,注意这里加了一个目录
zookeeper.connect=hadoop1:2181,hadoop2:2181,hadoop3:2181/kafka
其他的配置内容说明如下:
#broker 的全局唯一编号,不能重复,只能是数字。
broker.id=0
#处理网络请求的线程数量
num.network.threads=3
#用来处理磁盘 IO 的线程数量
num.io.threads=8
#发送套接字的缓冲区大小
socket.send.buffer.bytes=102400
#接收套接字的缓冲区大小
socket.receive.buffer.bytes=102400
#请求套接字的缓冲区大小
socket.request.max.bytes=104857600
#kafka 运行日志(数据)存放的路径,路径不需要提前创建,kafka 自动帮你创建,可以
配置多个磁盘路径,路径与路径之间可以用","分隔
log.dirs=/opt/module/kafka/datas
#topic 在当前 broker 上的分区个数
num.partitions=1
#用来恢复和清理 data 下数据的线程数量
num.recovery.threads.per.data.dir=1
# 每个 topic 创建时的副本数,默认时 1 个副本
offsets.topic.replication.factor=1
#segment 文件保留的最长时间,超时将被删除
log.retention.hours=168
#每个 segment 文件的大小,默认最大 1G
log.segment.bytes=1073741824
# 检查过期数据的时间,默认 5 分钟检查一次是否数据过期
log.retention.check.interval.ms=300000
#配置连接 Zookeeper 集群地址(在 zk 根目录下创建/kafka,方便管理)
zookeeper.connect=hadoop102:2181,hadoop103:2181,hadoop104:2181/ka
fka
- 配置环境变量
vi /etc/profile
export KAFKA_HOME=/opt/apps/kafka_2.11-2.2.2
export PATH=$PATH:$KAFKA_HOME/bin
source /etc/profile
- 在不同的节点上重复上面的步骤,但是需要修改配置文件
server.properties
中的broker.id
。
# broker.id标记是哪个kafka节点,不能重复
broker.id=1
broker.id=2
- 启停集群
# 启动集群
bin/kafka-server-start.sh -daemon /opt/apps/kafka_2.11-2.2.2/config/server.properties
# 停止集群
bin/kafka-server-stop.sh stop
kafka命令行工具
1. 主题命令行操作
- 查看操作主题命令参数
kafka-topics.sh
- 查看当前服务器中的所有
topic
bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --list
- 创建
first topic
bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --create --partitions 1 --replication-factor 3 --topic first
选项说明:
--topic 定义 topic 名
--replication-factor 定义副本数
--partitions 定义分区数
- 查看
first
主题的详情
bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --describe --topic first
- 修改分区数(注意:分区数只能增加,不能减少)
bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --alter --topic first --partitions 3
- 删除 topic
bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --delete --topic first
2. 生产者命令行操作
- 查看操作生产者命令参数
kafka-console-producer.sh
- 发送消息
bin/kafka-console-producer.sh --bootstrap-server hadoop102:9092 --topic first
>hello world
>xuyang hello
3. 消费者命令行操作
- 查看操作消费者命令参数
kafka-console-consumer.sh
- 消费消息
bin/kafka-console-consumer.sh --bootstrap-server hadoop102:9092 --topic first
- 把主题中所有的数据都读取出来(包括历史数据)。
bin/kafka-console-consumer.sh --bootstrap-server hadoop102:9092 --from-beginning --topic first
总结
本文分享了平时我在工作使用kafka以及zookeeper常用的一些工具,同时分享了kafka集群的部署,值得一提的是kafka部署配置zookeeper地址的时候,我们可以添加一个路径,比如hadoop:2181/kafka
这种方式,那么kafka的元数据信息都会放到/kafka
这个目录下,以防混淆。
欢迎关注个人公众号【JAVA旭阳】交流学习!
用好kafka,你不得不知的那些工具的更多相关文章
- Kafka工具教程 - Apache Kafka中的2个重要工具
1.目标 - 卡夫卡工具 在我们上一期的Kafka教程中,我们讨论了Kafka Workflow.今天,我们将讨论Kafka Tool.首先,我们将看到卡夫卡的意义.此外,我们将了解两个Kafka工具 ...
- kafka集群图形界面管理工具kafka-manager
应用说明: 图形web相对于命令行很多时候显得更直观,kafka-manager是yahoo开源出来的项目,web界面还挺好用,安装更是很便捷. 安装环境: 具体安装: 1. 下载已经编译好的zip包 ...
- 优秀的Kafka GUI客户端、可视化管理工具、监控工具
想要查看Topic里的消息却找不到软件,想要查看或更新Broker.Topic配置,想要监控Broker服务器状态?试试下面的Kafka GUI工具--Kafka Assistant 官网地址:htt ...
- 你所不知道的黑客工具之 EK 篇
EK(Exploit kits)是指一套利用恶意软件感染用户电脑发起攻击的黑客工具,时下最著名的有 Angler EK.Fiesta EK.Hanjuan EK.Nuclear EK.Neutrino ...
- kafka学习之-雅虎开源管理工具Kafka Manager
http://blog.csdn.net/lizhitao/article/details/44523663
- 十个WEB开发人员不可不知的HTML5工具
Initializr 这是一个HTML5模板创建工具,帮助你得到持续的最新的HTML5样板文件. XRAY XRAY目前支持Safari, Firefox和IE浏览器,XRAY使用了CSS3的多个酷炫 ...
- Kafka 可视化监控和管理 UI工具评估
以下内容,来自网络资料整理和个人安装使用结果.后续会持续更新
- kafka性能参数和压力测试揭秘
转自:http://blog.csdn.net/stark_summer/article/details/50203133 上一篇文章介绍了Kafka在设计上是如何来保证高时效.大吞吐量的,主要的内容 ...
- Kafka设计解析(五)- Kafka性能测试方法及Benchmark报告
本文转发自Jason’s Blog,原文链接 http://www.jasongj.com/2015/12/31/KafkaColumn5_kafka_benchmark 摘要 本文主要介绍了如何利用 ...
- Kafka设计解析(一)- Kafka背景及架构介绍
本文转发自Jason’s Blog,原文链接 http://www.jasongj.com/2015/01/02/Kafka深度解析 背景介绍 Kafka简介 Kafka是一种分布式的,基于发布/订阅 ...
随机推荐
- 使用Git进行版本控制,不同的项目怎么设置不同的提交用户名和邮箱呢?
1.全局设置用户名和邮箱 因为平时除了开发公司项目还会写自己的项目或者去维护开源项目,一般情况下,公司会要求提交代码时使用自己的真名或者拼音和公司邮箱,以前就只会设置全局用户名或邮箱如下 git co ...
- Python学习笔记--第二阶段啦
初识对象 示例: 类的成员方法 上图中的self必须填写!!! 示例: 类和对象 有c和c++语言基础的话,就会发现其实是一样的道理,只是实现代码有差异 构造方法(init) 示例: 注意: 其他内置 ...
- smart rtmpd web 接口说明
smart rtmpd web 接口分为下面几类 分类名称 功能描述 live 这个就是平常我们的直播播放接口 rec 这个就是平常我们的录像回放接口 vod 这个就是我们点播接口,支持字 ...
- 处理尚不存在的 DOM 节点
探索 MutationObserver API 与传统轮询等待最终被创建的节点方法相比的优劣. 有时候,您需要操作尚未存在的 DOM 的某个部分. 出现这种需求的原因有很多,但你最常看到的是在处理第三 ...
- do { } while(){ }
1 var j=10; 2 do{ 3 console.log("十八岁以下禁止观看") 4 console.log(j); 5 j++; //j为18之前都不执行while 6 ...
- Alchemy Nft黑客松任务(第一周)
Alchemy是什么项目? 2019年12月,Alchemy完成1500万美元A轮融资,资方为Pantera Capital,斯坦福大学,Coinbase,三星等. 2021年4月,Alchemy以5 ...
- vue中实现video的动态src绑定
Vue中实现video的动态src 试了网上的$refs方法发现并没有用 解决方案: 通过require方法 <div> <video :src='url' @click= ...
- 如何在现有项目中使用`Masa MiniApi`?
首先我们现有创建一个空的WebApi的项目模板,这个项目模板和MasaFramework本身没有任何关联,我们本博客只是使用的MasaFramework的MiniApi的包 创建Asp.NET Cor ...
- Yapi及Swgger使用+注解
1.Yapi 1.1 介绍 YApi 是高效.易用.功能强大的 api 管理平台,旨在为开发.产品.测试人员提供更优雅的接口管理服务.可以帮助开发者轻松创建.发布.维护 API,YApi 还为用户提供 ...
- Centos7 开机时遇到initramfs-xxx.img not found错误导致虚拟机无法开启问题处理
1.背景 一台运行在Esxi上面的VM重启后报initramfs-xxx.img not found错误. 按任意键后出现以下错误. 之前在运维Centos7的时候解决过Kernel panic - ...