Hadoop-No.16之Kafka
Apache Kafka 是一種发布-订阅消息的分布式系统.能够将消息归类为不同主题.应用程序能在Kafka上发布信息,或订阅主题进而接受特定主题下发布的消息.Producer发布消息,而Consumer收集并处理消息.作为分布式系统,Kafka在集群中运行,每个节点被称为Broker.
Kafka维护每个主题的分区日志.消息会发布到相应的主题中,每个分区都是一个有序的消息子集.同一个主题的多个分区能够通过集群中的多个Broker传送,这种方法提高了主题的容量与吞吐量.使其超越了单一机器所能提供的容量与吞吐量.消息在分区内被有序排列,每个消息都包含一个特定的偏移量.Kafka中消息可以通过一个包含主题,分区以及偏移量的组合来确定.Producer能够根据消息的主键选择消息应该写入哪一个分区,也能够简单的用循环的方式,让消息分布在各分区之间.
Consumer会在Consumer组中注册,每个组包括一个或多个Consumer,每个Consumer读取一个或多个主题分区.每组中的每条消息只能传送给一个Consumer.但是,如果多个组订阅了同一个主题,那么每个组都将得到所有的消息.一个组中包含多个Consumer有助于获得加载平衡(可以支持高于单个Consumer处理能力的吞吐量)与高可用性(如果一个Consumer出现错误,它所读取的分区将重新分配给组中其他Consumer).
一个Consumer或Consumer组将读取其订阅的所有数据,所以如果一个应用只关注一个数据子集,那么就应该讲该数据自己与其他数据放在两个不同的主题中.如果多个主题总是一起读取和处理,那么应该讲他们归在同一个主题中.
不过,分区是并行化处理的主要的单元.每个分区只能配对一个服务器,但是一个主题可以与分区中和同样大.另外,每个分区的信息最多由同一组中的一个Consumer读取,所以尽管可以通过增加Consumer数量来增加读取吞吐量,但其实主题中可用分区的数量会带来限制.因此,建议每个节点上分区的数量至少与集群中服务器的数量一样多,为以后几年的增长做准备.实际上,每个主题可以包含几百个分区,这了并不存在任何缺陷.
Kafka 存储了预先配置时长范围内(通常为几周或几个月)的所有消息,而且对于每个Consumer读取的信息只保留最后一条消息的偏移量.因此,用户可以从最近一次正确的偏移量开始,重新读取主题分区,进而从错误中回复.用户也可以将消息队列回溯,然后重新读取信息.在解决bug以及其他问题是,”回溯”特点会非常有用.如果只存储一段时间内的所有消息,不跟踪记录每个Consumer和消息的确认,那么Kafka能够扩展到10000多个Consumer,支持他们的非频繁批量读(如MapReduce任务),甚至是在吞吐量非常高的情况下,也能保持较短的延迟.传统的信息Broker则跟踪用户的确认信息,通常需要在内存中存储所有未收到答复的消息.如果用户数量比较多,或者读取批数据的用户数量比较多,就会导致交换,使性能严重降低.
以下为Kafka的常见用途:
- Kafka能取代应用架构中的传统信息Broker或者信息队列,用于分离服务
- Kafka最常用于高速活动流,如网站点击流(website clickstream), 度量(metrics)以及日志(logging)
- Kafka也常用于流数据的处理.它可以同时用作信息流的来源和输送目位置(数据流任务在目的位置记录其他系统读取的结果).
Hadoop-No.16之Kafka的更多相关文章
- hadoop+yarn+hbase+storm+kafka+spark+zookeeper)高可用集群详细配置
配置 hadoop+yarn+hbase+storm+kafka+spark+zookeeper 高可用集群,同时安装相关组建:JDK,MySQL,Hive,Flume 文章目录 环境介绍 节点介绍 ...
- 大数据组件原理总结-Hadoop、Hbase、Kafka、Zookeeper、Spark
Hadoop原理 分为HDFS与Yarn两个部分.HDFS有Namenode和Datanode两个部分.每个节点占用一个电脑.Datanode定时向Namenode发送心跳包,心跳包中包含Datano ...
- java+hadoop+spark+hbase+scala+kafka+zookeeper配置环境变量记录备忘
java+hadoop+spark+hbase+scala 在/etc/profile 下面加上如下环境变量 export JAVA_HOME=/usr/java/jdk1.8.0_102 expor ...
- 二十一、Hadoop学记笔记————kafka的初识
这些场景的共同点就是数据由上层框架产生,需要由下层框架计算,其中间层就需要有一个消息队列传输系统 Apache flume系统,用于日志收集 Apache storm系统,用于实时数据处理 Spark ...
- [大牛翻译系列]Hadoop(16)MapReduce 性能调优:优化数据序列化
6.4.6 优化数据序列化 如何存储和传输数据对性能有很大的影响.在这部分将介绍数据序列化的最佳实践,从Hadoop中榨出最大的性能. 压缩压缩是Hadoop优化的重要部分.通过压缩可以减少作业输出数 ...
- 二十二、Hadoop学记笔记————Kafka 基础实战 :消费者和生产者实例
kafka的客户端也支持其他语言,这里主要介绍python和java的实现,这两门语言比较主流和热门 图中有四个分区,每个图形对应一个consumer,任意一对一即可 获取topic的分区数,每个分区 ...
- hadoop kafka install (6)
reference: http://kafka.apache.org/quickstart http://dblab.xmu.edu.cn/blog/1096-2/ hadoop@iZuf68496 ...
- 阿里封神谈hadoop学习之路
阿里封神谈hadoop学习之路 封神 2016-04-14 16:03:51 浏览3283 评论3 发表于: 阿里云E-MapReduce >> 开源大数据周刊 hadoop 学生 s ...
- kafka 单机配置
http://blog.csdn.net/jingshuigg/article/details/24439637 . su root : chown -R hadoop:hadoop version- ...
随机推荐
- Appendix 1- LLN and Central Limit Theorem
1. 大数定律(LLN) 设Y1,Y2,……Yn是独立同分布(iid,independently identically distribution)的随机变量,A = SY /n = (Y1+...+ ...
- sql server凭据
转自:https://blog.csdn.net/kk185800961/article/details/52469170 凭据是包含连接到 SQL Server 外部资源所需的身份验证信息(凭据)的 ...
- 从入门到自闭之Python--MySQL数据库的多表查询
多表查询 连表: 内连接:所有不在条件匹配内的数据们都会被剔除连表 select * from 表名1,表名2 where 条件; select * from 表名1 inner join 表名2 o ...
- ASP.NET练习③——AspNetChosmePager
aspx代码: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="_Chosm ...
- Jmeter之Linux安装(Xshell),分布式运行Linux作为slave机
甲方爸爸要求,用Linux压测...... 所以在公司服务器Linux上搭建Jmeter 但实际一个Jmeter程序也有程序瓶颈~ 所以在Jmeter瓶颈下,搭建分布式压测系统.(也许可以尝试在一 ...
- 交替方向乘子法(ADMM)的原理和流程的白话总结
交替方向乘子法(ADMM)的原理和流程的白话总结 2018年08月27日 14:26:42 qauchangqingwei 阅读数 19925更多 分类专栏: 图像处理 作者:大大大的v链接:ht ...
- THUWC2020滚粗记
\(Day-?\) 教练叫走了3个人,没叫我 感觉药丸,然后被告知pku没过,thu过了 神奇,然后就活了 后来在机房颓废,大声说笑被diss 当时感觉颓的有点过头,药丸 \(Day0\) 跟NC去T ...
- 作业5:Java编译原理
零.编译 1.编译器 (1)前端编译器:.java文件转变为.class文件Sun的javacEclipse JDT中的增量编译器(ECJ) (2)后端编译器:.class文件转变为机器码HotSpo ...
- O063、NFS Volume Provider(Part II)
参考https://www.cnblogs.com/CloudMan6/p/5693771.html 本节开始创建 NFS volume ,操作方法和 LVM volume一样,唯一的区别是在 v ...
- WebStrom 中文显示异常中文变样乱码
问题描述 WebStorm 编辑文件时中文显示异常,大小不一 菜单栏字体需要更换 解决方法 修改编辑器字体 菜单栏默认字体取消 设置效果 编辑文件时中英文显示 菜单栏 其他相关 关于编码格式,这里未做 ...