首页 > 技术文章 > Kafka单机版部署

szx666 2021-04-09 09:54 原文

1、安装JDK

  • 首先执行如下命令搜索 jdk 安装包:

  • 这里我们选择 1.8 版本,执行如下命令进行安装。

    注意:默安装默认的目录为:/usr/lib/jvm/
    yum install java-1.8.0-openjdk
  • 安装完毕后执行 java -version 命令即可查看当前的版本


默认安装完只有运行环境,也就说 java 安装目录下只有 jre 文件夹,我们执行 javac 命令会提示“未找到命令”:

  • 我们执行如下命令安装开发环境:

  • 安装完可看到 java 安装目录下出现 bin、lib 等文件夹。


再次输入javac说明安装成功

2、配置环境变量

通过 yum install 安装 jdk,是不会自动配置 JAVA_HOME 环境变量的。

  • 找JDK安装路径、首先我们依次执行如下命令,一步步找到正确的 JAVA_HOME 位置:

  • 可以发现最终找到的位置如下:

/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.282.b08-1.el7_9.x86_64

  • 配置 JAVA_HOME,执行如下命令打开配置环境变量的文件:

  • 在里面添加以下配置(JAVA_HOME 参数根据前面找到的目录路径设置):

  export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.282.b08-1.el7_9.x86_64
  export JRE_HOME=$JAVA_HOME/jre
  export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
  export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
  • 最后执行如下命令让配置生效:

  • 测试执行 echo $JAVA_HOME 如果能正确输出路径则说明配置成功了:

3、安装Zookeeper

  • 创建 /usr/local/services/zookeeper 文件夹,并进入该目录中


  • 下载 zookeeper-3.4.9.tar.gz:命令如下

wget http://archive.apache.org/dist/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz

解压缩 zookeeper-3.4.9.tar.gz:

tar -zxvf zookeeper-3.4.9.tar.gz

  • 进入到 /usr/local/services/zookeeper/zookeeper-3.4.9/conf 目录中:

复制 zoo_sample.cfg 文件的并命名为为 zoo.cfg:

  • 用 vim 打开 zoo.cfg 文件并修改其内容为如下:

  • 进入到 /usr/local/services/zookeeper/zookeeper-3.4.9/bin 目录中:

  • 用 vim 打开 /etc/ 目录下的配置文件 profile、并在其尾部追加如下内容:

export ZOOKEEPER_HOME=/usr/local/services/zookeeper/zookeeper-3.4.9/
export PATH=$ZOOKEEPER_HOME/bin:$PATH
export PATH
  • 使 /etc/ 目录下的 profile 文件即可生效:

  • 启动 zookeeper 服务:

  • 查询 zookeeper 状态:

    zkServer.sh status
  • 关闭 zookeeper 服务:

    zkServer.sh stop

如打印如下信息则表明成功关闭:
    ZooKeeper JMX enabled by default
    Using config: /usr/local/services/zookeeper/zookeeper-3.4.9/bin/../conf/zoo.cfg
    Stopping zookeeper ... STOPPED

  • 重启 zookeeper 服务:

    zkServer.sh restart

如打印如下信息则表明重启成功:
    ZooKeeper JMX enabled by default
    Using config: /usr/local/services/zookeeper/zookeeper-3.4.9/bin/../conf/zoo.cfg
    ZooKeeper JMX enabled by default
    Using config: /usr/local/services/zookeeper/zookeeper-3.4.9/bin/../conf/zoo.cfg
    Stopping zookeeper ... STOPPED
    ZooKeeper JMX enabled by default
    Using config: /usr/local/services/zookeeper/zookeeper-3.4.9/bin/../conf/zoo.cfg
    Starting zookeeper ... STARTED

4、安装Kafka

  • 进入local文件夹中 ,执行如下命令安装kafka

  • 解压Kafka

  • 配置kafka,修改server.properties

移动kafka
mv kafka_2.13-2.7.0 /usr/local/kafka
mkdir /usr/local/kafka/log/kafka #创建kafka日志目录
cd /usr/local/kafka/config #进入配置目录
vi server.properties #编辑修改相应的参数

broker.id=0
port=9092 #端口号
host.name=192.168.200.55 #服务器IP地址,修改为自己的服务器IP
log.dirs=/usr/local/kafka/log/kafka #日志存放路径,上面创建的目录
zookeeper.connect=localhost:2181 #zookeeper地址和端口,单机配置部署,localhost:2181

  • 配置kafka下的zookeeper

mkdir /usr/local/kafka/zookeeper #创建zookeeper目录
mkdir /usr/local/kafka/log/zookeeper #创建zookeeper日志目录

cd /usr/local/kafka/config #进入配置目录

vi zookeeper.properties #编辑修改相应的参数

dataDir=/usr/local/kafka/zookeeper #zookeeper数据目录
dataLogDir=/usr/local/kafka/log/zookeeper #zookeeper日志目录
clientPort=2181
maxClientCnxns=100
tickTime=2000
initLimit=10

5、创建启动、关闭kafka脚本

  • 创建启动kafka脚本

vi kafkastart.sh #编辑,添加以下代码

  • 关闭kafka

  • 添加脚本执行权限

  • 设置脚本开机自动执行


vi /etc/rc.d/rc.local #编辑,在最后添加一行
sh /usr/local/kafka/kafkastart.sh & #设置开机自动在后台运行脚本
sh /usr/local/kafka/kafkastart.sh #启动kafka
sh /usr/local/kafka/kafkastop.sh #关闭kafka

6、测试Kafka

  • 启动zookeeper

  • 启动kafka

使用命令 ./kafkastart.sh


  • 测试创建名字是quickstart-events的topic

bin/kafka-topics.sh --create --topic quickstart-events --bootstrap-server localhost:9092

image

  • 生产消息测试,向topic中写入数据

bin/kafka-console-producer.sh --topic quickstart-events --bootstrap-server localhost:9092

image

  • 消费消息测试

打开另一个终端会话并运行控制台消费者客户端来阅读您刚刚创建的事件:

bin/kafka-console-consumer.sh --topic quickstart-events --from-beginning --bootstrap-server localhost:9092

image

  • 停止kafka、停止Zookeeper server
Ctrl-C

至此,启动,测试,停止全过程ok。单机部署完成

7、部署中产生的bug

发现zookeeper端口2181被占用

解决:

此问题的难点在于定位问题,仔细查看错误提示,发现未端口被占用,直接查看端口状态并找到对应的进程id,查看进程程序,直接kill进程,问题解决。

8、启动Kafka命令

  • 注意:您当地的环境必须安装 Java 8+ ,先启动zookeeper再启动kafka

bin/zookeeper-server-start.sh config/zookeeper.properties

  • 打开另一个终端会话并运行:

bin/kafka-server-start.sh config/server.properties

  • 一旦所有服务都成功推出,您将有一个基本的 Kafka 环境运行和准备使用。
  • 如果您还想删除您本地 Kafka 环境的任何数据,包括您一路上创建的任何事件,请运行命令:

rm -rf /tmp/kafka-logs /tmp/zookeeper

推荐阅读