主页 > 新闻资讯 > 大数据学习:Kafka主题入门基础

大数据学习:Kafka主题入门基础

作者:张老师 浏览次数: 2020-12-09 16:58
在Kafka框架当中,主题和分区是两个非常重要的核心概念,在入门之初,对于核心概念一定是要理解透彻,才能在后续的学习当中,水到渠成地去理解其中的运行机制和原理。今天的大数据学习分享,我们就来讲讲Kafka主题这个重要概念。

大数据学习:Kafka主题入门基础

在Kafka当中,主题作为消息的归类,可以再细分为一个或多个分区,分区也可以看作对消息的二次归类。分区的划分不仅为Kafka提供了可伸缩性、水平扩展的功能,还通过多副本机制来为Kafka提供数据冗余以提高数据可靠性。

从Kafka的底层实现来说,主题和分区都是逻辑上的概念,分区可以有一至多个副本,每个副本对应一个日志文件,每个日志文件对应一至多个日志分段(LogSegment),每个日志分段还可以细分为索引文件、日志存储文件和快照文件等。

主题的管理

主题的管理包括创建主题、查看主题信息、修改主题和删除主题等操作。可以通过Kafka提供的kafka-topics.sh脚本来执行这些操作,这个脚本位于$KAFKA_HOME/bin/目录下,其核心代码仅有一行,具体如下:

exec$(dirname$0)/kafka-run-class.sh kafka.admin.TopicCommand"$@"

1、创建主题

如果broker端配置参数auto.create.topics.enable设置为true(默认值就是true),那么当生产者向一个尚未创建的主题发送消息时,会自动创建一个分区数为num.partitions(默认值为1)、副本因子为default.replication.factor(默认值为1)的主题。

同一个分区中的多个副本必须分布在不同的broker中,这样才能提供有效的数据冗余。对于示例中的分区数为4、副本因子为2、broker数为3的情况下,按照2、3、3的分区副本个数分配给各个broker是最优的选择。再比如在分区数为3、副本因子为3,并且broker数同样为3的情况下,分配3、3、3的分区副本个数给各个broker是最优的选择,也就是每个broker中都拥有所有分区的一个副本。

2、分区副本的分配

这里的分区分配是指为集群制定创建主题时的分区副本分配方案,即在哪个broker中创建哪些分区的副本在创建主题时,如果使用了replica-assignment参数,那么就按照指定的方案来进行分区副本的创建;如果没有使用replica-assignment参数,那么就需要按照内部的逻辑来计算分配方案了。

使用kafka-topics.sh脚本创建主题时的内部分配逻辑按照机架信息划分成两种策略:未指定机架信息和指定机架信息。如果集群中所有的broker节点都没有配置broker.rack参数,或者使用disable-rack-aware参数来创建主题,那么采用的就是未指定机架信息的分配策略,否则采用的就是指定机架信息的分配策略

3、查看主题

kafka-topics.sh脚本有5种指令类型:create、list、describe、alter和delete。其中list和describe指令可以用来方便地查看主题信息,通过list指令可以查看当前所有可用的主题。

4、修改主题

当一个主题被创建之后,依然允许我们对其做一定的修改,比如修改分区个数、修改配置等,这个修改的功能就是由kafka-topics.sh脚本中的alter指令提供的。

5、删除主题

如果确定不再使用一个主题,那么最好的方式是将其删除,这样可以释放一些资源,比如磁盘、文件句柄等。kafka-topics.sh脚本中的delete指令就可以用来删除主题,比如删除一个主题topic-delete.

关于大数据学习,Kafka主题入门基础,以上就为大家做了简单的介绍了。Kafka在大数据平台当中,作为消息系统的使用度非常高,因此学习阶段也要给予足够的重视才行。成都加米谷大数据,专业大数据培训机构,大数据开发、数据分析与挖掘,本月正在招生中,课程大纲及试学视频,可联系客服领取!
热点排行
推荐文章
立即申请>>