【TDH】Kafka的使用

1. Kafka使用前的配置

       集群在不开启安全的情况下,可以直接进行创建topic的操作。如果集群开启了安全,需要进行相关的安全认证的参数配置。首先去到Kafka的config目录下。

1.1 修改producer.properties文件。

  • 修改bootstrap.servers配置项如下:

  • 在producer.properties文件的末尾添加如下配置:

【TDH】Kafka的使用_第1张图片

1.2 修改server.properties文件。

  • 修改zookeeper.connect配置项如下:

【TDH】Kafka的使用_第2张图片

  • 修改zookeeper.connection.timeout.ms配置项如下:

1.3 修改consumer.properties文件。

  • 修改zookeeper.connect配置项如下:

  • 修改zookeeper.connection.timeout.ms配置项如下:

  • 在consumer.properties文件末尾添加如下配置:

【TDH】Kafka的使用_第3张图片

1.4 jaas.conf文件的介绍。

        jaas.conf文件使用在两处:一,使用Kafka命令前需要声明KAFKA_OPTS变量;二,Flume对接Kafka时,jaas.conf文件内容为KafkaServer、KafkaClient、ZookeeperClient的认证信息。

        jaas.conf文件是默认创建的,文件路径为:/etc/kafka1/conf/。开启安全后,执行kafka的命令前必须保证变量KAFKA_OPTS的值为"-Djava.security.auth.login.config=/etc/kafka1/conf/jaas.conf",为了避免麻烦直接在系统变量里面声明KAFKA_OPTS变量。

2. Kafka建立topic

2.1 用户赋权

     使用如下命令查看当前用户是什么用户:

klist

     结果如下:

【TDH】Kafka的使用_第4张图片

      首先去到Kafka的bin目录下,然后给当前用户赋操作集群的权限:

./kafka-acls.sh --authorizer-properties zookeeper.connect=node3:2181,node2:2181,node1:2181 --add --allow-principal User:hive --cluster

2.2 创建topic并赋权

       使用如下命令创建一个3分区3副本的topic:

./kafka-broker-topics.sh --bootstrap-server node3:9092,node2:9092,node1:9092 --create --topic yxy --partitions 3 --replication-factor 3 --consumer.config ../config/consumer.properties

      出现“Successfully created topic…”表示创建topic成功:

【TDH】Kafka的使用_第5张图片

      使用如下命令列出集群中存在topic:

./kafka-topics.sh --zookeeper node3:2181,node2:2181,node1:2181 --list

      如下图所示:

【TDH】Kafka的使用_第6张图片

      使用如下命令给topic yxy赋予生产数据的权限:

./kafka-acls.sh --authorizer-properties zookeeper.connect=node3:2181,node2:2181,node1:2181 --add --allow-principal User:hive --topic yxy --producer

     使用如下命令给topic yxy赋予消费数据的权限:

./kafka-acls.sh --authorizer-properties zookeeper.connect=node3:2181,node2:2181,node1:2181 --add --allow-principal User:hive --topic yxy --consumer --group hadoop

    使用如下命令查看topic yxy具有哪些权限:

./kafka-acls.sh --authorizer-properties zookeeper.connect=node3:2181,node2:2181,node1:2181 --list --topic yxy

    如下图所示:

【TDH】Kafka的使用_第7张图片

2.3 测试Kafka

     创建Kafka topic之后,开启两个窗口进行Kafka的测试,在Kafka的bin目录下,执行如下命令开启生产者:

./kafka-console-producer.sh --broker-list node3:9092,node2:9092,node1:9092 \

--topic yxy \

--producer.config ../config/producer.properties

     执行如下命令开启消费者:

./kafka-console-consumer.sh --bootstrap-server node3:9092,node2:9092,node1:9092 \

--topic yxy \

--consumer.config ../config/consumer.properties

      如下图所示:

【TDH】Kafka的使用_第8张图片

       在生产者窗口输入内容,正常情况下可以在消费者窗口接收到输入的数据:

【TDH】Kafka的使用_第9张图片

       至此,Kafka创建topic成功。

3. Kafka删除topic

       删除topic之前需要先去8180监控界面将delete.topic.enable的参数设置为true,如下图所示:

【TDH】Kafka的使用_第10张图片

       然后,点击右上角“更多操作”-->“配置服务”后,重启Kafka组件:

【TDH】Kafka的使用_第11张图片

      重启完成后,可以进行Kafka topic的删除操作,这里提供两种方法。

3.1 使用kubectl命令删除topic

      首先使用如下命令查看Zookeeper的pod id:

kubectl get pod |grep zookeeper

【TDH】Kafka的使用_第12张图片

      因为集群三个节点均安装了zookeeper server,故此处可任选上图中的pod id号其一执行如下命令:

kubectl exec -it pod_id bash

      例如:执行kubectl exec -it zookeeper-server-zookeeper1-3543915313-0pr6d bash。然后进入Zookeeper的bin目录下执行如下命令:

./zkCli.sh

【TDH】Kafka的使用_第13张图片

        将/brokers/topics 、/consumers/、/admin/delete_topics/、/config/topics/四个目录下的相关topic删除(这里以topic xyx为例),具体如下图所示:

       类似的,将其余三个目录下有关topic xyx的内容全部删除。删除之后,依次执行quit命令和exit命令退出。

       在8180监控界面搜索kmq.log.dirs配置项查看相应的配置目录:

【TDH】Kafka的使用_第14张图片

        此处三个节点的配置目录均为/hadoop/kmq,三个节点均去到此目录下,将相关的topic的内容删除,如下图所示:

      至此,Kafka已经将topic xyx删除。

3.2 执行Kafka中Zookeeper的脚本进行删除

      在Kafka的bin目录下,执行如下命令,进入到Zookeeper交互界面:

./zookeeper-shell.sh node3:2181,node2:2181,node1:2181

【TDH】Kafka的使用_第15张图片

       删除操作跟2.1中的相同,在此不再赘述。

你可能感兴趣的:(Kafka,tdh)