Kafka入门教程

简介

Kafka是一个分布式发布 - 订阅消息系统和一个强大的队列,可以处理大量的数据,并使您能够将消息从一个端点传递到另一个端点。 Kafka适合离线和在线消息消费。 Kafka消息保留在磁盘上,并在集群内复制以防止数据丢失。 Kafka构建在ZooKeeper同步服务之上。 它与Apache Storm和Spark非常好地集成,用于实时流式数据分析。

Kafka的优点

  • 高吞吐率:在廉价的商用机器上单机可支持每秒百万条消息的读写
  • 消息持久化:所有消息均被持久化到磁盘,无消息丢失,支持消息重放
  • 完全分布式:Producer、Broker、Consumer均支持水平扩展
  • 同时适应在线流处理和离线批处理

Kafka的应用场景

  • 日志收集:Kafka可以收集各种服务的log,通过kafka以统一接口服务的方式开放给各种consumer
  • 消息系统:解耦生产者和消费者、缓存消息等
  • 监控处理:kafka也通常用来操作监控数据。包括收集各种分布式应用的数据,生产各种操作的集中反馈,比如报警和报告
  • 流式处理:比如spark streaming和storm;Kafka的强耐久性在流处理的上下文中也非常有用

基本概念介绍

  • Broker:负责维护发布数据的简单系统,即一个kafka;多个Broker构成一个kafka cluster
  • Producer:发送给一个或多个Kafka主题的消息的发布者,通过Broker发布新的消息到Topic中
  • Consumer:Kafka的真实消费者,从某个Topic中获取消息
  • Topic:特定类别的消息流
  • Partition:它是 Topic 在物理上的分组, 多个 Partition 会被分散地存储在不同的 Kafka 节点上; 单个 Partition 的消息是保证有序的, 但整个 Topic 的消息就不一定是有序的
  • Segment:包含消息内容的指定大小的文件, 由 index 文件和 log 文件组成; 一个 Partition 由多个 Segment 文件组成
  • Offset:Segment 文件中消息的索引值, 从 0 开始计数
  • Replicas of partition:副本只是一个分区的"备份"。它们用于防止数据丢失。每个 Partition 都会有 N 个完全相同的冗余备份, 这些备份会被尽量分散存储在不同的机器上

Kafka集群架构

在这里插入图片描述

Kafka安装使用

安装JDK:

yum install -y java-1.8.0-openjdk-devel.x86_64

安装zookeeper:

# 下载安装包、解压
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
tar -zxf zookeeper-3.4.13.tar.gz -C /opt/
# 启动Zookeeper
sh /opt/zookeeper-3.4.13/bin/zkServer.sh start-foreground conf/zoo_sample.cfg
# 查看zookeeper状态
sh /opt/zookeeper-3.4.13/bin/zkServer.sh status /opt/zookeeper-3.4.13/conf/zoo_sample.cfg 
	ZooKeeper JMX enabled by default
	Using config: conf/zoo_sample.cfg
	Mode: standalone

安装Kafka

# 下载安装包、解压
wget http://mirrors.shuosc.org/apache/kafka/2.1.1/kafka_2.11-2.1.1.tgz
tar -zxf kafka_2.11-2.1.1.tgz -C /opt
# 启动kafka的时候需要先创建kafka的数据目录,默认是/tmp/kafka-logs
mkdir -p /tmp/kafka-logs
# 启动kafka
sh /opt/kafka_2.11-2.1.1/bin/kafka-server-start.sh /opt/kafka_2.11-2.1.1/config/server.properties
# 检验Kafka
——> jps
	  6224 QuorumPeerMain
	  6291 Kafka
	  10101 Jps

Kafka操作练习

# 创建Topic
sh /opt/kafka_2.11-2.1.1/bin/kafka-topics.sh --zookeeper localhost:2181 --create --topic test --partitions 3 --replication-factor 1
# 查看所有Topic
sh /opt/kafka_2.11-2.1.1/bin/kafka-topics.sh --zookeeper localhost:2181  --list
# 查看某个Topic的详细信息
sh /opt/kafka_2.11-2.1.1/bin/kafka-topics.sh --zookeeper localhost:2181 --describe --topic test
# 删除Topic
sh /opt/kafka_2.11-2.1.1/bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic test
# 启动producer发送消息
sh /opt/kafka_2.11-2.1.1/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test1
  启动之后可以输入消息内容
# 启动Consumer消费消息
sh /opt/kafka_2.11-2.1.1/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test1 --from-beginning
  可以看到刚刚producer生产的消息内容

另附加一个由于kafka版本不同可能会误导的问题:
使用命令bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning启动消费者时,会报错zookeeper is not a recognized option
原因是在新版本中这个启动方式已经被删除,新版本的启动方式为bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test1 --from-beginning

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值