kafka基础概念及安装使用
2018-01-23 22:40
337 查看
kafka基础概念及安装使用
概念
kafka是一款开源、轻量级、分布式、可分区、具有复制备份replicated、基于zookeeper协调管理的分布式流平台的消息系统主题(topic), kafka将一组消息抽象归纳为一个主题,一个主题是消息的一个分类;生产者将消息发送到特定主题,消费者订阅主题或主题某些分区进行消费
消息: 通信的基本单位,由一个固定长度的消息头+可变长度消息体组成
分区(partition):kafka将一组消息归纳为一个主题,每个主题又被分为一个或多个分区,每个分区由一系列有序、不可变消息组成,是一个有序队列,可修改,分区数理论越多吞吐量越大
副本(replica):一个分区可以有一个至多个副本,一个leader副本(负责处理客户端读写请求),其它为follow副本(负责同步数据),每个副本逻辑上抽象为一个日志(log)对象;分区副本和日志对象是一一对应
topic kafka对消息保存时根据Topic进行归类
kafka只能保证一个分区内消息的有序性,不能保证夸分区顺序性。每条消息追加到相应分区,是顺序写磁盘,效率高
偏移量:发布到分区的消息会被追加到日志文件,每条消息在日志文件中的位置对于一个按序递增偏移量,偏移量是一个分区下严格有序的逻辑值,并按序消费,不允许随机读写
日志段:一个日志被华为多个日志段,日志对象分片的最小单位
代理(broker):一个kafka实例,对应一个集群不用的唯一标识id
生产者(producer)将消息发送给代理
消费者和消费组,每个消费者都属于一个特定消费组,group.id配置消费组id,不指定消费组则为默认消费组,client.id表示消费者id;消费者和消费组用来实现广播和单播(同一个主题的一条消息,只能被同一个消费组下的一个消费者消费,不同消费组消费者可同时消费该消息)
每一个group中的每一个consumer实例只会消费某一个或多个特定分区的数据,一个分区同一个时刻也只能被某一个特定的consumer消费,这样导致一个consumer group里面consumer无法均衡,举个例子:如果一个group中消费者少于分区数量,那么会有消费者会消费同同topic多个分区,如果多于,会有部分消费者无法消费topic下任何消息。如果任何一个消费者离开,会触发从新平衡,从新分配
安装(utuntu16)
zookeeperdocker pull wurstmeister/zookeeper
kafka
docker pull wurstmeister/kafka
使用
运行zk容器docker run -d --name zookeeper -p 2181:2181 --volume /home/data:/home/data -t wurstmeister/zookeeper
运行kafka容器
docker run -d --name kafka -p 9092:9092 \ --link zookeeper \ --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 \ --env KAFKA_ADVERTISED_HOST_NAME=kafka所在宿主机的IP \ --env KAFKA_ADVERTISED_PORT=9092 \ --volume /home/data:/home/data \ wurstmeister/kafka docker run -d --name kafka -p 9092:9092 --link zookeeper --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 --env KAFKA_ADVERTISED_HOST_NAME=192.168.237.129 --env KAFKA_ADVERTISED_PORT=9092 --volume /home/data:/home/data -t wurstmeister/kafka
- 进入kafka终端
docker exec -it ${CONTAINER ID} /bin/bash docker exec -it 544d7ed3d793 /bin/bash
测试启动生产者
cd /opt/kafka_2.12-1.0.0 bin/kafka-topics.sh --create --zookeeper zookeeper:2181 --replication-factor 1 --partitions 1 --topic test
查看当前的 topic 列表
bin/kafka-topics.sh --list --zookeeper zookeeper:2181
运行一个消息生产者
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
运行一个消息消费者
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
相关文章推荐
- Kafka笔记基础概念和安装配置
- Hive基础(1)概念、安装、使用笔记
- Hive基础概念、安装部署与基本使用
- 大数据实验室(大数据基础培训)——Kafka的安装、配置及基础使用
- Subversion基础:概念、安装、配置和基本操作
- Eclipse基础--使用links方式安装Eclipse插件
- Eclipse基础--使用links方式安装Eclipse插件
- Eclipse基础--使用links方式安装Eclipse插件
- Eclipse基础--使用links方式安装Eclipse插件
- Eclipse基础--使用links方式安装Eclipse插件
- Eclipse基础--使用links方式安装Eclipse插件
- Eclipse基础--使用links方式安装Eclipse插件
- Android的intent:基础概念以及显示/隐式使用Intent && 通过intent返回结果
- 使用UML的基础平台的设计之二(概念模型)
- Eclipse基础--使用links方式安装Eclipse插件
- Linux基础知识--(04)使用虚拟机安装CentOS 5.3
- Eclipse基础--使用links方式安装Eclipse插件
- Eclipse基础--使用links方式安装Eclipse插件
- Eclipse基础--使用links方式安装Eclipse插件
- 使用Oracle可传输表空间的特性复制数据(1)基础概念