zookeeper启动失败的排错

本文详细解析了Zookeeper在启动过程中可能遇到的两大常见问题:端口冲突及远程连接失败,并提供了具体解决步骤,包括如何检查端口占用、防火墙设置及myid配置等关键操作。

执行zkServer.sh start 后显示:

JMX enabled by default
Using config:/home/hadoop/app/zookeeper-3.4.5/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED


1、jps后发现没有QuorumPeerMain进程

1.1 查看zookeeper-3.4.5/data下的zookeeper-3.4.5.out,如果提示 binding to port 0.0.0.0/0.0.0.0:2181

ERROR [main:QuorumPeerMain@89] - Unexpected exception, exiting abnormally java.net.BindException: Address already in use

说明2181端口被占用,通过netstat -nltp | grep 2181检查是否已被占用,如果有则把对应的进程kill掉(kill 进程的pid),然后再启动zookeeper

1.2 查看是不是/soft/zookeeper/data/myid 没有配置

 


2、jps后发现有QuorumPeerMain进程,然后执行zkServer.sh status,如果显示:

JMX enabled by default
Using config: /home/hadoop/app/zookeeper-3.4.5/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.

说明未启动成功,通过查看zookeeper-3.4.5.out,如果提示

Cannot open channel to 1 at election address hadoop05/10.37.129.105:3888
java.net.NoRouteToHostException: No route to host,说明无法连接远程电脑10.37.129.105:3888,很有可能开启了防火墙

通过sudo service iptables status检查,如果确实开启,则通过sudo service iptables stop将其关闭,最后再查看状态zkServer.sh status

此时,基本都能够正常启动了,提示:

JMX enabled by default
Using config: /home/hadoop/app/zookeeper-3.4.5/bin/../conf/zoo.cfg
Mode: leader(或follower)
 

 

<think>嗯,用户这次询问的是在欧拉系统上安装Java、Zookeeper和Kafka的报错解决方案。结合之前的对话历史,用户已经尝试过安装但遇到了阻碍,现在需要更具体的排错指导。 用户提供的引用资料很有意思:引用[1]和[4]提到传统Kafka依赖Zookeeper的部署方式,而引用[3]则指出OpenEuler 22.03可以使用Kafka 3.3.2的无Zookeeper方案。这可能是关键突破点——用户可能没意识到新版本架构变化带来的安装简化。 具体拆解三个组件的安装痛点: 对于Java安装,核心是环境变量配置问题。很多报错源于JAVA_HOME未正确设置,需要明确告知用户通过`alternatives --config java`确认路径。引用[1]提到的“Could not find main class”错误通常就是Java环境配置不当引发的连锁反应。 Zookeeper方面,用户引用[2]和[4]都提到配置文件的重要性,特别是dataDir路径权限问题。需要强调必须创建zookeeper专用账户并授权,否则服务启动时写入数据目录会失败。另外集群部署时myid文件的匹配规则容易被忽略。 关于Kafka安装的选择题:如果用户坚持用旧版(如引用[1]的2.2.0),就必须处理Zookeeper依赖;若用新版(如引用[3]的3.3.2),则可跳过Zookeeper但要注意KRaft模式的配置差异。考虑到用户系统是OpenEuler,更推荐无Zookeeper方案以简化部署。 防火墙设置是通用陷阱,特别是OpenEuler默认的firewalld会拦截2181/9092等端口。需要给出具体放行命令而非简单提示。另外日志查看指令要精确到文件路径,如`journalctl -u kafka`比泛泛说“查看日志”更有用。 最后生成的问题列表特意加入了版本选择建议,因为用户引用[1][3][4]显示出对版本兼容性的困惑。内存优化问题则是针对用户之前提到的资源限制场景。 </think>### 欧拉系统安装 Java、Zookeeper 和 Kafka 报错解决方案 #### 一、Java 安装报错处理 --- **1. 环境变量配置** ```bash # 查看 Java 路径 $ ls /usr/lib/jvm/ # 设置环境变量(以 openjdk-11 为例) $ echo 'export JAVA_HOME=/usr/lib/jvm/java-11-openjdk' >> /etc/profile $ echo 'export PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile $ source /etc/profile ``` **验证安装**: ```bash $ java -version # 应显示 OpenJDK 11+ ``` **2. 常见报错解决** - **`bash: java: command not found`** 检查 `$JAVA_HOME/bin` 是否加入 PATH ```bash $ alternatives --config java # 选择默认 Java ``` --- #### 二、Zookeeper 安装报错处理(依赖模式) --- **1. 启动报错:`QuorumPeerMain not found`** **原因**:使用了 `-src` 包而非 `-bin` 包(引用[1][^1]) **解决方案**: ```bash # 下载二进制包(示例版本) $ wget https://archive.apache.org/dist/zookeeper/zookeeper-3.8.0/apache-zookeeper-3.8.0-bin.tar.gz $ tar -zxvf apache-zookeeper-*-bin.tar.gz ``` **2. 配置文件问题** ```ini # zoo.cfg 核心配置 dataDir=/data/zookeeper # 需预先创建目录 clientPort=2181 admin.enableServer=false # 禁用管理端口避免冲突 server.1=192.168.1.101:2888:3888 # 集群配置 ``` **3. 权限与日志** ```bash $ mkdir -p /data/zookeeper $ chown -R zookeeper:zookeeper /data/zookeeper $ echo "export ZOO_LOG_DIR=/var/log/zookeeper" >> conf/zookeeper-env.sh ``` --- #### 三、Kafka 安装报错处理 --- **1. 依赖模式(需 Zookeeper)** ```bash # server.properties 关键配置 listeners=PLAINTEXT://0.0.0.0:9092 log.dirs=/data/kafka-logs zookeeper.connect=localhost:2181 # 指向 Zookeeper ``` **启动顺序**(引用[2][^2]): ```bash $ bin/zookeeper-server-start.sh config/zookeeper.properties & # 先启 ZK $ bin/kafka-server-start.sh config/server.properties & # 再启 Kafka ``` **2. 无依赖模式(Kafka ≥3.3.2)** ```ini # config/kraft/server.properties process.roles=broker,controller node.id=1 controller.quorum.voters=1@flink01:9093,2@flink02:9093 # 集群配置 listeners=PLAINTEXT://:9092 log.dirs=/data/kafka-logs ``` **初始化存储**(引用[3][^3]): ```bash $ bin/kafka-storage.sh format -t $(bin/kafka-storage.sh random-uuid) -c config/kraft/server.properties ``` --- #### 四、通用问题解决 --- **1. 端口冲突检测** ```bash $ ss -tunlp | grep -E '2181|9092' # 检查 ZK/Kafka 端口 ``` **2. 防火墙放行** ```bash $ firewall-cmd --permanent --add-port={2181,2888,3888,9092}/tcp $ firewall-cmd --reload ``` **3. 日志排查** | 服务 | 日志路径 | |------------|-----------------------------------| | **Zookeeper** | `/var/log/zookeeper/zookeeper.log` | | **Kafka** | `logs/server.log` | ```bash $ tail -f logs/server.log | grep -i error ``` --- ### 版本选择建议(引用[1][^1][^3][^4]) | 组件 | 兼容版本 | 说明 | |-------------|-----------------------------|--------------------------| | **Kafka** | 2.8+ | 支持无 Zookeeper 模式 | | **Zookeeper** | 3.5.8+ | 推荐稳定版本 | | **Java** | JDK 11 | Kafka 3.0+ 强制要求 | > **注意**:Kafka 3.3.2 在 OpenEuler 22.03 验证通过(引用[3][^3]) ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值