Hadoop学习笔记(HDP)-Part.19 安装Kafka

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
简介: 01 关于HDP02 核心组件原理03 资源规划04 基础环境配置05 Yum源配置06 安装OracleJDK07 安装MySQL08 部署Ambari集群09 安装OpenLDAP10 创建集群11 安装Kerberos12 安装HDFS13 安装Ranger14 安装YARN+MR15 安装HIVE16 安装HBase17 安装Spark218 安装Flink19 安装Kafka20 安装Flume

目录
Part.01 关于HDP
Part.02 核心组件原理
Part.03 资源规划
Part.04 基础环境配置
Part.05 Yum源配置
Part.06 安装OracleJDK
Part.07 安装MySQL
Part.08 部署Ambari集群
Part.09 安装OpenLDAP
Part.10 创建集群
Part.11 安装Kerberos
Part.12 安装HDFS
Part.13 安装Ranger
Part.14 安装YARN+MR
Part.15 安装HIVE
Part.16 安装HBase
Part.17 安装Spark2
Part.18 安装Flink
Part.19 安装Kafka
Part.20 安装Flume

十九、安装Kafka

1.安装kafka

选择kafka进行安装
image.png

选择hdp03-05作为kafka的broker
image.png

Log directories:/data01/kafka-logs
image.png
image.png
image.png
image.png

2.安装kafka manager

下载链接:
https://gitcode.net/mirrors/yahoo/kafka-manager/-/archive/master/kafka-manager-master.tar.gz
在具有sbt编译环境的服务器(需要外网环境)上,对kafka-manager进行编译

unzip kafka-manager-2.0.0.2.zip -d /usr/local/

修改配置文件,/usr/local/kafka-manager-2.0.0.2/conf/application.conf
修改zookeeper连接地址

kafka-manager.zkhosts="hdp01.hdp.com:2181,hdp02.hdp.com:2181,hdp03.hdp.com:2181"

启动kafka-manager

cd /usr/local/kafka-manager-2.0.0.2/bin/
nohup bin/kafka-manager >/dev/null 2>&1 &
`

访问页面http://hdp01.hdp.com:9000
创建kafka集群
image.png

Cluster Name:hdp315,自定义名称
Cluster Zookeeper Hosts:hdp01.hdp.com:2181,hdp02.hdp02.com:2181,hdp03.hdp.com:2181

3.启用kerberos配置确认

(1)ZooKeeper开启kerberos认证

ZooKeeper账号信息

klist -ket /etc/security/keytabs/zk.service.keytab

image.png

jaas认证信息
/usr/hdp/3.1.5.0-152/zookeeper/conf/zookeeper_jaas.conf
/usr/hdp/3.1.5.0-152/zookeeper/conf/zookeeper_client_jaas.conf
com.sun.security.auth.module.Krb5LoginModule这个是类名,是kerberos对JAAS中的LoginModule的实现;required表示必须进行校验;其他几个是kerberos相关参数;后面会将该配置文件地址配置到jvm参数,其中的信息会被初始化到LoginContext上下文对象中。另外注意格式以及末尾的;分号。
image.png

开启sasl/kerberos认证,/usr/hdp/3.1.5.0-152/zookeeper/conf/zoo.cfg
image.png

(2)Kafka账号信息

Ambari自动创建的kafka账号信息如下

klist -kte /etc/security/keytabs/kafka.service.keytab

image.png

(3)Kafka服务端配置

jaas认证信息,/usr/hdp/3.1.5.0-152/kafka/config/kafka_jaas.conf
image.png

KafkaServer:Kafka服务端
KafkaClient:Kafka客户端
Client:ZooKeeper客户端
Kerberos认证有两种方式,即利用票证缓存和指定keytab。
要使用存储在票证缓存中的Kerberos票证:

sasl.jaas.config=com.sun.security.auth.module.Krb5LoginModule required useTicketCache=true;

要使用keytab:

sasl.jaas.config=com.sun.security.auth.module.Krb5LoginModule required useKeyTab=true keyTab="/etc/security/keytabs/alice.keytab" principal="alice@EXAMPLE.COM";

开启sasl/kerberos认证,/usr/hdp/3.1.5.0-152/kafka/config/server.properties
核心配置如下

advertised.listeners=SASL_PLAINTEXT://hdp03.hdp.com:6667
listeners=SASL_PLAINTEXT://hdp03.hdp.com:6667
sasl.enabled.mechanisms=GSSAPI
sasl.kerberos.service.name=kafka
sasl.mechanism.inter.broker.protocol=GSSAPI
security.inter.broker.protocol=SASL_PLAINTEXT

(4)Kafka客户端配置

jaas认证信息,/usr/hdp/3.1.5.0-152/kafka/config/kafka_client_jaas.conf
image.png

开启sasl/kerberos认证,新建文件/root/client.properties

security.protocol=SASL_PLAINTEXT
sasl.kerberos.service.name=kafka
sasl.mechanism=GSSAPI

4.Controller/Broker确认

Broker在启动时,会尝试去ZooKeeper中创建/controller节点。Kafka当前选举控制器的规则是:第一个成功创建/controller节点的Broker会被指定为控制器。同样,也会在zookeeper的/brokers/ids下创建一个临时znode。当broker宕机或主动关闭后,该broker与ZooKeeper的会话结束,这个znode会被自动删除。
zookeeper中还有一个与控制器有关的/controller_epoch持久节点,节点中存放的是一个整型的controller_epoch值(初始值为1)。controller_epoch用于记录控制器发生变更的次数,即记录当前的控制器是第几代控制器,也可以称为“控制器的纪元”。
在kafka集群中,首先启动hdp03节点,此时controller选举为hdp03,且broker下也只有hdp03,并且可以看到相关的详细信息。

ls /controller
get /controller

image.png

ls /brokers/ids
get /brokers/ids/1001

image.png

之后在kafka集群中增加节点hdp04,此时可以看到controller仍是hdp03,但broker下已经有hdp04节点。

ls /controller
get /controller

image.png

ls /brokers/ids
get /brokers/ids/1002

image.png

5.其他配置确认

(1)权限控制

Kafka本身自带有一个授权的类kafka.security.auth.SimpleAclAuthorizer,可在server.properties配置,分为Acl和Ranger两种方式。
Acl控制

authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer

Ranger控制

authorizer.class.name=org.apache.ranger.authorization.kafka.authorizer.RangerKafkaAuthorizer

当添加权限控制后,会在zk中创建2个节点
节点1:存储ACL信息节点kafka-acl
节点2:存储ACL变更信息节点kafka-acl-changes

(2)listeners/advertised.listeners

内网发布地址用listeners,对外网发布地址时用advertised.listeners

6.常用指令

创建topic

./kafka-topics.sh --create --zookeeper hdp01.hdp.com:2181,hdp02.hdp.com:2181,hdp03.hdp.com:2181 --replication-factor 3 --partitions 3 --topic test-topic

partitions指定topic分区数,控制topic将分片成多少个log。可以显示指定,如果不指定则会使用broker(server.properties)中的num.partitions配置的数量
虽然增加分区数可以提供kafka集群的吞吐量、但是过多的分区数或者或是单台服务器上的分区数过多,会增加不可用及延迟的风险。因为多的分区数,意味着需要打开更多的文件句柄、增加点到点的延时、增加客户端的内存消耗;分区数也限制了consumer的并行度,即限制了并行consumer消息的线程数不能大于分区数;分区数也限制了producer发送消息是指定的分区。如创建topic时分区设置为1,producer发送消息时通过自定义的分区方法指定分区为2或以上的数都会出错的;这种情况可以通过alter –partitions 来增加分区数。
replication-factor指定topic每个分区的副本数,控制消息保存在几个broker(服务器)上,一般情况下等于broker的个数。如果没有在创建时显示指定或通过API向一个不存在的topic生产消息时会使用broker(server.properties)中的default.replication.factor配置的数量。
查看所有topic列表

./kafka-topics.sh  --zookeeper hdp01.hdp.com:2181,hdp02.hdp.com:2181,hdp03.hdp.com:2181 --list

查看指定topic信息

./kafka-topics.sh --zookeeper hdp01.hdp.com:2181,hdp02.hdp.com:2181,hdp03.hdp.com:2181 --describe --topic test-topic

控制台向topic生产数据

./kafka-console-producer.sh --broker-list hdp03.hdp.com:6667,hdp04.hdp.com:6667,hdp05.hdp.com:6667 --topic test-topic

控制台消费topic的数据

./kafka-console-consumer.sh --zookeeper hdp01.hdp.com:2181,hdp02.hdp.com:2181,hdp03.hdp.com:2181 --topic test-topic --from-beginning

增加topic分区数

./kafka-topics.sh --zookeeper hdp01.hdp.com:2181,hdp02.hdp.com:2181,hdp03.hdp.com:2181 --alter --topic test-topic --partitions 10

删除topic

./kafka-topics.sh --delete --zookeeper hdp01.hdp.com:2181,hdp02.hdp.com:2181,hdp03.hdp.com:2181 --topic test-topic

只会删除zookeeper中的元数据,消息文件须手动删除
在zookeeper中,以kafka登录后删除对应的文件

kinit -kt /etc/security/keytabs/kafka.service.keytab kafka/hdp03.hdp.com@HDP315.COM
/usr/hdp/3.1.5.0-152/zookeeper/bin/zkCli.sh -server hdp01:2181,hdp02:2181,hdp03:2181
rmr /admin/delete_topics/test-topic
rmr /brokers/topics/test-topic

查看topic消费进度

./kafka-run-class.sh kafka.tools.ConsumerOffsetChecker --group group1
显示出consumer group的offset情况,必须参数为--group,不指定--topic,默认为所有topic

查看topic某分区偏移量最大(小)值

./kafka-run-class.sh kafka.tools.GetOffsetShell --topic test-topic --time -1 --broker-list hdp03.hdp.com:6667,hdp04.hdp.com:6667,hdp05.hdp.com:6667 --partitions 0

time为-1时表示最大值,time为-2时表示最小值
列出所有topic的用户组列表

./kafka-consumer-groups.sh --bootstrap-server hdp03.hdp.com:6667,hdp04.hdp.com:6667,hdp05.hdp.com:6667 --list

7.实验:发布订阅

以hdp03作为producer,hdp04作为consumer
【hdp03】上执行启动生产者,并输入随机字符

kinit -kt /etc/security/keytabs/kafka.service.keytab kafka/hdp03.hdp.com@HDP315.COM
./kafka-console-producer.sh --broker-list hdp03.hdp.com:6667,hdp04.hdp.com:6667,hdp05.hdp.com:6667 --topic test-topic --producer.config /root/producer.properties

【hdp04】上执行启动消费者,观察hdp03上输入字符后在hdp04上显示的内容

kinit -kt /etc/security/keytabs/kafka.service.keytab kafka/hdp03.hdp.com@HDP315.COM
./kafka-console-producer.sh --broker-list
./kafka-console-consumer.sh --bootstrap-server hdp03.hdp.com:6667 --topic test-topic --consumer.config /root/consumer.properties
相关文章
|
3月前
|
消息中间件 Ubuntu Java
在Ubuntu 18.04上安装Apache Kafka的方法
在Ubuntu 18.04上安装Apache Kafka的方法
181 0
|
1月前
|
SQL 分布式计算 Hadoop
Hadoop-12-Hive 基本介绍 下载安装配置 MariaDB安装 3台云服务Hadoop集群 架构图 对比SQL HQL
Hadoop-12-Hive 基本介绍 下载安装配置 MariaDB安装 3台云服务Hadoop集群 架构图 对比SQL HQL
60 3
|
16天前
|
消息中间件 Ubuntu Java
Ubuntu系统上安装Apache Kafka
Ubuntu系统上安装Apache Kafka
|
2月前
|
消息中间件 Java Linux
linux 之centos7安装kafka;;;;;待补充,未完成
linux 之centos7安装kafka;;;;;待补充,未完成
|
3月前
|
分布式计算 资源调度 Hadoop
centos7二进制安装Hadoop3
centos7二进制安装Hadoop3
|
3月前
|
分布式计算 Ubuntu Hadoop
在Ubuntu 16.04上如何在独立模式下安装Hadoop
在Ubuntu 16.04上如何在独立模式下安装Hadoop
35 1
|
4月前
|
消息中间件 Java Kafka
kafka Linux环境搭建安装及命令创建队列生产消费消息
kafka Linux环境搭建安装及命令创建队列生产消费消息
103 4
|
3月前
|
消息中间件 存储 Ubuntu
在Ubuntu 14.04上安装Apache Kafka的方法
在Ubuntu 14.04上安装Apache Kafka的方法
20 0
|
3月前
|
消息中间件 Java Kafka
Docker 安装 kafka
Docker 安装 kafka
90 0
|
3月前
|
消息中间件 Kafka Apache
部署安装kafka集群
部署安装kafka集群