Mac Docker容器里基于centos自定义镜像 配置kafka (模拟Linux环境配置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.
    • 解决办法:
    • 问题解决!

      概要

      这周结束了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 修改配置参数

      1. broker_id=0 该参数代表Kafka节点,如果是要配置集群的话,每台服务器上该参数不能一样,代表节点id
      2. 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启动正常

      成功!