IT学习站-137zw.com

作者: 简单350
查看: 46|回复: 0

more +资源更新Forums

more +随机图赏Gallery

网易课堂马丁的Illustrator(Adobe AI)大师课,90节完整版网易课堂马丁的Illustrator(Adobe AI)大师课,90节完整版
价值9999元 筑龙造价全专业(20191214_114251)精品课程推荐价值9999元 筑龙造价全专业(20191214_114251)精品课程推荐
微专业 - Java高级开发工程师(完整版)微专业 - Java高级开发工程师(完整版)
曾奇峰的心理课精神分析30讲,带你深入潜意识,解密你不...曾奇峰的心理课精神分析30讲,带你深入潜意识,解密你不...
词霸天下之3万词汇速记进阶 入门到精通彻底攻克英语完整版词霸天下之3万词汇速记进阶 入门到精通彻底攻克英语完整版
談鋼琴!?我最大咖!郎朗钢琴大师课~入门到进阶 完整版...談鋼琴!?我最大咖!郎朗钢琴大师课~入门到进阶 完整版...

Kafka入门宝典(详细截图版)

Kafka入门宝典(详细截图版)

[复制链接]
简单350 | 显示全部楼层 发表于: 2019-11-14 11:10:01
简单350 发表于: 2019-11-14 11:10:01 | 显示全部楼层 |阅读模式
查看: 46|回复: 0

你还没有注册,无法下载本站所有资源,请立即注册!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
Kafka入门宝典(详细截图版)  技术博客 1089984-20190909101028726-1661472244

1、了解 Apache Kafka

1.1、简介

Kafka入门宝典(详细截图版)  技术博客 1089984-20190909101029228-1119110394

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

  • Apache Kafka 是一个开源消息系统,由Scala 写成。是由Apache 软件基金会开发的一个开源消息系统项目。
  • Kafka 最初是由LinkedIn 开发,并于2011 年初开源。2012 年10 月从Apache Incubator 毕业。该项目的目标是为处理实时数据提供一个统一、高通量、低等待(低延时)的平台。
  • Kafka 是一个分布式消息系统:具有生产者、消费者的功能。它提供了类似于JMS 的特性,但是在设计实现上完全不同,此外它并不是JMS 规范的实现。【重点】
1.2、kafka的基本结构

Kafka入门宝典(详细截图版)  技术博客 1089984-20190909101029844-945059236


  • Producer:消息的发送者
  • Consumer:消息的接收者
  • kafka cluster:kafka的集群。
  • Topic:就是消息类别名,一个topic中通常放置一类消息。每个topic都有一个或者多个订阅者(消费者)。
消息的生产者将消息推送到kafka集群,消息的消费者从kafka集群中拉取消息。
1.3、kafka的完整架构

Kafka入门宝典(详细截图版)  技术博客 1089984-20190909101030386-1652960687

说明:

  • broker:集群中的每一个kafka实例,称之为broker;
  • ZooKeeper:Kafka 利用ZooKeeper 保存相应元数据信息, Kafka 元数据信息包括如代理节点信息、Kafka集群信息、旧版消费者信息及其消费偏移量信息、主题信息、分区状态信息、分区副本分配方案信息、动态配置信息等。
  • ConsumerGroup:在Kafka 中每一个消费者都属于一个特定消费组( ConsumerGroup ),我们可以为每个消费者指定一个消费组,以groupld 代表消费组名称,通过group.id 配置设置。如果不指定消费组,则该消费者属于默认消费组test-consumer-group 。
1.4、kafka的特性


  • 消息持久化

    • Kafka 基于文件系统来存储和缓存消息。

  • 高吞吐量

    • Kafka 将数据写到磁盘,充分利用磁盘的顺序读写。同时, Kafka 在数据写入及数据同步采用了零拷贝( zero-copy )技术,采用sendFile()函数调用,sendFile()函数是在两个文件描述符之间直接传递数据,完全在内核中操作,从而避免了内核缓冲区与用户缓冲区之间数据的拷贝,操作效率极高。
    • Kafka 还支持数据压缩及批量发送,同时Kafka 将每个主题划分为多个分区,这一系列的优化及实现方法使得Kafka 具有很高的吞吐量。经大多数公司对Kafka 应用的验证, Kafka 支持每秒数百万级别的消息

  • 高扩展性

    • Kafka 依赖ZooKeeper来对集群进行协调管理,这样使得Kafka 更加容易进行水平扩展,生产者、消费者和代理都为分布式,可配置多个。
    • 同时在机器扩展时无需将整个集群停机,集群能够自动感知,重新进行负责均衡及数据复制。

  • 多客户端支持

    • Kafka 核心模块用Scala 语言开发,Kafka 提供了多种开发语言的接入,如Java 、Scala、C 、C++、Python 、Go 、Erlang 、Ruby 、Node. 等。

  • 安全机制

    • Kafka 支持以下几种安全措施:

      • 通过SSL 和SASL(Kerberos), SASL/PLA时验证机制支持生产者、消费者与broker连接时的身份认证;
      • 支持代理与ZooKeeper 连接身份验证;
      • 通信时数据加密;
      • 客户端读、写权限认证;
      • Kafka 支持与外部其他认证授权服务的集成;


  • 数据备份

    • Kafka 可以为每个topic指定副本数,对数据进行持久化备份,这可以一定程度上防止数据丢失,提高可用性。

  • 轻量级

    • Kafka 的实例是无状态的,即broker不记录消息是否被消费,消费偏移量的管理交由消费者自己或组协调器来维护。
    • 同时集群本身几乎不需要生产者和消费者的状态信息,这就使得Kafka非常轻量级,同时生产者和消费者客户端实现也非常轻量级。

  • 消息压缩

    • Kafka 支持Gzip, Snappy 、LZ4 这3 种压缩方式,通常把多条消息放在一起组成MessageSet,然后再把Message Set 放到一条消息里面去,从而提高压缩比率进而提高吞吐量。

1.5、kafka的应用场景


  • 消息系统。

    • Kafka 作为一款优秀的消息系统,具有高吞吐量、内置的分区、备份冗余分布式等特点,为大规模消息处理提供了一种很好的解决方案。

  • 应用监控。

    • 利用Kafka 采集应用程序和服务器健康相关的指标,如CPU 占用率、IO 、内存、连接数、TPS 、QPS 等,然后将指标信息进行处理,从而构建一个具有监控仪表盘、曲线图等可视化监控系统。例如,很多公司采用Kafka 与ELK (Elastic Search 、Logstash 和Kibana)整合构建应用服务监控系统。

  • 网站用户行为追踪。

    • 为了更好地了解用户行为、操作习惯,改善用户体验,进而对产品升级改进,将用户操作轨迹、内容等信息发送到Kafka 集群上,通过Hadoop 、Spark 或Strom等进行数据分析处理,生成相应的统计报告,为推荐系统推荐对象建模提供数据源,进而为每个用户进行个性化推荐。

  • 流处理。

    • 需要将己收集的流数据提供给其他流式计算框架进行处理,用Kafka 收集流数据是一个不错的选择。

  • 持久性日志。

    • Kafka 可以为外部系统提供一种持久性日志的分布式系统。日志可以在多个节点间进行备份, Kafka 为故障节点数据恢复提供了一种重新同步的机制。同时, Kafka很方便与HDFS 和Flume 进行整合,这样就方便将Kafka 采集的数据持久化到其他外部系统。

2、Kafka的安装与配置

准备三台虚拟机,分别是node01,node02,node03,并且修改hosts文件如下:2.1、基础环境配置

2.1.1、JDK环境

由于Kafka 是用Scala 语言开发的,运行在JVM上,因此在安装Kafka 之前需要先安装JDK 。
安装过程略过,我这里使用的是jdk1.8。
Kafka入门宝典(详细截图版)  技术博客 1089984-20190909101030615-25790786

2.1.2、ZooKeeper环境

2.1.2.1、安装ZooKeeper

Kafka 依赖ZooKeeper ,通过ZooKeeper 来对服务节点、消费者上下线管理、集群、分区元数据管理等,因此ZooKeeper 也是Kafka 得以运行的基础环境之一。2.1.2.3、搭建ZooKeeper集群
2.1.2.3、配置环境变量
2.1.2.4、分发到其它机器
2.1.2.5、一键启动、停止脚本
2.1.2.6、检查启动是否成功

Kafka入门宝典(详细截图版)  技术博客 1089984-20190909101030840-804697111

发现三台机器都有“QuorumPeerMain”进程,说明机器已经启动成功了。
检查集群是否正常:
zkServer.sh status
Kafka入门宝典(详细截图版)  技术博客 1089984-20190909101031072-1189487068

Kafka入门宝典(详细截图版)  技术博客 1089984-20190909101031281-570716848

Kafka入门宝典(详细截图版)  技术博客 1089984-20190909101031509-2087097490

发现,集群运行一切正常。
2.2、安装Kafka

2.2.1、单机版Kafka安装

第一步:上传Kafka安装包并且解压第二步:配置环境变量第三步:修改配置文件第四步:启动kafka服务第五步:检测kafka是否启动
Kafka入门宝典(详细截图版)  技术博客 1089984-20190909101031738-73958265

如果进程中有名为kafka的进程,就说明kafka已经启动了。
2.2.2、验证kafka是否安装成功

由于kafka是将元数据保存在ZooKeeper中的,所以,可以通过查看ZooKeeper中的信息进行验证kafka是否安装成功。
Kafka入门宝典(详细截图版)  技术博客 1089984-20190909101031974-1055928590

Kafka入门宝典(详细截图版)  技术博客 1089984-20190909101032277-1930570944

Kafka入门宝典(详细截图版)  技术博客 1089984-20190909101032816-284964671

2.2.3、部署kafka-manager

Kafka Manager 由 yahoo 公司开发,该工具可以方便查看集群 主题分布情况,同时支持对 多个集群的管理、分区平衡以及创建主题等操作。
源码托管于github:https://github.com/yahoo/kafka-manager
第一步:上传Kafka-manager安装包并且解压第二步:修改配置文件第三步:启动服务第四步:检查是否启动成功
打开浏览器,输入地址:http://node01:19000/,即可看到kafka-manage管理界面。
Kafka入门宝典(详细截图版)  技术博客 1089984-20190909101033064-1798415027

2.2.4、kafka-manager的使用

进入管理界面,是没有显示Cluster信息的,需要添加后才能操作。

  • 添加 Cluster:
Kafka入门宝典(详细截图版)  技术博客 1089984-20190909101033288-847679490

输入Cluster Name、ZooKeeper信息、以及Kafka的版本信息(这里最高只能选择1.0.0)。
Kafka入门宝典(详细截图版)  技术博客 1089984-20190909101033528-2122799115

点击Save按钮保存。
Kafka入门宝典(详细截图版)  技术博客 1089984-20190909101033765-954305531

添加成功。

  • 查看kafka的信息
    Kafka入门宝典(详细截图版)  技术博客 1089984-20190909101034009-1896622955

  • 查看Broker信息
    Kafka入门宝典(详细截图版)  技术博客 1089984-20190909101034260-1523338157

  • 查看Topic列表
    Kafka入门宝典(详细截图版)  技术博客 1089984-20190909101034502-1085547349

  • 查看单个topic信息以及操作
    Kafka入门宝典(详细截图版)  技术博客 1089984-20190909101034811-1028913866

  • 优化副本选举
    Kafka入门宝典(详细截图版)  技术博客 1089984-20190909101035303-866015814

  • 查看消费者信息
    Kafka入门宝典(详细截图版)  技术博客 1089984-20190909101035558-1412254538

2.2.5、搭建kafka集群

kafka集群的搭建是非常简单的,只需要将上面的单机版的kafka分发的其他机器,并且将ZooKeeper信息修改成集群的配置以及设置不同的broker值即可。
第一步:将kafka分发到node02、node03第二步:修改node01、node02、node03上的kafka配置文件
第三步:编写一键启动、停止脚本。注意:该脚本依赖于环境变量中的KAFKA_HOME。第四步:通过kafka-manager管理工具查看集群信息。
Kafka入门宝典(详细截图版)  技术博客 1089984-20190909101035904-1393122467

由此可见,kafka集群已经启动完成。
3、Kafka快速入门

对kafka的操作有2种方式,一种是通过命令行方式,一种是通过API方式。
3.1、通过命令行Kafka

Kafka在bin目录下提供了shell脚本文件,可以对Kafka进行操作,分别是:
Kafka入门宝典(详细截图版)  技术博客 1089984-20190909101036472-461706403

通过命令行的方式,我们将体验下kafka,以便我们对kafka有进一步的认知。
3.1.1、topic的操作

3.1.1.1、创建topic
参数说明:

  • zookeeper:参数是必传参数,用于配置 Kafka 集群与 ZooKeeper 连接地址。至少写一个。
  • partitions:参数用于设置主题分区数,该配置为必传参数。
  • replication-factor:参数用来设置主题副本数 ,该配置也是必传参数。
  • topic:指定topic的名称。
3.1.1.2、查看topic列表
可以查看列表。
如果需要查看topic的详细信息,需要使用describe命令。3.1.1.3、删除topic

通过kafka-topics.sh执行删除动作,需要在server.properties文件中配置 delete.topic.enable=true,该配置默认为 false。
否则执行该脚本并未真正删除主题 ,将该topic标记为删除状态 。3.1.2、生产者的操作
可以看到,已经向topic发送了消息。
3.1.3、消费者的操作
Kafka入门宝典(详细截图版)  技术博客 1089984-20190909101036981-381843378

3.2、通过Java Api操作Kafka

除了通过命令行的方式操作kafka外,还可以通过Java api的方式操作,这种方式将更加的常用。
3.2.1、创建工程

Kafka入门宝典(详细截图版)  技术博客 1089984-20190909101037229-1266763459

导入依赖:3.2.2、topic的操作

由于主题的元数据信息是注册在 ZooKeeper 相 应节点之中,所以对主题的操作实质是对 ZooKeeper 中记录主题元数据信息相关路径的操作。 Kafka将对 ZooKeeper 的相关操作封装成一 个 ZkUtils 类 , 井封装了一个AdrninUtils 类调用 ZkClient 类的相关方法以实现对 Kafka 元数据 的操作,包括对主题、代理、消费者等相关元数据的操作。对主题操作的相关 API调用较简单, 相应操作都是通过调用 AdminUtils类的相应方法来完成的。测试结果:
Kafka入门宝典(详细截图版)  技术博客 1089984-20190909101037469-1994408237

3.2.2.1、删除topic
测试结果:
Kafka入门宝典(详细截图版)  技术博客 1089984-20190909101037686-164432288

3.2.3、生产者的操作
3.2.4、消费者的操作
什么是Kafka?
Kafka监控工具汇总
Kafka快速入门
Kafka核心之Consumer
Kafka核心之Producer
替代Flume——Kafka Connect简介
最简单流处理引擎——Kafka Streams简介
更多实时计算,Flink,Kafka等相关技术博文,欢迎关注实时流式计算
Kafka入门宝典(详细截图版)  技术博客 1089984-20190909101037928-1724717908


来源:http://www.137zw.com
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
137zw.com IT学习站致力于免费提供精品的java技术教程和python技术教程,CCNA书籍/资料/CCNP书籍/资料教程/CCIE书籍/资料/H3C学习/认证/一级建造师考试/微软学习/认证/包括基础教程和高级实战教程,同时也提供分享网站源码下载和互联网相关一系列的技术教程,我们想做的就是让知识分享更有价值!(IT学习站官方唯一域名地址:www.137zw.com 请谨防假冒网站!)本站所有资源全部收集于互联网或网友自行分享,分享目的仅供大家学习与参考,如无意中侵犯您的合法权益,请联系本站管理员进行删除处理!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

浙ICP备19022368号-1|Archiver|手机版|IT学习站-137zw.com

GMT+8, 2020-7-4 17:28 , Processed in 0.275276 second(s), 33 queries .

快速回复 返回顶部 返回列表