大数据|大数据之Kafka介绍

概念 Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副 本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以 实时的处理大量数据以满足各种需求场景:比如基于hadoop的批处理系统、低延迟 的实时系统、storm/Spark流式处理引擎,web/nginx日志、访问日志,消息服务 等等,用scala语言编写,Linkedin于2010年贡献给了Apache基金会并成为顶 级开源 项目。
介绍 Kafka的特性:
高吞吐量、低延迟:
kafka每秒可以处理几十万条消息,它的延迟最低只有几 毫秒,每个topic可以分多个partition, consumer group 对partition进行 consume操作。
可扩展性:
【大数据|大数据之Kafka介绍】kafka集群支持热扩展
持久性、可靠性:
消息被持久化到本地磁盘,并且支持数据备份防止数据丢失
容错性:
允许集群中节点失败(若副本数量为n,则允许n-1个节点失败)
高并发:
支持数千个客户端同时读写
Kafka的使用场景:
日志收集:
一个公司可以用Kafka可以收集各种服务的log,通过kafka以统 一接口服务的方式开放给各种consumer,例如hadoop、Hbase、Solr等。
消息系统:
解耦和生产者和消费者、缓存消息等。
用户活动跟踪:
Kafka经常被用来记录web用户或者app用户的各种活动, 如浏览网页、搜索、点击等活动,这些活动信息被各个服务器发布到kafka 的topic中,然后订阅者通过订阅这些topic来做实时的监控分析,或者装载 到hadoop、数据仓库中做离线分析和挖掘。
运营指标:
Kafka也经常用来记录运营监控数据。包括收集各种分布式应用的 数据,生产各种操作的集中反馈,比如报警和报告。
流式处理:
比如spark streaming和storm
基本工作原理图 大数据|大数据之Kafka介绍
文章图片

名词解释 Kafka中发布订阅的对象是topic。我们可以为每类数据创建一个topic,把向topic发布消息的客户端称作producer,从topic订阅消息的客户端称作consumer。Producers和consumers可以同时从多个topic读写数据。一个kafka集群由一个或多个broker服务器组成,它负责持久化和备份具体的kafka消息。
Broker:
Kafka节点,一个Kafka节点就是一个broker,多个broker 可以组成一个Kafka集群。
Topic:
一类消息,消息存放的目录即主题,例如page view日志、click 日志等都可以以topic的形式存在,Kafka集群能够同时负责多 个topic的分发。
Partition:
topic物理上的分组,一个topic可以分为多个partition, 每个partition是一个有序的队列。
Segment:
partition物理上由多个segment组成,每个Segment存 着message信息。
Producer:
生产message发送到topic。
Consumer:
订阅topic消费message, consumer作为一个线程来消费。
Consumer Group:
一个Consumer Group包含多个consumer, 这个是预先在配置文件中配置好的。各个consumer(consumer 线程)可以组成一个组(Consumer group ),partition中的每个message只能被组(Consumer group ) 中的一个consumer(consumer 线程 )消费,如果一个message可以被多个consumer(consumer 线程 ) 消费的话,那么这些consumer必须在不同的组。Kafka不支持一个partition中的message由两个或两个以上的consumer thread来处理,即便是来自不同的consumer group的也不行。它不能像AMQ那样可以多个BET作为consumer去处理message,这是因为多个BET去消费一个Queue中的数据的时候,由于要保证不能多个线程拿同一条message,所以就需要行级别悲观所(for update),这就导致了consume的性能下降,吞吐量不够。而kafka为了保证吞吐量,只允许一个consumer线程去访问一个partition。如果觉得效率不高的时候,可以加partition的数量来横向扩展,那么再加新的consumer thread去消费。这样没有锁竞争,充分发挥了横向的扩展性,吞吐量极高。这也就形成了分布式消费的概念。
Kafka安装(要先安装Zookeeper,Kafka由它管理) 安装网址:
CentOS7 64位虚拟机安装Kafka完整教程_顶尖高中生的博客-CSDN博客

    推荐阅读