使用机械磁盘完全能够胜任Kafka线上环境。 2.3 磁盘容量 集群到底需要多大? Kafka需要将消息保存在磁盘上,这些消息默认会被保存一段时间然后自动被删除。 虽然这段时间是可以配置的,但你应该如何结合自身业务场景和存储需求来规划Kafka集群的存储容量呢? 假设有个业务 每天需要向Kafka集群发送1亿条消息 每条消息保存两份以防止数据丢失 消息默认保存两周时间 现在假设消息的平均大小是1KB,那么你能说出你的Kafka集群需要为这个业务预留多少磁盘空间吗 计算: 每天1亿条1KB的消息,存两份 1亿 * 1KB * 2 / 1000 / 1000 = 200GB 一般Kafka集群除消息数据还存其他类型数据,比如索引数据 再为其预留10%磁盘空间,因此总的存储容量就是 总结 部署Kafka环境,一开始就要思考好实际场景下业务所需的集群环境,不能仅从单个维度上进行评估。 参考 Linux内核模型架构 Kafka核心技术与实战
综上: 追求性价比的公司可不搭建RAID,使用普通磁盘组成存储空间即可 机械磁盘完全能够胜任 2.3 评估磁盘容量 集群到底需要多大存储空间? Kafka需将消息保存在磁盘,这些消息默认会被保存一段时间,然后自动被删除。 虽然这段时间可配置,但应如何结合自身业务场景和存储需求来规划Kafka集群的存储容量? 假设业务 每天向Kafka集群发送1亿条消息 每条消息保存两份,以防止数据丢失 消息默认保存两周时间 假设消息平均1KB,那Kafka集群需要为这个业务预留多少磁盘空间? 每天1亿条1KB消息,存两份 1亿 * 1KB * 2 / 1000 / 1000 = 200GB Kafka集群除消息数据,还存其他类型数据,如索引数据 再为其预留10%磁盘空间,总存储容量就是 4 总结 部署Kafka环境,一开始就要思考好实际场景下业务所需的集群环境,不能仅从单个维度上进行评估。 参考 Linux内核模型架构 Kafka核心技术与实战
概述 集群安装或者单机安装都可以,这里介绍集群安装。Kafka本身安装包也自带了zookeeper,也可以使用其自带的zookeeper。 安装环境 3台centos7虚拟机:10.15.21.62 10.10.182.168 10.10.182.169 kafka_2.10-0.10.2.0 zookeeper-3.4.9 jdk http://mirror.bit.edu.cn/apache/kafka/0.10.2.0/kafka_2.10-0.10.2.0.tgz Zookeeper集群搭建 修改配置文件 cd / /zkServer.sh status Kafka集群搭建 修改配置文件 cd /opt/kafka/kafka_2.10-0.10.2.0/config/ vi server.config # The 集群并测试 在集群每个主机内执行: cd /opt/kafka/kafka_2.10-0.10.2.0/bin/ .
一、kafka简述 1、简介 kafka是一个高吞吐的分布式消息队列系统。特点是生产者消费者模式,先进先出(FIFO)保证顺序,自己不丢数据,默认每隔7天清理数据。 2、集群介绍 (1)Kafka架构是由producer(消息生产者)、consumer(消息消费者)、borker(kafka集群的server,负责处理消息读、写请求,存储消息,在kafka cluster node02、node03对应目录下 scp -r zookeeper-3.4.6 node02:`pwd` scp -r zookeeper-3.4.6 node03:`pwd` (4)启动zookeeper集群 zookeeper.connect指定连接的zookeeper集群地址 其他参数保持默认即可,也可自己根据情况修改 ############################# Server Basics (4)启动kafka集群 kafka集群启动前要启动zookeeper集群,若zookeeper集群没启动,首先启动 在/opt/bigdata下 ,三个节点分别执行如下命令,启动kafka集群 .
---- 概述 对于kafka来说,一个单独的broker意味着kafka集群中只有一个节点。要想增加kafka集群中的节点数量,只需要多启动几个broker实例即可。 单个节点的安装: Kafka-初体验Kafka(02)-Centos7下搭建单节点kafka_2.11‐1.1.0 这里我们来搭建个3个节点的kafka集群来体验下吧 ---- 部署信息 192.168.18.130 ,zk也是要搭建集群的,这里演示用的话,用单个节点的zk先。 还有一篇博主写的 zk也是高可用的,可以参考下,写的很不错 ZooKeeper+Kafka 高可用集群搭建 ---- 验证 启动zookeeper 和 3个 kafka 后,我们创建一个新的topic, 现在我们向新建的 artisan-replicated-topic 中发送一些message,kafka集群可以加上所有kafka节点: [root@artisan bin]# .
好了,本篇开始部署kafka集群 Zookeeper集群搭建 注:Kafka集群是把状态保存在Zookeeper中的,首先要搭建Zookeeper集群(也可以用kafka自带的ZK,但不推荐) 1、软件环境 下面开始kafka集群搭建 Kafka集群搭建 1、软件环境 1、linux一台或多台,大于等于2 2、已经搭建好的zookeeper集群 3、软件版本kafka_2.12-0.10.2.1.tgz 2 Kafka内带的zk集群来启动,但是建议使用独立的zk集群 -rw-r--r-- 1 root root 906 Apr 22 2017 connect-console-sink.properties 集群并测试 1、启动服务 #从后台启动Kafka集群(3台都需要启动) kafka-server-start.sh -daemon /opt/kafka/kafka_2.12-0.10.2.1/config kafka集群搭建完毕 5、其他说明标注 5.1、日志说明 默认kafka的日志是保存在/opt/kafka/kafka_2.12-0.10.2.1/logs目录下的,这里说几个需要注意的日志 server.log
如下图所示 三台CentOS7的机器来搭建zookeeper+kafka集群 192.168.31.221 node1 node1.walkingcloud.cn 192.168.31.222 node2 ,配置kakfa 1、node1上解压kafka安装包 cd /opt tar -zxf kafka_2.13-2.5.0.tgz mv kafka_2.13-2.5.0 kafka cd kafka node2和node3上 cd /opt/ scp -r kafka root@node2:/opt/ scp -r kafka root@node3:/opt/ 然后再去node2,node3上手动修改 scp /etc/profile root@node3:/etc 在节点node2,node3上source /etc/profile 6、三个节点启动kafka kafka-server-start.sh /opt/kafka/config/server.properties 先前台的方式启动kakfa-server,后期改用后台或者服务脚本的方式启动kafka 7、再开其它会话窗口测试topic
一、zookeeper集群搭建 略,请参考其他文档,这里不再赘述。 二、下载kafka 从kafka官网下载kafka_2.11-0.11.0.0.tgz,并解压。 tar -zxvf kafka_2.11-0.11.0.0 三、kafka配置修改 这里我们仅以两台kafka实例做集群。 四、kafka集群启动 nohup ${kafka_home}/bin/kafka-server-start.sh ${kafka_home}/config/server.properties & 将两台机器的kafka启动,集群搭建完毕。 集群搭建就是这么简单。
看上面一张图,要想做kafka集群,有几个关键点 1. 关于zookeeper集群的搭建,请参考链接: https://www.cnblogs.com/xiao987334176/p/10103619.html 本文使用5个kafka节点,构造kafka集群 集群 在启动kafka之前,请确保已经启动了3台zk服务器。 root@jqb-node128:~# docker exec -it 3543cdda7e68 /bin/bash root@3543cdda7e68:/# cat /etc/hosts127.0.0.1 =3 删除docker docker rm 3543cdda7e68 -f 在其他容器,再次查看topics root@529b0b031949:/kafka_2.12-2.1.0# bin/kafka-topics.sh
集群规划Kafka 是一个开源的分布式消息队列系统,主要用于处理和传输大量的数据流。通俗来说,它就像一个“邮局”或者“快递公司”,负责在不同的应用程序之间发送和接收信息。 前提工作我们采用kafka3.3版本(kafka_2.12-3.3.1.tgz)hadoop102下解压缩cd /opt/module# 解压tar -zxvf kafka_2.12-3.3.1.tgz # 重命名mv kafka_2.12-3.3.1/ kafka配置环境变量# 编辑配置文件vim /etc/profile# KAFKA_HOMEexport KAFKA_HOME=/opt/module ,路径不需要提前创建,kafka自动帮你创建,可以配置多个磁盘路径,路径与路径之间可以用","分隔log.dirs=/opt/module/kafka/datas#配置连接Zookeeper集群地址(在 zk根目录下创建/kafka,方便管理)zookeeper.connect=hadoop102:2181,hadoop103:2181,hadoop104:2181/kafka分发kafka至hadoop103
kafka1 172.17.6.15 kafka2 172.17.6.16 kafka3 二、部署zookeeper集群1.下载安装tar -zxf zookeeper-3.4.14 /system/zookeeper.service kafka2:/usr/lib/systemd/system/7.启动zookeeper #在每个节点操作systemctl daemon-reload systemctl start zookeeper systemctl enable zookeeper 三、部署kafka集群这里生产环境使用kafka_2.11-2.2.0 来进行部署1.下载安装 20 --replication-factor 3 --config x=y 注 :此命令是在kafka部署目录中操作参数 详解 :--bootstrap-server : kafka集群地址--create :master 参数说明: KAFKA_CLUSTERS_0_NAME=kafka1 表示 第一个集群。
下载Kafka 1.下载Kafka:http://mirror.bit.edu.cn/apache/kafka/2.3.0/kafka_2.12-2.3.0.tgz 2.解压后复制Kafka文件夹,分别命名为 kafka1、kafka2、kafka3 修改配置文件 修改config文件夹下的server.properties ,其中的brokerId是惟一的,集群中kafka服务器配置的brokerId不能相同 集群的服务器端口号, /kafka是在zookeeper挂载的文件夹,要自己创建zookeeper客户端命令 create /kafka Kafka操作 创建主题 kafka-topics.bat :设置主题名字 查看主题状态 kafka-topics.bat –describe –zookeeper 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183/kafka 生产者生产消息 kafka-console-producer.bat –broker-list 127.0.0.1:9092 –topic test 消费者接受消息 kafka-console-consumer.bat
---- 环境准备 服务器集群 我用的CentOS-6.7版本的3个虚拟机,主机名为hadoop01、hadoop02、hadoop03,这3台虚拟机既是zookeeper集群,又是kafka集群(但在生产环境中 =3 log.dirs指定的kafka中的数据的存放位置,默认的tmp目录会定期清空,所以需要修改,而且指定的目录需要在启动kafka集群之前创建好 zookeeper.connect如果不指定,将使用 ~]$ zkServer.sh start [hadoop@hadoop02 ~]$ zkServer.sh start [hadoop@hadoop03 ~]$ zkServer.sh start 7. 测试kafka集群 (1) 在任意节点上创建"test01"这个topic [hadoop@hadoop01 kafka_2.11-0.10.2.1]$ bin/kafka-topics.sh \ -- Kafka集群搭建成功!
基于docker-compose的kafka集群搭建 使用docker-compose搭建kafka集群,解析一些参数含义及列出搭建过程的一些坑。 false containerd: Version: v1.6.4 GitCommit: 212e8b6fa2f44b9c21b2798135fc6fb7c53efc16 home/doper curl --unix-socket /var/run/docker.sock http://localhost/containers/json [{"Id":"f2cce65f7b4752396843 答案是有的,在Dockerfile其已经安装了docker 2.3. kafka_manager 用来管理kafka集群的,在容器启动后可以通过localhost:9000访问可视化界面。 注意创建时由于上面docker-compose.yml中已经设置将所有的kafka集群信息放在/kafka目录下,所以这里也要加上/kafka后缀 但这里有一个坑,就是在创建集群后会遇到如下错误 Yikes
1、前提条件 1、部署Kafka集群搭建需要服务器至少3台,奇数台 2、Kafka的安装需要java环境,jdk1.8 3、Kafka安装包版本:kafka _2.11-0.10.0.1.tar.gz 4、假设3台服务器分别为:kafka1、kafka2、kafka3 2、Zookeeper集群搭建 1、将安装包kafka_2.11 7、执行启动zookeeper命令: nohup /opt/kafka_2.11-0.10.0.1/bin/zookeeper-server-start.sh /opt/kafka_2.11 .sd.cn:3181,kafka2.sd.cn:3181,kafka3.sd.cn:3181 #zookeeper连接地址,多个以逗号隔开 9、启动kafka集群: &>> /opt/kafka_2.11-0.10.0.1/kafka.log & 10、测试Kafka集群 1、创建topic:test /opt/
一、Kafka集群搭建 1、环境构建 安装kafka集群之前,确保zookeeper服务已经正常运行,这里3台zookeeper准备工作都已完成,三台主机分别为:192.168.3.220,192.168.3.221,192.168.3.222 /kafka/config vim server.properties 修改配置文件的以下属性 ## 强调这个ID在集群中必须是唯一否则会出现ID冲突问题 broker.id=0 ## 配置kafka :/usr/local/ 并修改上面配置文件的属性 broker.id和listeners就OK 3、启动kafka集群 /usr/local/kafka/bin/kafka-server-start.sh /kafka/config/server.properties 4、测试kafka集群 4.1、创建和查看消息主题 连接zookeeper,创建一个名为test-topic的topic sh kafka-topics.sh /kafka-server-start.sh: Permission denied 在执行启动启动kafka集群的时候,报错没有权限操作该文件,直接通过 chmod 777 zookeeper-server-start.sh
一.环境准备 当前环境:centos7.3三台 软件版本:kafka_2.12 部署目录:/usr/local/kafka 启动端口:9092 配置文件:/usr/local/kafka/config/ server.properties yum依赖(3台同时操作) yum install java-1.8.0-openjdk 需要部署zookeeper集群 二.安装 1.下载kafka包(3台节点都执行 ) wget http://mirror.bit.edu.cn/apache/kafka/0.10.2.1/kafka_2.12-0.10.2.1.tgz 2.解压并移动,然后创建日志目录(3台节点都执行 ) tar zxvf kafka_2.12-0.10.2.1.tgz mv kafka_2.12-0.10.2.1 /usr/local/kafka mkdir /var/log/kafka 3.修改配置文件 /bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties 检查 netstat -unltp | grep
kafka集群需要jdk和zookeeper环境 可参考: vmware15安装centos7 Zookeeper集群搭建 下载kafka wget https://mirrors.bfsu.edu.cn /apache/kafka/2.8.0/kafka_2.13-2.8.0.tgz 根据自己的习惯创建一个路径用来存放kafka程序 我选择的是/usr/tools/ 然后执行解压命令 tar -zxvf kafka_2.13-2.8.0.tgz 配置kafka 进入到config路径 修改server.properties配置文件 vim /usr/tools/kafka_2.13-2.8.0/config _2.13-2.8.0/kafka-logs #默认topic分区的数量 num.partitions=3 #zookeeper集群的地址和端口,多个地址和端口之间用逗号相连 zookeeper.connect 搭建并启动成功 ps: 可以使用nohup命令启动kafka,这样即使关闭窗口也能保证kafka正常运行 nohup /usr/tools/kafka_2.13-2.8.0/bin/kafka-server-start.sh
#kafka export KAFKA_HOME=/usr/local/apps/kafka_2.12-2.5.0 export PATH=$PATH:$KAFKA_HOME/bin source / num.recovery.threads.per.data.dir=1 #segment文件保留的最长时间,超时将被删除 log.retention.hours=168 #配置连接Zookeeper集群地址 # 需要求改成自己的 zookeeper.connect=Carlota1:2181,Carlota2:2181,Carlota3:2181 4、启动集群 [root@carlota1]$ zkServer.sh -daemon $KAFKA_HOME/config/server.properties [root@carlota1]$ kafka-server-start.sh -daemon $KAFKA_HOME /config/server.properties [root@carlota1]$ kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties
基础架构 特点 高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒 可扩展性:kafka集群支持热扩展 持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失 容错性 :允许集群中节点失败(若副本数量为n,则允许n-1个节点失败) 高并发:支持数千个客户端同时读写 集群部署 服务器IP地址 节点名称 192.168.124.171 kafka1 192.168.124.172 kafka2 192.168.124.173 kafka3 在3.5版本发布后,Zookeeper已被标记为弃用并推荐使用KRaft模式部署kakfa集群,但是官方手册也提到了KRaft中仍有一小部分功能有待实现 ,所以个人还是推荐在生产环境中使用zookeeper模式部署kafka集群。 data clientPort=2181 dataLogDir=/data/zookeeper/log server.1=192.168.124.171:2888:3888 #添加集群节点