zookeeper&kafka虚拟机伪集群搭建实验

环境:

CentOS 5.5 Server版 32位
虚拟机内存4096M(最开始没注意,默认1024M,结果开启多个kafka时,就不断GC,导致应用无法使用)
CPU 1*1
硬盘 20G

1.下载软件

zookeeper: http://www.apache.org/dyn/closer.cgi/zookeeper/
wget http://apache.fayea.com/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz

kafka:http://kafka.apache.org/downloads
wget http://mirrors.hust.edu.cn/apache/kafka/0.10.1.1/kafka_2.11-0.10.1.1.tgz

JDK:jdk-8u121-linux-i586.rpm
wget:http://download.oracle.com/otn-pub/java/jdk/8u121-b13/e9e7ea248e2c4826b92b3f075a80e441/jdk-8u121-linux-i586.rpm?AuthParam=1484725145_218b02b9ed050daba89d99daced369e0

2.创建用户

groupadd dev
useradd -G dev zookeper
passwd zookeeper
useradd -G dev afka
passwd kafka

3.安装软件

JDK
rpm -install jdk-8u121-linux-i586.rpm

zookeeper
tar -xvf zookeeper-3.4.9.tar.gz

kafka
tar -xvf kafka_2.11-0.10.1.1.tgz

4.更新配置

zookeeper
cd zookeeper/conf/
mv zoo_sample.cfg zoo.cfg
vi zoo.cfg
修改如下行
dataDir=/home/zookeeper/data/zookeeper/z01
clientPort=2181 #因为是部署在同一个虚拟机上的伪集群,所以端口不能冲突,多个节点分别修改为不同端口
#localhost可以使用,最好修改为虚拟机所分配的IP。前一个端口是多个节点之间相互通讯用,后一个端口是用于leader选举通讯。由于是伪集群,所以要避免端口冲突。server.x,x表示当前服务节点
server.1=localhost:2280:2281
server.2=localhost:2282:2283
server.3=localhost:2284:2285
拷贝zookeeper分别到三个不同目录,形成三个节点的伪集群
进入dataDir所配置的目录,心中myid文件,文件内容分别为1和2和3,即标识当前服务是哪个节点

kafka
cd kafka/config
#需要几个broker,就复制几份
cp service.properties service-1.properties
cp service.properties service-2.properties
cp service.properties service-3.properties
cp service.properties service-4.properties
修改service-x.properties
broker.id=1 #按照顺序分别是1/2/3/4
listeners=PLAINTEXT://192.168.88.129:9091 #修改为虚拟机所分配的IP,由于是伪集群,端口需要调整,避免冲突
log.dirs=/home/kafka/data/k01/logs #由于是伪集群,避免目录冲突
zookeeper.connect=localhost:2181 #zookeeper的地址和端口,根据前面zookeeper的配置进行调整(三个节点任意一个即可)由于伪集群,zookeeper和kafla在同一个虚拟机上,所以可以使用localhost,建议修改为虚拟机所分配的IP

5.服务器console验证

#启动zookeeper 进入zookeeper三个节点的bin目录
cd /home/zookeeper/app/zookeeper/z01/bin
./zkServer.sh start
cd /home/zookeeper/app/zookeeper/z02/bin
./zkServer.sh start
cd /home/zookeeper/app/zookeeper/z03/bin
./zkServer.sh start

#创建topics 5个分区 每个分区分别复制到3个broker(不能大于broker的总数量) 进入kafka/bin zookeeper的地址任选一个
./kafka-topics.sh --create --zookeeper 192.168.88.129:2181 --replication-factor 3 --partitions 5 --topic test

#查看topic信息 进入kafka/bin zookeeper的地址任选一个
./kafka-topics.sh --describe --zookeeper 192.168.88.129:2181 --topic test

#列出topic zookeeper的地址任选一个
./kafka-topics.sh --list --zookeeper 192.168.88.129:2181

#生产者 kafka的地址任选一个
./kafka-console-producer.sh --broker-list 192.168.88.129:9091 --topic test

#消费者 kafka的地址任选一个 bootstrap-server意味这个地址是用于发现所有broker地址的,并不表示仅针对这个broker
./kafka-console-consumer.sh --bootstrap-server 192.168.88.129:9091 --topic test --from-beginning

6.java客户端访问

pom.xml文件内容(切记增加logback/log4j,日志对问题的发现很有帮助)

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.study</groupId>
<artifactId>kafka-client</artifactId>
<version>0.1.0</version>

<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>0.10.1.0</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.1.8</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.8</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.22</version>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
</project>

Producer代码示例

public static void main(String[] args) {
Properties props = new Properties();
props.put("bootstrap.servers", "192.168.88.129:9092");//用于发现其他broker地址的初始地址
props.put("acks", "all");//表示需要等待所有follower的确认后,消息才commit
props.put("retries", 0);//表示不重试
props.put("batch.size", 16384);
props.put("linger.ms", 100);
props.put("buffer.memory", 33554432);
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");

String topic = "test";
Producer<String, String> producer = new KafkaProducer<String,String>(props);
for(int i = 0; i < 10; i++){
ProducerRecord<String, String> rec = new ProducerRecord<String, String>(topic, "Key88&:"+i, "Value88&:"+i);//key用来计算partition,默认是用key.hash后计算出来
System.out.println(rec);
producer.send(rec, new Callback(){
@Override
public void onCompletion(RecordMetadata metadata, Exception exception) {
if(exception != null){
exception.printStackTrace();
}
System.out.println("发送到服务器 -----Offset: " + metadata.offset() + "-----Topic:" + metadata.topic() + "-----partition:" + metadata.partition());
}

});
}
producer.close();
}

Consumer代码示例

public static void main(String[] args) {
Properties props = new Properties();
props.put("bootstrap.servers", "192.168.88.129:9091");//用于发现其他broker地址的初始地址
props.put("group.id", "consumer-for-test");//consumer的分组
props.put("enable.auto.commit", "true");//自动提交
props.put("auto.commit.interval.ms", "1000");
props.put("session.timeout.ms", "10000");//默认心跳是2000,如果要设置session.timeout.ms,则务必>2000,否则不设置
props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
KafkaConsumer<String, String> consumer = new KafkaConsumer<String,String>(props);
consumer.subscribe(Arrays.asList("test"));//注册哪些topic
while (true) {
ConsumerRecords<String, String> records = consumer.poll(100);
for (ConsumerRecord<String, String> record : records)
System.out.printf("offset = %d, key = %s, value = %s%n", record.offset(), record.key(), record.value());
}
}

实验过程中kill掉部分kafka节点,当某个partition出现没有leader时,producer和consumer均无法正常响应,随后手工启动部分kafka节点,使得所有partition均有leader后,producer和consumer再次可正常响应

切记防火墙打开相应端口

#开启防火墙端口
/sbin/iptables -I INPUT -p tcp --dport 2181 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 2182 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 2183 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 9091 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 9092 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 9093 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 9094 -j ACCEPT

/etc/rc.d/init.d/iptables save
/etc/init.d/iptables restart
#查看防火墙
/etc/init.d/iptables status

Producer和Consumer的其他示例,参考
http://kafka.apache.org/0101/javadoc/index.html?org/apache/kafka/streams/KafkaStreams.html
http://kafka.apache.org/0101/javadoc/index.html?org/apache/kafka/clients/consumer/KafkaConsumer.html
STM32H743 LAN8720网口配置避坑指南:用CubeMX v6.5.0快速搞定LWIP+FreeRTOS 本文详细介绍了使用CubeMX v6.5.0配置STM32H743与LAN8720网口的LWIP+FreeRTOS方案,涵盖硬件连接、时钟配置、ETH外设初始化及LWIP协议栈调优等关键步骤。特别针对常见陷阱提供解决方案,帮助开发者快速实现稳定网络通信,适用于嵌入式网络开发场景。 阅读详情

相关推荐

告别理论!手把手教你用Vivado 2020.2为ZYNQ PL端打造一个AXI4-Full读写DDR的IP核

本文详细介绍了如何使用Vivado 2020.2为ZYNQ PL端创建AXI4-Full主控IP核,实现高效读写DDR内存的实战指南。通过环境配置、IP核创建、系统集成到软件调试的全流程讲解,帮助开发者快速掌握AXI4-Full协议在ZYNQ平台上的应用,提升PL与PS协同工作的数据传输效率。

weixin_30300225的博客 467

kafka java示例

我使用的kafka版本是:0.7.2 jdk版本是:1.6.0_20 http://kafka.apache.org/07/quickstart.html官方给的示例并不是很完整,以下代码是经过我补充的并且编译后能运行的。 Producer Code [java] view plaincopy import java

mark's technic world 4万+

来自工业界的知识库 RAG 服务(二),RagFlow 源码全流程深度解析

前面介绍过有道 QAnything 源码解析,通过深入了解工业界的知识库 RAG 服务,得到了不少调优 RAG 服务的新想法。因此本次趁热打铁,额外花费一点时间,深入研究了另一个火热的开源 RAG 服务RagFlow的完整实现流程,希望同样有所收获。首先依旧可以先从框架图入手,与常规的 RAG 架构进行一些比较可以看到右侧知识库被明显放大,同时最右侧详细介绍了文件解析的各种手段,比如OCR等,这些在常规的 RAG 中可能会作为一个不起眼的。

易迟的专栏 2万+

Linux下搭建kafka和zk伪分布式集群【附详细步骤】

前言 Kafka使用zk的分布式协调服务,将生产者,消费者,消息储存(broker,用于存储信息,消息读写等)结合在一起。同时借助zk,kafka能够将生产者,消费者和broker在内的所有组件在无状态的条件下建立起生产者和消费者的订阅关系,实现生产者的负载均衡。kafka搭载zk,通常有3种模式: 单机模式,只安装部署一个server。 伪分布式集群模式,一台机器分别安装部署3个zk和ka...

程序大视界 1929

Fiddler Everywhere保姆级教程:10分钟搞定手机HTTPS抓包(附证书配置避坑指南)

本文提供Fiddler Everywhere移动端HTTPS抓包的保姆级教程,涵盖环境配置、代理设置、证书安装及常见问题排查。重点解析如何正确安装并信任Fiddler根证书以解密HTTPS流量,帮助开发者快速搭建抓包环境,高效分析应用网络行为,提升调试效率。

git9versioner的博客 705

【Linux系统】Kdenlive软件多机位同音频视频同步化处理

Kdenlive简介 官网链接:https://kdenlive.org/zh/ 命令行安装: apt-get install kdenlive Kdenlive能够进行多轨道视频编辑,可以使用和调整多条音频、视频轨道。每条轨道可以按需进行单独锁定、静音。 Kdenlive多机位同音频视频同步化处理步骤 1. 新建Kdenlive文件 选择<文件>-<新建>,建立新的kdenlive文件,初始设置为<视频轨:2>,<音频轨:2>。 视.

qq_31550269的博客 1884

kafka学习-zookeeper单机伪集群搭建(草略记录,文件上传下载即用)

资源整合包: https://download.youkuaiyun.com/download/weixin_37352094/10856567 注:本文为单机集群 1.下载zookeeper 点击直接    下载地址:http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.5.3-beta/zookeeper-3.5.3-beta.tar.gz ...

狗蛋儿_312的博客 570

STM32实战:ADXL345传感器驱动与数据采集全解析(IIC/SPI双模式适配)

本文详细解析了STM32驱动ADXL345传感器的全流程,包括IIC和SPI双模式适配、硬件连接、寄存器配置及数据采集处理。通过实战代码示例和常见问题排查指南,帮助开发者快速实现高精度加速度数据采集,适用于运动检测、姿态识别等多种嵌入式应用场景。

weixin_29171087的博客 313

(一)离线安装部署kafka(zookeeper、kafka集群与伪集群)

目录 写在前面 1.zookeeper集群安装 2.zookeeper伪分布式安装(在同一台机器安装不同实例) 3.kafka集群安装 4.kafka伪分布式安装 5.Java API 6.关于kafka相关文章 写在前面 (1)本例使用三台服务器(VMware虚拟机搭建,centos7),已在hosts中配置主机与IP映射 主机 IP 部署内容 my108 ...

不知不觉地…… 2352

4. PCIe 接口时序

在上一篇中,大致介绍IPcore接口。总的来说接口如下图数据的接收和发送通过transmitTLPinterface和ReceiveTLPinterface。收发数据的时序也只是描述这几个接口的关系。从手册上截取PCIex1的接口时序。

jjinl的专栏 6122

一个人干完整个运营团队!浙大开源「Easel」全链路拆解:从热点发现到自动发布,一个 Agent 直接做出来

一个人干完整个运营团队?浙大 REAL 实验室开源的 Easel,把 OpenClaw Agent、账号画像、114 个内容技能和真实媒体工具接在一起:从热点发现、选题策划、图文视频创作,到七平台适配发布、数据归因复盘,全链路一个 Agent 闭环完成,产物按项目归档。本文完整拆解其五层工作流、四层 Prompt Stack 架构、画像内联机制、Skill 三层加载与产物契约,附安装部署、.env 关键配置、Embedding 避坑、已知问题修复等实战干货,全程无虚构、可复现。

program哲学 286

Kafka快速入门(Zookeeper伪集群 / Kafka伪集群搭建 / Kafka基本操作-topic-生产者-消费者)

文章目录Kafka 入门ZooKeeper伪集群配置文件启动集群Kafka伪集群配置文件启动集群Kafka基本操作Topic操作生产者 / 消费者 Kafka 入门 Kafka 是一个分布式的基于发布/订阅的消息队列,常用于: 异步处理:先将任务放入队列,返回消息,之后在慢慢处理 流量削峰(秒杀):不用将所有的访问都到达数据库,只需要最前面的几条数据即可 解耦:降低耦合度,互不影响 两种模式: 点对点模式:生产者消费者一一对应 发布/订阅模式:一个生产者可以有多个消费者 多个Broker组成K

ccccrj博客 631

linux v3h平台开发系列详解(GMSL摄像头篇):1.11 解串器MIPI 1.5G高速率特殊deskew配置

解串器max96712 deskew配置

xian18809311584的博客 1775

kafka搭建伪集群

首先需要搭建zookeeper环境,详见: https://blog.youkuaiyun.com/enthan809882/article/details/102911688 下载并解压kafka 1.0.0版本: wget http://archive.apache.org/dist/kafka/1.0.0/kafka_2.11-1.0.0.tgz tar -zxvf kafka_2.11-1.0.0.t...

enthan809882的博客 625

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

kafka自带zookeeper安装伪集群操作

kafka自带zookeeper安装伪集群操作 一、准备工作 1 、默认已经安装好JDK 2、提前下载一个准备好的安装包:kafka_2.13-2.5.0.tgz 3、 手动下载 下载地址:http://kafka.apache.org/downloads 二、开始安装 上传安装包 2.解压安装包 [root@iZuf63aacjtzo5bxq68kfpZ kafka]# tar -zxvf kafka_2.13-2.5.0.tgz 3.进入解压目录 本人已经将解压文件改名为kafka02;切换到

weixin_45403057的博客 511

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

构建kafka集群,kafka和zookeeper安装配置

1:运行kafka需要依赖jdk环境所以我们这里先安装jdk环境,我这里采用apt方式安装,这样安装完不需要手动配置jdk环境变量比较便捷 sudo apt-get update #更新源 sudo apt-get install openjdk-8-jdk #安装jdk环境 java -version #测试jdk是否安装成功 2:添加host ip映射到/etc/h...

weixin_42603784的博客 510

Kafka高可用集群之zookeeper伪集群搭建环境

zookeeper 单机伪集群搭建

点滴记忆,分享成长之路 507

大数据_Kafka_搭建Kafka伪集群(本地集群)

这里假设大家已经装好了Kafka的环境,并对kafka的知识有基本的了解。 下面直接讲解如何搭建一个本地的伪集群:(里面用到了zookeeper 伪集群 ) 搭建Zookeeper伪集群可以参考:http://blog.youkuaiyun.com/u010003835/article/details/52215054 集群配置: Step1 将配置文件拷贝多份 cp c

迎难而上 4717

class kafka.common.NotLeaderForPartitionException(kafka.server.ReplicaFetcherThread)异常处理

 [2017-06-15 19:33:14,716] ERROR [ReplicaFetcherThread-0-0], Error for partition [3_7_0_20170615,6] to broker 0:class kafka.common.NotLeaderForPartitionException (kafka.server.ReplicaFetcherThread)[20...

数据之路 7121

centos7 kafka2.3.1单机伪集群部署

接上篇文章centos7 zookeeper单点部署,准备好相应的包 cp config/server.properties config/server0.properties vi config/server0.properties 修改 broker.id=0 listeners=PLAINTEXT://192.168.81.145:9092 #注意,这里一定要有客户端可访问的ip,否...

草宝虫的博客 578

kafka开启kerberos认证

历时两天,断断续续的终于能正常producer和consumer了,记录下。 采用的是ambari,直接按照官方文档部署,需要更改的地方: 1、遇到这个错误: ERROR Error when sending message to topic test with key: null, value: 3 bytes with error: (org.apache.kafka.clients.p...

mine_1的专栏 4428

kafka+zookeeper集群搭建

kafka+zookeeper的集群搭建

xiao__miao的博客 1099

kafka:Failed to add leader for partitions(暴力解决)

问题描述: 报错信息:Failed to add leader for partitions 原因:kafka无法选举leader 解决方案: 1.修改IO并发数,删除所有topic 所在的文件夹 2.删除zookeeper中节点 3.重启zookeeper和kafka即可

海若_matrix的博客 2826

kafka有台broker挂机之后长时间没重启,导致重启报错

2019-04-23 17:22:42,423 WARN kafka.controller.KafkaController: [Controller 782]: Partition [hjw_test8,6] failed to complete preferred replica leader election. Leader is 201 2019-04-23 17:22:42,423 ERR...

永无止境 6209

kafka概念,zookeeper和kafka伪分布式部署,软连接与nohub,kafka常用命令

文章目录kafka是啥主题 topic一个主题有n个分区,方便并行部署kafka之前要部署zookeeperzookeeper伪分布式部署kafka版本给kafka个软连接看看之前的zookeeper有没有kafka残留信息kafka配置启动kafka用nohup不挂断启动kafkakafka常用命令创建topic与查看修改topic删除topic假如删除不干净1.删除linux磁盘文件夹2.删除...

qq_36459386的博客 780

3台虚拟机搭建kafka集群

上篇博客,已经介绍了三台虚拟机搭建zookeeper集群。本篇讲继续搭建kafka集群。 首先创建目录,以便管理。 mkdir /home/captain/kafka cd /home/captain/kafka 将压缩包放入到目录中,压缩包: 链接:https://pan.baidu.com/s/1gr9bXvcaOPRyOf9YYMqPiQ 提取码:vk9d 1)解压安装包 ...

Captain249的博客 1551
上一篇: logback初入
下一篇: scala的linearization
yangbb
博客等级 码龄22年 0粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值