Apache kafka快速入门与配置安装

1. Kafa介绍

Kafka是由Apache软件基金会开发的一个开源流处理平台,由ScalaJava编写。该项目的目标是为处理实时数据提供一个统一、高吞吐、低延迟的平台。其持久化层本质上是一个“按照分布式事务日志架构的大规模发布/订阅消息队列”,[3]这使它作为企业级基础设施来处理流式数据非常有价值。此外,Kafka可以通过Kafka Connect连接到外部系统(用于数据输入/输出),并提供了Kafka Streams——一个Java流式处理。 -------摘自维基百科

1.1 Kafka应用场景

  • 日志收集:可以用Kafka可以收集各种服务的Log,通过Kafka以统一接口服务的方式开放 给各种Consumer;
  • 消息系统:解耦生产者和消费者、缓存消息等;
  • 用户活动跟踪: Kafka经常被用来记录Web用户或者App用户的各种活动,如浏览网页、搜索、点击 等活动,这些活动信息被各个服务器发布到Kafka的Topic中,然后消费者通过订阅这些Topic来做实时的 监控分析,亦可保存到数据库;
  • 运营指标: Kafka也经常用来记录运营监控数据。包括收集各种分布式应用的数据,生产各种操作的 集中反馈,比如报警和报告;
  • 流式处理: 比如Spark Streaming和Storm。

1.2 核心概念

  • Producer

    消息的生产者

  • Consumer

    消息的消费者。 消费者订阅一个或多个主题,并按照消息生成的顺序读取它们。

  • Consumer Group

    每一个Consumer属于一个特定的Consumer Group,消费者可以通过指定group.id,来确定其所在消费组。group_id一般设置为应用的逻辑名称。比如多个订单处理程序组成一个消费组,可以设置group_id 为"order_process"。消费组均衡地给消费者分配分区,每个分区只由消费组中一个消费者消费。

  • Broker

    一个独立的Kafka 服务器被称为broker。 broker 为消费者提供服务,对读取分区的请求作出响应,返回已经提交到磁盘上的消息。

  • Topic

    用来对消息进行分类,每个进入到Kafka的信息都会被放到一个Topic下。

  • Partition
    是Kafka下数据存储的基本单元,这个是物理上的概念。同一个topic的数据,会被分散的存储到多个partition中,这些partition可以在同一台机器上,也可以是在多台机器上。
    优势在于:有利于水平扩展,避免单台机器在磁盘空间和性能上的限制,同时可以通过复
    制来增加数据冗余性,提高容灾能力。为了做到均匀分布,通常partition的数量通常是Broker
    Server数量的整数倍。

在这里插入图片描述

1.3 Kafka架构

在这里插入图片描述

Kafka存储的消息来自任意多被称为“生产者”(Producer)的进程。数据从而可以被分配到不同的“分区”(Partition)、不同的“Topic”下。在一个分区内,这些消息被索引并连同时间戳存储在一起。其它被称为“消费者”(Consumer)的进程可以从分区查询消息。Kafka运行在一个由一台或多台服务器组成的集群上,并且分区可以跨集群结点分布。

Kafka高效地处理实时流式数据,可以实现与Storm、HBase和Spark的集成。作为聚类部署到多台服务器上,Kafka处理它所有的发布和订阅消息系统使用了四个API,即生产者API、消费者API、Stream API和Connector API。

Kafka有四个主要API:

  • 生产者API:支持应用程序发布Record流。
  • 消费者API:支持应用程序订阅Topic和处理Record流。
  • Stream API:将输入流转换为输出流,并产生结果。
  • Connector API:执行可重用的生产者和消费者API,可将Topic链接到现有应用程序。

以上图片和文字摘自维基百科,https://zh.wikipedia.org/wiki/Kafka

2. Kafka安装与配置

  • 安装环境:centos7
  • jdk1.8
  • zookeeper3.7
  • kafka 2.12-3.0.0

2.1 安装Java

  • 下载JDK,上传至服务器,并解压。

  • 配置环境变量

    vim /etc/profile
    

    在profile文件最下面添加如下配置(JAVA_HOME目录改成自己的):

    export JAVA_HOME=/usr/software/jdk1.8.0_261
    export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
    export PATH=$PATH:${JAVA_HOME}/bin
    
    # 生效
    source /etc/profile
    # 验证
    java -version
    

2.2 安装Zookeeper

PS:Kafka中已经集成Zookeeper,可以不用单独安装Zookeeper,直接使用集成的。

Apache ZooKeeper下载Zookeeper。下载地址:https://zookeeper.apache.org/releases.html

  • 下载完成后,将zookeeper压缩包上传到linux系统

  • 解压

    tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz
    
  • 修改配置⽂件名称

    cd conf
    mv zoo_sample.cfg zoo.cfg
    
  • 修改zoo.cfg中的data和Log属性

    # the directory where the snapshot is stored.
    # do not use /tmp for storage, /tmp here is just 
    # example sakes.
    dataDir=/usr/software/apache-zookeeper-3.7/datas
    dataLogDir=/usr/software/apache-zookeeper-3.7/datas/logs
    
  • 验证Zookeeper

    进入到安装的bin目录

    ./zkServer.sh status
    

关于kafka集成的zookeeper和自己安装zookeeper如何选择。

  • 学习、测试阶段使用kafka集成的即可,简单方便。

生产环境,建议自己单独安装zookeeper,原因如下:

  • 自带的这个默认配置是单机版的,一般来说生产环境肯定是要做集群来保证高可用,如果直接改自带的这个配置也不是不可以,但万一改错了把 Kafka 弄坏了咋整?
  • 一般来说 ZK 集群和 Kafka 集群应该分离才对,但二进制包里它俩耦合在一起了,为了部署 ZK 集群连带着拷贝了 Kafka 目录有点儿多余(费点儿心思单独拷出来也不是不行……),所以索性不去动它,另起一套。

2.3 Kafka安装与配置

到Kafka官网下载:https://kafka.apache.org/downloads

  • 上传下载的Kafka压缩包到服务器并解压:

     tar -zxvf kafka_2.12-3.0.0 
    
  • 配置kafka_2.12-3.0.0/config中的server.properties文件:

    Kafka连接Zookeeper的地址,此处使用本地启动的Zookeeper实例,连接地址是localhost:2181, 后面的 myKafka 是Kafka在Zookeeper中的根节点路径,把Kafka的元数据,保存到myKafka 节点下。如果不指定节点,kafka的节点保存到Zookeeper的根节点下。

    ############################# Zookeeper #############################
    
    # Zookeeper connection string (see zookeeper docs for details).
    # This is a comma separated host:port pairs, each corresponding to a zk
    # server. e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002".
    # You can also append an optional chroot string to the urls to specify the
    # root directory for all kafka znodes.
    zookeeper.connect=localhost:2181/mykafka
    
  • 启动Zookeeper

    如果是自己安装的Zookeeper,则进入到Zookeeper安装目录下的bin目录,执行如下命令

    ./zkServer.sh  start
    
    # 查看zookeeper状态
    ./zkServer.sh status
    

    如果使用kafka集成的Zookeeper,进入到kafka安装目录下的bin目录,执行如下命令

    ./zookeeper-server-start.sh  ../config/zookeeper.properties
    
  • 前台启动kafka

    进入到kafka安装目录下的bin目录,执行如下命令

     ./kafka-server-start.sh  ../config/server.properties 
    

    此时Kafka是前台模式启动,关闭shell窗口后,kafka就会停止

  • 后台启动kafka

     ./kafka-server-start.sh  -daemon ../config/server.properties 
    
  • 查看Kafka的后台进程

    ps -ef | grep kafka
    
  • 停止后台运行的Kafka

     ./kafka-server-stop.sh
    

3.kafka快速体验

3.1 创建主题

创建一个名为test的主题

./kafka-topics.sh --create --partitions 1 --replication-factor 1 --topic test --bootstrap-server localhost:9092

获取test主题详细信息

./kafka-topics.sh --describe --topic test --bootstrap-server localhost:9092

列出所有可用的主题(topic)

./kafka-topics.sh  --list --bootstrap-server localhost:9092

3.2 发送消息

向test主题中写入消息

./kafka-console-producer.sh --topic test --bootstrap-server localhost:9092
This is my first msg
This is my second msg

可以使用 Ctrl-C 停止生产者客户端

3.3 消费消息

打开另一个终端会话读取刚刚写入的消息

./kafka-console-consumer.sh --topic test --from-beginning --bootstrap-server localhost:9092
This is my first msg
This is my second msg

可以使用 Ctrl-C 停止消费者者客户端

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

warybee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值