文章目录
- 概要
- 整体架构流程
- Kafka启动报错
- Error: VM option 'UseG1GC' is experimental and must be enabled via -XX:+UnlockExperimentalVMOptions.
- Error: Could not create the Java Virtual Machine.
- Error: A fatal exception has occurred. Program will exit.
- 解决办法:
- 问题解决!
概要
这周结束了Spark-core,Spark-sql,Spark- stream的学习,发现到后期的案例实践需要用到Kafka和zookeeper,首先在网上搜了一下docker 配置kafka和zookeeper,发现有直接配置镜像的,即kafka,zookeeper单独搞个镜像,跟着步骤配置成功了但是和集群的联系比较拉,特别是我已经把Hadoop和spark集群配置好了,自定义的镜像模拟了Linux环境,干脆直接把Kafka和zookeeper也加进去。
自定义镜像越来越大了hhhh
整体架构流程
Kafka的安装包我选择的是kafka_2.12_2.4.1 跟着教程的版本,下载好后 传到容器里解压:
docker cp /xxxx/kafka安装包路径 容器名:/xxx/容器内目标路径 tar -zxvf kafka_2.12_2.4.1 -C /xxx/解压目标路径
完成后进入解压目录里的config 修改配置参数
- broker_id=0 该参数代表Kafka节点,如果是要配置集群的话,每台服务器上该参数不能一样,代表节点id
- zookeeper.connect=服务器ip:2181 这里需要同步服务器ip 如果是localhost的话就是宿主机ip了 需要注意
修改好后 可以制作一个启动/停止脚本 因为启动Kafka需要先启动zookeeper,所以如果一个一个的命令操作需要开多个窗口,比较麻烦:
在解压路径下创建启动脚本 # vim kafka_start.sh, 里边内容为:
#!/bin/sh #启动zookeeper /usr/local/kafka/bin/zookeeper-server-start.sh /usr/local/kafka/config/zookeeper.properties & sleep 3 #等3秒后执行 #启动kafka /usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties &
创建停止脚本 # vim kafka_stop.sh
#!/bin/sh #关闭zookeeper /usr/local/kafka/bin/zookeeper-server-stop.sh /usr/local/kafka/config/zookeeper.properties & sleep 3 #等3秒后执行 #关闭kafka /usr/local/kafka/bin/kafka-server-stop.sh /usr/local/kafka/config/server.properties &
接下来 Kafka 启动!
Kafka启动报错
Error: VM option ‘UseG1GC’ is experimental and must be enabled via -XX:+UnlockExperimentalVMOptions.
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
可以发现启动zookeeper和Kafka的时候均报错了,说虚拟机无法创建,因为“UseG1GC”参数的问题
经定位,报错原因为启动脚本中有配置参数-XX:+UseG1GC,这个参数并不直接在Kafka-server-start.sh 和 zookeeper-server-start.sh里面,而是在kafka-run-class.sh文件里,
解决办法:
1进入kafka/bin目录
2找到kafka-run-class.sh文件,vim编辑
3找到KAFKA_JVM_PERFORMANCE_OPTS="-server -XX:+UseG1GC -XX:MaxGCPauseMillis=20
直接删掉 -XX:+UseG1GC。
问题解决!
重新启动脚本 出现这些日志信息说明zookeeper和Kafka启动正常
成功!