当前位置: 首页 > news >正文

猿创征文|大数据之Kafka简介+基操

Kafka

什么是消息队列?

消息和队列的组合体,就叫消息队列,消息指的就是我们在这一段生产的数据信息,已经消费那一端产生的消费数据信息,而中间传输的管道就叫队列,全部放在一起就组成了消息队列,消息队列分为两种类型,点对点,发布订阅两种,功能可以实现数据的峰值处理,数据解耦,数据的缓存,数据的异步通信等。

Kafka简介

Kafka指的就是消息队列,也叫消息中间件,主要是做数据的传输使用,对接生产者和消费者两端数据信息,然后获取数据保存数据,将数据按照管道进行传输。

三大特点
  • 高吞吐量

可以满足每秒百万级别消息的生产和消费————生产消费

  • 持久性

有一套完善的消息存储机制,确保数据的高效安全的持久化————中间存储

  • 分布式

基于分布式的扩展和容错机制;kafka的数据都会复制到几台服务器上。当某一台故障失效时,生产者和消费者转而使用其他的机器——整体

  • 健壮性
核心概念

producer(生产者):表示数据生产的一端,产生数据到Kafka集群;

consumer(消费者):表示从Kafka集群中;拉去数据进行数据消费处理;

Broker(节点服务):一个Broker表示一个Kafka的服务节点(Broker是可以用ID表示的,但是不重复);

Topic(主题):创建在Broker下面的存储对象,类似于表的意思,可以创建N多个Topic;

Partition(分区):存在Topic下面的分区目录,主要是保存分区之间的数据;

Message(数据):每条消息信息,分别存在每个Partition中。

Kafka 的基本操作

topic的操作

topic用于存储各种类型的数据,关于topic的操作脚本:Kafka-topics.sh

创建topic
kafka-topics.sh --create \
--topic hadoop \	##指定要创建的topic的名称
--zookeeper localhost:2181/kafka \	##指定kafka关联的zk地址
--partitions 3 \	##指定改topic的分区个数
--replication-factor 3	##指定副本因子

注意:指定副本因子的时候,不能大于broker实例个数,否则报错!

查看topic的列表
kafka-topics.sh --list --zookeeper localhost:2181/kafka hadoop
查看每一个topic的信息
kafka-topics.sh --describe --topic hadoop --zookeeper localhost:2181/kafka
Topic: hadoop   PartitionCount: 3       ReplicationFactor: 3    Configs:
        Topic: hadoop   Partition: 0    Leader: 1       Replicas: 1,2,3 Isr: 1,2,3
        Topic: hadoop   Partition: 1    Leader: 2       Replicas: 2,3,1 Isr: 2,3,1
        Topic: hadoop   Partition: 2    Leader: 3       Replicas: 3,1,2 Isr: 3,1,2

Partition:当前topic对应的分区编号

Replicas:副本因子,当前kafka对应的partition所在的broker实例的broker.id的列表

Leader:该partition的所有副本中的leader领导者,处理所有kafka该partition读写请求

ISR:该partition的存活的副本对应的broker实例的broker.id的列表

修改一个topic
kafka-topics.sh --alter --topic hadoop --partitions 4 --zookeeper localhost:2181/kafka

注意:partition个数只能增加,不能减少;

删除一个topic
kafka-topics.sh --delete --topic hadoop --zookeeper localhost:2181/kafka
列举所有topic
kafka-topics.sh --list --zookeeper localhost:2181/kafka
生产数据
kafka-console-producer.sh \
--topic hadoop \
--broker-list localhost1:9092,host2:9092,host3:9092
消费数据
kafka-console-consumer.sh --topic hadoop --bootstrap-server localhost1:9092,host2:9092,host3:9092

如果在生产者生产的时候没有启动消费者,是没有数据的,原因在于消费者后于生产者启动,在消费者启动之前生产者生产的数据不能直接获取。

如果想要获取消费者启动之前生产的数据,可以添加一个参数–from-beginning。

kafka-console-consumer.sh --topic hadoop --bootstrap-server localhost1:9092,host2:9092,host3:9092 --from-beginning

注意:如果发送数据接收不到,那么可能是你的集群内部传输有问题,需要修改配置文件server.properties(每台机器都需要改成自己的ip地址)

advertised.listeners=PLAINTEXT://hostname:9092

kafka的数据消费总结

消费者组和分区之间的关系:消费者组在消费数据的时候,同一时间不能由多个消费者同时消费一个分区的数据,可以允许不同消费者组同一时间有多个消费者共同消费一个分区的数据,因为消费者组是互相不影响的,并且我们在消费的过程中需要设置合理的消费者数量,最好和分区数相同。

说明:生产者生产数据的方式是随机生成的,数据随机分发每个分区内,没有任何的原则(早期的时候是使用轮询的方式来分发数据,新版中是随机但是可以改。)

相关文章:

  • Shiro授权--注解式开发
  • CREO:CREO软件之零件【编辑】之修饰、用户定义特征的简介及其使用方法(图文教程)之详细攻略
  • Java并发 | 12.[方法] interrupt( )打断
  • SpringBoot 事务开发代码及注意事项
  • onnx: step = 1 is currently not supported
  • webpack原理篇(六十五):实战开发一个压缩构建资源为zip包的插件
  • 数学建模学习(97):花授粉算法(FPA)寻优
  • 鲈鱼的面试题库+答案
  • CREO:CREO软件之零件【工具(调查/模型意图/实用工具)】、【视图(可见性/方向/模型显示/显示/窗口)】的简介及其使用方法(图文教程)之详细攻略
  • 【单细胞高级绘图】09.细胞通讯_两组比较_连线图
  • Tensorflow笔记——基于Mnist数据集图片分类的神经网络
  • 情侣积分微信小程序零基础开发教程(附代码及开发指南)
  • 为什么重写equals方法必须也要重写hashCode方法
  • 只要十分钟!带你了解Redis Cluster
  • CREO:CREO软件之零件【造型】样式栏之操作、平面、曲线、曲面、分析、优先选项的简介及其使用方法(图文教程)之详细攻略
  • 【刷算法】从上往下打印二叉树
  • Apache Spark Streaming 使用实例
  • gulp 教程
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • iOS 系统授权开发
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • Java,console输出实时的转向GUI textbox
  • JavaScript 奇技淫巧
  • Java精华积累:初学者都应该搞懂的问题
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • mysql外键的使用
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • rc-form之最单纯情况
  • yii2中session跨域名的问题
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 力扣(LeetCode)965
  • 容器服务kubernetes弹性伸缩高级用法
  • 入手阿里云新服务器的部署NODE
  • 我的业余项目总结
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​力扣解法汇总946-验证栈序列
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • #ubuntu# #git# repository git config --global --add safe.directory
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • (09)Hive——CTE 公共表达式
  • (2)(2.10) LTM telemetry
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • .NET delegate 委托 、 Event 事件
  • .NET/C# 避免调试器不小心提前计算本应延迟计算的值
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)
  • @autowired注解作用_Spring Boot进阶教程——注解大全(建议收藏!)
  • [ 云计算 | AWS 实践 ] Java 如何重命名 Amazon S3 中的文件和文件夹
  • [20140403]查询是否产生日志
  • [Android]通过PhoneLookup读取所有电话号码