Kafka的基本使用(一)

一、Kakfa介绍

官网:http://kafka.apache.org/

中文:http://kafka.apachecn.org/

1.1Kafka是什么?

Kafka一个高吞吐量的分布式发布订阅消息系统。

1.2Kafka干什么?

从官网中我们了解到Kafka主要有两类应用

1)实时流处理管道,相当于message queue,作为消息中间件,目前被广泛使用

2)实时流式应用程序,这是Kafka致力于发展的方向,但是目前广泛使用的流式平台是Spark Streaming和Flink。

1.3为什么要使用Kafka

举个例子,小龙女做馒头给杨过吃

小龙女:生产者

杨过:    消费者

1)正常情况下:生产一个,消费一个

2)其他情况:

        a) 小龙女一直生产,杨过吃到某一个馒头时,卡住了(机器故障),后面生产的馒头就丢失了

        b) 小龙女做馒头的速度快,杨过来不及吃,馒头就丢了。

        ==>这时候需要拿一个篮子(Kafka),馒头做好以后先放到篮子里,要吃的话去篮子里面取

        kafka就和这个例子中的篮子作用一样,起一个暂存保管的作用。对于流式处理来说,起消息缓冲的作用,让下游可以稳稳的消费。

        以上说了Kafka的主要功能,当然作为一个成熟的大数据框架,Kafka还提供了一些必须的特性:

         1)可水平扩展:篮子满了,装不下了,多准备几个篮子

         2)高可用:有很多个篮子,一个二个出现问题,不影响

         3)速度快:读写速度快

         并且已被广泛应用。

1.4 架构

producer:生产者(生产馒头)

consumer:消费者(吃馒头)

broker:篮子

topic:主题(打标签,用来分类,甜的还是咸的)

二、快速开始

参考连接:http://kafka.apache.org/uses

2.1 前置

1)JDK

2)Zookeeper

2.2安装配置

以3台机器为例,修改 config/server.properties

# 集群中每个kafka的id,唯一性。我的配置 master=0 slave1=1 slave2=2
broker.id=0 
# 伪分布式需要配置不同端口
# advertised.listeners=PLAINTEXT://master:9092
#kafka的日志目录,其实保存的是消息
log.dirs=/opt/app/kafka_2.11-2.2.1-kafka-4.1.0/kafka-logs
# 默认数据保留7天
# log.retention.hours=168
# segment 默认大小1G,数据按分区划分,分区细化为segment
# log.segment.bytes=1073741824
# zookeeper的地址
zookeeper.connect=master:2181,slave1:2181,slave2:2181

2.3常用命令(以Kafka2.2为例,一定要根据自己的版本去官网查看命令或则--help)

启动

# 每台机器,前提ZK已启动
> bin/kafka-server-start.sh [-daemon] config/server.properties

创建topic

# topic = test  3个分区,3份副本
> bin/kafka-topics.sh --create --bootstrap-server master:9092,slave1:9092,slave2:9092 --replication-factor 3 --partitions 3 --topic test

查看所有的topic

> bin/kafka-topics.sh --list --bootstrap-server master:9092,slave1:9092,slave2:9092
test

查看指定的topic信息

> bin/kafka-topics.sh --describe --bootstrap-server master:9092,slave1:9092,slave2:9092 --topic test
Topic:test      PartitionCount:3        ReplicationFactor:3     Configs:
        Topic: test     Partition: 0    Leader: 0       Replicas: 0,1,2 Isr: 0,1,2
        Topic: test     Partition: 1    Leader: 1       Replicas: 1,2,0 Isr: 1,2,0
        Topic: test     Partition: 2    Leader: 2       Replicas: 2,0,1 Isr: 2,0,1

发送消息

> bin/kafka-console-producer.sh --broker-list  master:9092,slave1:9092,slave2:9092 --topic test
This is a message
This is another message

接收消息

> bin/kafka-console-consumer.sh --bootstrap-server master:9092,slave1:9092,slave2:9092 --topic test --from-beginning
This is a message
This is another message

 

2.4基础概念

producer: 生产者例如Flume

consumer:消费者例如 Spark Streaming 、Flink

broker:消息处理节点

topic:主题,用来分类

partition:是topic物理的分组,partition是一个【有序的队列】,其实就是一个liunx文件夹,命名方式topic-序号

replication:副本数,就是数据保存几份,和HDFSblock一样,保证高可用

leader:读写分区节点

Isr:备胎列表,时刻等着成为leader

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值