• Kafka集群环境搭建


    Kafka介绍

    在流式计算中,Kafka一般用来缓存数据Storm通过消费Kafka的数据进行计算。

    KAFKA + STORM +REDIS

    1、Apache Kafka是一个开源消息系统,用Scala写成。

    2、Kafka是一个分布式消息队列:生产者、消费者的功能。它提供了类似于JMS的特性,但是在设计实现上完全不同,此外它并不是JMS规范的实现。

    3、Kafka对消息保存时根据Topic进行归类,发送消息者称为Producer,消息接收者成为Consumer,此外Kafka集群由多个Kafka实例组成,每个实例(server)称为broker。

    4、无论是kafka集群,还是Producer和Consumer都依赖于zookeeper集群保存一些meta信息,来保证系统可用性。

    Kafka 是一个基于分布式的消息发布-订阅系统,它被设计成快速、可扩展的、持久的。与其他消息发布-订阅系统类似,Kafka 在主题当中保存消息的信息。

    生产者向主题写入数据,消费者从主题读取数据。由于 Kafka 的特性是支持分布式,同时也是基于分布式的,所以主题也是可以在多个节点上被分区和覆盖的。

    Kafka 的生产者负责在消息队列中对生产出来的消息保证一定时间的占有,消费者负责追踪每一个主题 (可以理解为一个日志通道) 的消息并及时获取它们。

    Kafka核心组件

    Topic :消息根据Topic进行归类

    Producer:发送消息者,向broker发布消息

    Consumer:消息消费者,从Kafka broker中读取消息的客户端

    broker:每个kafka实例(server)。Kafka集群中包含一个或多个服务器,这个服务器称为broker

    Zookeeper:依赖集群保存meta信息。Zookeeper管理集群配置,选举leader,以及在Consumer Group发生变化时进行rebalance

    Partition:物理上的概念,每个Topic包含一个或多个Partition

    Consumer Group:每个Consumer属于一个特定的Consumer Group(可为每个Consumer指定group name,若不指定group name则属于默认的group)。

    Kafka拓扑结构:

    Kafka集群部署(前提:先部署好zookeeper集群)

    1、下载安装包

    http://kafka.apache.org/

    2、上传并解压安装包

    tar  -zxvf  /root/kafka_2.11-0.8.2.2.tgz  -C  /export/servers/

    cd  /export/servers/

    ln -s  kafka_2.11-0.8.2.2  kafka

    3、修改配置文件

    vi  /export/servers/kafka/config/server.properties

    配置一下内容:

    4、分发安装包

    scp -r /export/servers/kafka_2.11-0.8.2.2  storm2:/export/servers

    scp -r /export/servers/kafka_2.11-0.8.2.2  storm3:/export/servers

    然后分别在各机器上创建软连

    cd /export/servers/

    ln -s kafka_2.11-0.8.2.2 kafka

    5、再次修改配置文件(重要)

    依次修改各服务器上配置文件的broker.id,分别是0,1,2,不得重复!

    6、启动集群(先启动zookeeper集群)

    依次在每个节点上的/kafka/路径下启动Kafka:

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

    Kafka常用操作命令

    • 查看当前服务器中的所有topic

    bin/kafka-topics.sh --list --zookeeper  zk01:2181

    • 创建topic

    ./kafka-topics.sh --create --zookeeper mini1:2181 --replication-factor 1 --partitions 3 --topic first

    • 删除topic

    sh bin/kafka-topics.sh --delete --zookeeper zk01:2181 --topic test

    需要server.properties中设置delete.topic.enable=true否则只是标记删除或者直接重启。

    • 通过shell命令发送消息

    kafka-console-producer.sh --broker-list kafka01:9092 --topic itheima

    • 通过shell消费消息

    sh bin/kafka-console-consumer.sh --zookeeper zk01:2181 --from-beginning --topic test1

    • 查看消费位置

    sh kafka-run-class.sh kafka.tools.ConsumerOffsetChecker --zookeeper zk01:2181 --group testGroup

    • 查看某个Topic的详情

    sh kafka-topics.sh --topic test --describe --zookeeper zk01:2181

  • 相关阅读:
    深刻理解ajax的success和error的实质和执行过程
    再次遇到 js报错: expected expression, get ')' 或 get ';', '<'等错误?
    怎样让一行中的 文字 input输入框 按钮button它们在同一个高度上? 它们中的文字 是 垂直居中对齐
    怎样阻止input file文件域的change/onchange事件多次重复执行?
    如何在 messager/alert/confirm等消息提示框中 获取 / 设置 嵌入 html内容中的 input[type=checkbox]等的选中状态?
    异步函数造成的问题: 怎样确保异步执行的FileReader onload成功后才执行后面的语句?
    如何退出vim的宏记录模式
    bs模态框中的form获取或设置表单及其中元素用nam不能用id?
    关于git 的理解3
    关于git的理解2
  • 原文地址:https://www.cnblogs.com/ahu-lichang/p/6906378.html
Copyright © 2020-2023  润新知