
前言
Kafka
通常采用分布式架构,但为了学习和测试 DMDRS
同步到 Kafka
的功能,本文将介绍如何在单机环境下部署 Kafka
。以下是详细的步骤:
一、准备工作
1. 安装 JDK 1.8+ 并配置 JAVA_HOME
Kafka
依赖 Java
运行环境,因此需要先安装 JDK
并配置环境变量。
下载与安装
• 下载地址:JDK 8 下载
• 将下载的安装包上传至 /app/software
目录。
解压与配置
# 创建安装目录
mkdir app/software app/server
# 解压 JDK
tar -xvf jdk-8u441-linux-x64.tar -C app/server/
# 创建软链接
ln -s app/server/jdk1.8.0_441 jdk
# 配置环境变量
vim ~/.bash_profile
在 ~/.bash_profile
文件末尾添加:
export JAVA_HOME=/app/server/jdk
export PATH=$PATH:$JAVA_HOME/bin
使配置生效:
source ~/.bash_profile
验证安装
java -version
如果系统已安装其他版本的 JDK
,可以通过以下命令卸载:
yum list installed | grep java
yum -y remove java-1.8.0-openjdk* yum -y remove tzdata-java.noarch
rm -f usr/bin/java
ln -s app/server/jdk/bin/java usr/bin/java
我这里不使用自带的jdk,选择卸载程序
重新生效环境变量后,查询版本信息为安装的版本。
[root@OADB3 server]# source ~/.bash_profile
[root@OADB3 server]# java -version
java version "1.8.0_441"
Java(TM) SE Runtime Environment (build 1.8.0_441-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.441-b07, mixed mode)
[root@OADB3 server]#
2. 配置主机名和 IP 映射
为方便后续操作,配置主机名和 IP
映射关系。
修改主机名
echo "HOSTNAME=dmkafka" >> etc/sysconfig/network
reboot
或者:
hostnamectl set-hostname dmkafka
配置 IP 映射
编辑 /etc/hosts
文件,添加如下内容:
192.168.25.172 dmkafka
测试映射是否生效:
ping dmkafka
3. 关闭防火墙
为避免防火墙影响 Kafka
和 Zookeeper
的运行,建议关闭防火墙。
关闭防火墙
systemctl stop firewalld.service
关闭防火开机启动过
systemctl disable firewalld.service
二、安装与配置 Zookeeper
Kafka
依赖 Zookeeper
进行元数据管理,因此需要先安装并启动 Zookeeper
。
1. 下载与解压
• 下载地址:Zookeeper 下载
这里选择3.7.2
这个版本,下载信息如下:
• 将下载的安装包上传至 /app/software
目录。
解压并创建软链接:
tar -zxvf apache-zookeeper-3.7.2-bin.tar.gz -C app/server/
ln -s apache-zookeeper-3.7.2-bin zookeeper
2. 配置环境变量
编辑 ~/.bash_profile
文件,添加如下内容:
export ZK_HOME=/app/server/zookeeper
export PATH=$PATH:$ZK_HOME/bin
使配置生效:
source ~/.bash_profile
追加配置到jdk后面,信息如下:
3. 配置 Zookeeper
进入 Zookeeper 的配置目录,复制默认配置文件并修改:
创建数据存储目录:
mkdir app/server/zookeeper/data
修改zookeeper
配置文件,将数据存放目录指定为我们创建的目录:
cd /app/server/zookeeper/conf
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
修改以下内容:
dataDir=/app/server/zookeeper/data

4. 启动 Zookeeper
./bin/zkServer.sh start zoo.cfg
验证启动状态
jps
# 输出中包含 QuorumPeerMain 表示启动成功
./bin/zkServer.sh status zoo.cfg
# 输出 Mode: standalone 表示正常运行
启动信息如下所示:
[root@OADB3 zookeeper]# ./bin/zkServer.sh start zoo.cfg
ZooKeeper JMX enabled by default
Using config: app/server/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@OADB3 zookeeper]#
查看是否启动成功
[root@OADB3 zookeeper]# jps
3575 Jps
3512 QuorumPeerMain # 看到控制台成功输出 QuorumPeerMain,表示启动成功
[root@OADB3 zookeeper]#
三、安装与配置 Kafka
1. 下载与解压
• 下载地址:Kafka 下载
选择 kafka_2.12-3.8.1.tgz
进行下载,这里是编译的Scala版本不同而已,随便下载一个即可。
• 将下载的安装包上传至 /app/software
目录。
解压并创建软链接:
tar -zxvf kafka_2.12-3.8.1.tgz -C app/server/
ln -s kafka_2.12-3.8.1 kafka
2. 配置环境变量
编辑 ~/.bash_profile
文件,添加如下内容:
export KAFKA_HOME=/app/server/kafka
export PATH=$PATH:$KAFKA_HOME/bin
使配置生效:
source ~/.bash_profile
配置完成后信息如下:
3. 配置 Kafka
进入 Kafka 的配置目录,编辑 server.properties
文件:
cd $KAFKA_HOME/config
vim server.properties
修改以下关键配置:
broker.id=0
listeners=PLAINTEXT://dmkafka:9092
log.dirs=/app/server/kafka/data
log.retention.hours=168
zookeeper.connect=dmkafka:2181
创建日志存储目录:
mkdir /app/server/kafka/data
4. 启动 Kafka
./bin/kafka-server-start.sh -daemon config/server.properties
四、验证 Kafka 部署
1. 创建 Topic
# 使用Kafka自带的命令行工具创建一个测试topic
bin/kafka-topics.sh --create --topic test-topic --bootstrap-server dmkafka:9092 --partitions 1 --replication-factor 1
如下所示
[root@OADB3 kafka]# bin/kafka-topics.sh --create --topic test-topic --bootstrap-server dmkafka:9092 --partitions 1 --replication-factor 1
Created topic test-topic.
[root@OADB3 kafka]#
2. 查看 Topic 列表
#:确认topic已成功创建
bin/kafka-topics.sh --list --bootstrap-server dmkafka:9092
如下所示
[root@OADB3 kafka]# bin/kafka-topics.sh --list --bootstrap-server dmkafka:9092
test-topic
[root@OADB3 kafka]#
3. 发送与消费消息
启动生产者
bin/kafka-console-producer.sh --topic test-topic --bootstrap-server dmkafka:9092
启动消费者
bin/kafka-console-consumer.sh --topic test-topic --bootstrap-server dmkafka:9092 --from-beginning
如果能够正常发送和接收消息,说明 Kafka
单机部署成功。
五、常用命令
以下是 Kafka
常用命令的总结:
kafka-server-start.sh | |
kafka-server-stop.sh | |
kafka-console-producer.sh | |
kafka-console-consumer.sh | |
kafka-topics.sh | |
kafka-consumer-groups.sh | |
kafka-configs.sh | |
kafka-run-class.sh |
六、注意事项
Java 版本兼容性:确保使用的 Kafka 版本与 JDK 版本兼容。Kafka 3.8.1 推荐使用 JDK 8 或 JDK 11。
主机名解析:确保
dmkafka
主机名在/etc/hosts
中正确映射到服务器的 IP 地址,避免因 DNS 解析问题导致连接失败。Zookeeper 配置:即使在单机模式下,Kafka 仍需要 Zookeeper 来管理元数据。确保 Zookeeper 服务已正确启动并可被 Kafka 访问。
日志目录权限:确保 Kafka 的
log.dirs
指定目录存在,并且 Kafka 进程具有读写权限。防火墙设置:在生产环境中,建议仅开放必要的端口(如 9092),并配置适当的防火墙规则,而不是完全关闭防火墙。
资源配置:根据实际需求调整 Kafka 的配置参数,如
num.partitions
、log.retention.hours
等,以优化性能和存储。
七、常见问题排查
1. Kafka 启动失败
可能原因:
• Java 环境未正确配置:确保 JAVA_HOME
已正确设置,并且 java
命令可用。 • Zookeeper 未启动或不可达:检查 Zookeeper 服务状态,确保 zookeeper.connect
配置正确。 • 端口被占用:检查 listeners
配置的端口(默认 9092)是否已被其他进程占用。
解决方法:
• 使用 netstat
或 ss
命令检查端口占用情况:
netstat -tulnp | grep 9092
• 查看 Kafka
日志文件,通常位于 ${KAFKA_HOME}/logs
目录下,查找具体的错误信息。
2. 主机名解析问题
现象:Kafka
或 Zookeeper
无法通过主机名互相访问,提示连接超时或拒绝。
解决方法:
• 检查 /etc/hosts
文件,确保主机名与 IP 地址正确映射。 • 使用 ping
或 telnet
命令测试主机名解析和网络连通性。
ping dmkafka
telnet dmkafka 9092
3. Zookeeper 启动失败
可能原因:
• 数据目录权限问题:确保 dataDir
配置的目录存在,并且 Zookeeper
进程具有读写权限。 • 端口被占用:检查 clientPort
(默认 2181
)是否已被其他进程占用。
解决方法:
• 检查并设置正确的数据目录权限:
chown -R zookeeper_user:zookeeper_group /app/server/zookeeper/data
• 查看 Zookeeper
日志文件,通常位于 ${ZK_HOME}/logs
目录下,查找具体的错误信息。
八、总结
通过以上步骤,可以在单机环境下成功部署 Kafka
和 Zookeeper
,完成基本的配置与验证。此环境适用于学习和测试 Kafka
的基本功能,如创建 Topic
、发送和接收消息等。在生产环境中,建议采用分布式集群模式,并根据实际需求优化 Kafka
和 Zookeeper
的配置参数,以确保系统的稳定性和高性能。

安装部署
1.分享一个以前搭建主备集群遇到的一个路径乱码案例
2.给大家分享如何标准化部署达梦单机环境
3.DM 达梦数据库中大写敏感介绍分享
4.达梦 DSC 集群+DW 备库部署实战:高可用架构搭建指南
数据迁移
1.分享工作中数据迁移的实用技巧与方法
2.Oracle 迁移 DM 数据库实践
3.SQLark 迁移实践分享(oracle-达梦数据库)
4.年过完了,SQLark 3.3 发版了!连接分组,断点续迁,顺滑建表,数据筛选,导出结构这些都有!)
5.SQLark 实战 | 如何从Excel、csv、txt等外部文件进行数据导入
6.PostgerSQL迁移到达梦案例
工具使用与日常处理
1.DataGrip 访问国产数据库_datagrip 连接国产数据库
2.如何使用 dbeaver 连接达梦数据库
3.更新大字段提示-2201 无效的对象问题
4.DM7 读写分离部署问题总结
5.DM7 读写分离集群备库数据不同步问题处理
6.达梦数据库 DISQL 工具部署及使用技巧
7.达梦数据库日常巡检方法分享
8.如何查询达梦数据库缓存执行计划与清理
9.达梦数据库运维工具分享
10.东方通中间件环境中如何部署达梦企业管理工具(DEM)
11.达梦 dmdbchk 使用秘籍:掌握 DM 数据库检查工具的功能与参数
12.ET 工具快速上手:从入门到精通的使用步骤
13.达梦数据库 SQL 日志详解:关键概念、功能及实践方法
14.搞懂达梦数据库 SQL 日志使用延伸,这些方法超实用!
15.DM 数据库守护集群入门指南:带你走进数据守护的世界
16.创建表时为何会提示“[-2670]:对象[ID]默认约束表达式无效”?
17.SQLark 实战 | 如何通过对象名和 DDL 快速搜索数据库对象
18.[-2508]登录失败次数超过限制
19.达梦数据库参数修改方法详解
SQL 调优
1.DM 传统行业 SQL 优化案例分享
2.DM 数据库 SQL 优化案例分享
3.如何查询 DM 数据库缓存执行计划与清理
4.使用 ob_tools 包收集分析 oceanbase 数据库 oracle 租户缓慢 sql 语句
5.使用 format_obproxy_digest_log 工具分析 obproxy 网络层耗时 SQL
6.DM 数据库回表优化案例
7.SQL 优化案例分享
8.DM SQL 关联列 like 优化案例
9.达梦数据库 SQL 关联列 like 使用 hint 方式优化案例





