关于Kafak报错的原因
欢迎来到Mint原薄
你好! 如果这是你第一次遇到报错信息,请耐心阅读文档
搭建kafak的群集环境(四台虚拟机)
- 依赖zookeeper的环境,首先安装zookeeper;
附带zookeeper的官方 点此进入
#注意事项:请注意各位的java的jdk版本 选择合适的JDK版本安装,不然你的kafak启动不了 注意监听端口2181(默认) 也注意防火墙对
端口的放行
yum -y install java-1.8.0-openjdk-devel.x86_64# 选择你们合适的java版本 3.4的zookeeper要1.8的java
tar -zxf zookeeper-3.4.12.tar.gz
mv zookeeper-3.4.12 /usr/local/zookeeper
cd /usr/local/zookeeper/conf/
cp zoo_sample.cfg zoo.cfg # 复制zookeeper配置文件
mkdir /usr/local/zookeeper/data # 创建zookeeper的数据目录
修改我们的配置文件
vim /usr/local/zookeeper/conf/zoo.cfg
更改数据目录 + 日志文件目录
dataDir=/usr/local/zookeeper/data
dataLogDir=/usr/local/zookeeper/data #如果这一行没有,手动添加到dataDir的下面
最后一行写入ID 2888 和3888 用来传输消息的端口
server.1 = 192.168.114.5:2888:3888 #kafak1
server.2 = 192.168.114.6:2888:3888 #kafak2
server.3 = 192.168.114.7:2888:3888 #kafak3
以上操作三台主机全部一致
接下来 设置他们的MyID
echo 1 > /usr/local/zookeeper/myid 第一台
echo 2 > /usr/local/zookeeper/myid 第二台
echo 3 > /usr/local/zookeeper/myid 第三台
接着启动zookeeper(三个全部启动 !!! 全部启动!!!)
/usr/local/zookeeper/bin/zkServer.sh start # 如果使用netstat没有看到 java的进程
tcp6 0 0 :::2181 :::* LISTEN 9493/java
/usr/local/zookeeper/bin/zkServer.sh start-foreground #调用前台程序查看报错的信息
另外最直接可能的问题 Myid没有写 Java问题
例如:
2019-08-22 09:16:15,653 [myid:] - ERROR [main:QuorumPeerMain@88] - Invalid config, exiting abnormally
org.apache.zookeeper.server.quorum.QuorumPeerConfig$ConfigException: Error processing /usr/local/zookeeper/bin/../conf/zoo.cfg
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:156)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:104)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:81)
Caused by: java.lang.IllegalArgumentException: /usr/local/zookeeper/data/myid file is missing
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parseProperties(QuorumPeerConfig.java:408)
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:152)
... 2 more
Invalid config, exiting abnormally
第二个错误 致命错误记住了 #有进程 有PID 但是就是查看不了状态
[root@localhost conf]# /usr/local/zookeeper/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.
解决方法我写在下面!!!
2.解决Error contacting service. It is probably not running.的报错方法
问题原因:首先查不了状态是因为另外的群集没有 启动
1.确保三个群集都可以查看到zookeeper启动的java进程
2.三个节点都启动之后重新查看status
3.看myid是否存在,或者是否myid重复,也注意你们myid有没有写错地方
问题原因二:没有与其他的群集之间进行监理联系,防火墙没有放行
这个问题你们进行关闭防火墙,或者进行放行端口
检查你们节点之间的IP地址是否能通
3.解压kafak进行安装
tar -zxf kafka_2.12-2.1.0.tgz (三台全部解压)
mv kafka_2.12-2.1.0 /usr/local/kafak
cd /usr/local/kafka/config/
vim server.properties
修改 broker.id 依次排序 跟自己的myid一样 一下内容都需要修改的哦
broker.id=1 # 第一台 第二台broker.id=2 第三台broker.id=3
#listeners=PLAINTEXT://:9092 #表示监听9092的端口补充上我们自己的IP 去掉#注释
listeners=PLAINTEXT://192.168.114.5:9092 #表示监听192.168.114.5:的9092端口
zookeeper.connect=localhost:2181 # 修改成监听的三个IP
zookeeper.connect=192.168.114.5:2181,192.168.114.6:2181,192.168.114.7:2181
num.partitions=1 # 修改分区副本数量
num.partitions=3
接下来的操作大吃一惊,跟上高能操作 PS:::::一定要记得改配置文件的 ID 和地址 切记!!!!
scp -r /usr/local/kafak/ 192.168.114.6:/usr/local/ # 安全复制吧,稍微省事儿一点,稍微进行修改
scp -r /usr/local/kafak/ 192.168.114.7:/usr/local/
####此处步骤修改完下面的修改ID和IP在执行#####
启动kafaka>>> /usr/local/kafak/bin/kafka-server-start.sh -daemon /usr/local/kafak/config/server.properties
启动格式:启动命令 -daemon 配置文件
-daemon 表示后台执行 不写的话会阻塞终端
三个主机全部启动哦
检查端口
netstat -anput | grep LISTEN | grep 9092
解决启动kafak报错的问题
报错1:Exception in thread "main" java.lang.UnsupportedClassVersionError: kafka/Kafka : Unsupported major.minor version 52.0
解决你的java环境>>> 选择更新java环境 或者降低java环境
一般都是版本低的java不支持VM版本导致的,所以更新java环境根据你们的情况
报错2:[2019-08-22 22:43:11,109] ERROR Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.KafkaServer)
at kafka.zookeeper.ZooKeeperClient.$anonfun$waitUntilConnected$3(ZooKeeperClient.scala:268)
at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
at kafka.utils.CoreUtils$.inLock(CoreUtils.scala:251)
at kafka.zookeeper.ZooKeeperClient.waitUntilConnected(ZooKeeperClient.scala:264)
at kafka.zookeeper.ZooKeeperClient.<init>(ZooKeeperClient.scala:97)
at kafka.zk.KafkaZkClient$.apply(KafkaZkClient.scala:1694)
at kafka.server.KafkaServer.createZkClient$1(KafkaServer.scala:348)
at kafka.server.KafkaServer.initZkClient(KafkaServer.scala:372)
at kafka.server.KafkaServer.startup(KafkaServer.scala:202)
at kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:38)
at kafka.Kafka$.main(Kafka.scala:75)
at kafka.Kafka.main(Kafka.scala)
[2019-08-22 22:43:11,114] INFO shutting down (kafka.server.KafkaServer)
[2019-08-22 22:43:11,112] INFO EventThread shut down for session: 0x100007eff3c0002 (org.apache.zookeeper.ClientCnxn)
[2019-08-22 22:43:11,131] INFO shut down completed (kafka.server.KafkaServer)
[2019-08-22 22:43:11,132] ERROR Exiting Kafka. (kafka.server.KafkaServerStartable)
[2019-08-22 22:43:11,146] INFO shutting down (kafka.server.KafkaServer)
这个错误的解决方法我是真的没有找到....一直说zookeeper进行连接超时
如果有解决的小伙伴恳请评论区留言,万分感谢!!! 两台kafak也可以现在
怕你们不懂 我直接写出来
第二台 kafak
第三台kafak
4.测试kafak群集
模拟一个topic(主题) 由于目前我只有 第一个节点 第三个节点启动了kafak所以我在第三个节点操作
/usr/local/kafak/bin/kafka-topics.sh \
> --create \ #创建topic 可以叫做消息主题
> --zookeeper 192.168.114.7:2181 \ # 指定zookeeper的IP和端口 本机
> --replication-factor=2 --partitions=3 \ # 复制因子为2 分区数为3 因子就是副本的数量
> --topic kafaktest # 指定topic的名字
验证我们创建的topic 第一台启动producer 生产者
usr/local/kafak/bin/kafka-console-producer.sh \
> --broker-list 192.168.114.5:9092 \
> --topic kafaktest \
> Hellow Kafak is Good \ # 产生的消息
> 66666 # 产生的消息
> 接下来回到第三台 consumer
> /usr/local/kafak/bin/kafka-console-consumer.sh \
> --bootstrap-server 192.168.114.7:9092 \
> --topic kafaktest \
> --from-beginning # 从消费者还没有开始,不是最新消息
出现警告的原因
OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N
没有对 GC线程进行配置 配置一下就好了 上面说的很清楚
ParallelGCThreads=N # 修改即可
最后 还是寻求大佬解决一下
ERROR Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.KafkaServer)
超时的这个报错 !!! 万分感谢