zoukankan      html  css  js  c++  java
  • kafka安装

    shiyanlou:/opt/ $ sudo wget http://labfile.oss.aliyuncs.com/courses/859/kafka_2.10-0.10.2.1.tgz

    shiyanlou:/opt/ $ sudo tar -zxvf kafka_2.10-0.10.2.1.tgz

    shiyanlou:/opt/ $ sudo mv kafka_2.10-0.10.2.1 kafka

    shiyanlou:config/ $ sudo cp server.properties server1-.properties   
    shiyanlou:config/ $ sudo cp server.properties server2-.properties

    root@6a9eb5c4ff77:/opt/kafka# sudo chmod 777 -R /opt/kafka

    root@6a9eb5c4ff77:/opt/kafka# cd bin/

    启动zookeeper:

    root@6a9eb5c4ff77:/opt/kafka/bin# ./zookeeper-server-start.sh  ../config/zookeeper.properties

    这是一个java进程,在新的窗口输入:

    shiyanlou:Desktop/ $ jps
    683 Jps
    411 QuorumPeerMain

    看到QuorumPeerMain说明zookeeper启动成功

    修改server.properties3个配置文件

    server.properties 此文件不修改,保持默认值

    server-1.properties 修改 broker.id=1,log.dir=/tmp/kafka-logs-1,新增 listeners=PLAINTEXT://:9093三个参数值

    server-2.properties 修改broker.id=2,log.dir=/tmp/kafka-logs-2     listeners=PLAINTEXT://:9094三个参数值

    三个 Kafka配置文件(server.properties、 server-1.properties、 server-2.properties),每个配置文件对应 Kafka 集群中一个节点(称为 Broker)

    shiyanlou:config   cd /opt/kafka/bin

    启动kafka集群:

    shiyanlou:bin/ $ ./kafka-server-start.sh ../config/server.properties &

    shiyanlou:bin/ $ ./kafka-server-start.sh ../config/server-1.properties &

    shiyanlou:bin/ $ ./kafka-server-start.sh ../config/server-2.properties &

    创建主题:
    shiyanlou:bin/ $ ./kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic myFirstTopic

    1、kafka-topics.sh:Kafka 提供的一个 shell 脚本文件(位于 bin 目录中),用于创建或查看 topic 信息。
    2、--create:shell 脚本的参数,告诉 shell 脚本:要创建一个 topic。
    3、--zookeeper localhost:2181:shell 脚本的参数,告诉 shell 脚本 Zookeeper 的地址,用于保存 topic 元数据信息。
    4、--partitions 1:shell 脚本参数,告诉 shell 脚本:所创建的这个 topic 的 partition 个数为1
    5、--replication-factor 1:shell脚本参数,告诉 shell 脚本:每个 partition 的副本数为1
    6、--topic myFirstTopic:shell 脚本参数,告诉 shell 脚本:创建的 topic 的名称为 myFirstTopic。

    查看主题是否新建成功

    shiyanlou:bin/ $ ./kafka-topics.sh --zookeeper localhost:2181 --list [10:45:39]
    myFirstTopic启动消息生产者:

    ./kafka-console-producer.sh --broker-list localhost:9092 --topic myFirstTopic

    hello kingleoric

    启动消息消费者:

    shiyanlou:bin/ $ ./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic myFirstTopic
    hello kingleoric

    创建一个包含3个 partition、每个 partition 有2个副本的 topic:mySecondTopic

    shiyanlou:bin/ $ ./kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 2 --partitions 3 --topic mySendTopic
    Created topic "mySendTopic".

    查看状态:

    shiyanlou:bin/ $ ./kafka-topics.sh --zookeeper localhost:2181 --describe --topic mySendTopic
    Topic:mySendTopic PartitionCount:3 ReplicationFactor:2 Configs:
     Topic: mySendTopic Partition: 0 Leader: 2 Replicas: 2,0 Isr: 2,0
     Topic: mySendTopic Partition: 1 Leader: 0 Replicas: 0,1 Isr: 0,1
     Topic: mySendTopic Partition: 2 Leader: 1 Replicas: 1,2 Isr: 1,2

    结果的第一行:topic 信息概述:Topic 名称为 mySecondTopic,partition 数量为3,副本数为2,三个 partition 的详细配置信息见下面三行。 紧接着三行信息,每一行描述了一个 partition 的信息,后面的 leader、replicas和ISR 涉及到 kafka 内核结构,这些参数保证了 kafka 集群的健壮性,保证消息不丢失,保证消息的高吞吐量。

    mySecondTopic-0的Replicas为2,0,意思是mySecondTopic-0目录位于broker id为2和0的log.dirs指定的目录中。

    shiyanlou:kafka-logs-1/ $ ls     
    cleaner-offset-checkpoint  __consumer_offsets-21  __consumer_offsets-35  __consumer_offsets-49
    __consumer_offsets-0       __consumer_offsets-22

    log.dirs的目录在/tmp/kafka-logs-中

    查看 Zookeeper 上的元数据信息:

    hiyanlou:bin/ $ ./zookeeper-shell.sh localhost:2181                 [12:55:59]
    Connecting to localhost:2181
    Welcome to ZooKeeper!
    JLine support is disabled
    
    WATCHER::
    
    WatchedEvent state:SyncConnected type:None path:null
    lls /
    ZooKeeper -server host:port cmd args
        stat path [watch]
        set path data [version]
        ls path [watch]
        delquota [-n|-b] path
        ls2 path [watch]
        setAcl path acl
        setquota -n|-b val path
        history 
        redo cmdno
        printwatches on|off
        delete path [version]
        sync path
        listquota path
        rmr path
        get path [watch]
        create [-s] [-e] path data acl
        addauth scheme auth
        quit 
        getAcl path
        close 
        connect host:port

    查看元信息

    ls /brokers
    [ids, topics, seqid]
    ls /brokers/ids   查看集群
    [0, 1, 2]
    ls /brokers/topics 查看主题
    [mySendTopic, myFirstTopic, __consumer_offsets]

    如果ls命令返回[],说明这个节点是叶子节点,可以运行 get 命令获取内容

    ls /brokers/topics/mySendTopic/partitions
    [0, 1, 2]
    ls /brokers/topics/mySendTopic/partitions/0
    [state]
    ls /brokers/topics/mySendTopic/partitions/0/state
    []
    get /brokers/topics/mySendTopic/partitions/0/state
    {"controller_epoch":1,"leader":2,"version":1,"leader_epoch":0,"isr":[2,0]}
    cZxid = 0xf4
    ctime = Tue Dec 12 04:51:39 UTC 2017
    mZxid = 0xf4
    mtime = Tue Dec 12 04:51:39 UTC 2017
    pZxid = 0xf4
    cversion = 0
    dataVersion = 0
    aclVersion = 0
    ephemeralOwner = 0x0
    dataLength = 74
    numChildren = 0

    tips:

    1.producer:
      消息生产者,发布消息到 kafka 集群的终端或服务。
    2.broker:
      kafka 集群中包含的服务器。
    3.topic:
      每条发布到 kafka 集群的消息属于的类别,即 kafka 是面向 topic 的。
    4.partition:
      partition 是物理上的概念,每个 topic 包含一个或多个 partition, topic 中的消息是以 partition 分区的形式存储的。kafka 分配的单位是 partition。
    5.consumer:
      从 kafka 集群中消费消息的终端或服务。
    6.Consumer group:
      high-level consumer API 中,每个 consumer 都属于一个 consumer group,每条消息只能被 consumer group 中的一个 Consumer 消费,但可以被多个 consumer group 消费。
    7.replica:
      partition 的副本,保障 partition 的高可用。Kafka 支持以 partition 为单位对消息进行冗余备份,每个 Partition 都必须配置至少1个 replication。replication-factor 参数指定了 replication 的个数,即 partition 的副本个数。
    8.leader:
      replica 中的一个角色, producer 和 consumer 只跟 leader 交互。
    9.follower:
      replica 中的一个角色,从 leader 中复制数据。
    10.controller:
      kafka 集群中的其中一个服务器,用来进行 leader election 以及 各种 failover。
    12.zookeeper:
      kafka 通过 zookeeper 来存储集群的 meta 信息。

    13.Offset   --每个 partition 中的消息都是顺序存储的,每个消息都是有编号的,编号是顺序增长的。这个编号叫 offset,offset 记录了消息在 partition 中的位置。注意:offset 在一个 partition 内是有序的,多个 partition 之间的 offset 是独立存在的。

    14.Leader replica  --在 partition 的多个副本 replication 中,有一个副本叫主副本(即Leader replica),所有消息消费者和消息生产者的读写请求都由 Leader replica 处理,这么做是为了保证一致性。其他副本叫从副本(即 Follower   replica),从副本 从 主副本处把数据更新同步到本地。

    15.ISR(全拼为:In-Sync Replica) --从副本中,如果从主副本处把数据更新同步到本地了,那么这个从副本处于ISR状态(已同步状态),如果没有完全与主副本同步,那么会被从ISR中踢出去,处于非同步状态。 

    一个 topic 有3个 partition,每个 partition 维护着独立的 offset。如 partition 0 中,最先发送到这个 partition 中的消息,offset 为0,后来的消息 offset 为1,2,3...依次类推。

  • 相关阅读:
    【转】Centos yum 换源
    centos7下使用yum安装mysql
    【转】简易smtp调用类
    【转】Beanstalkd 队列简易使用
    【转】mysql 拖库写库用法
    【转】scp 命令格式
    【转】mac os 安装php
    pip 国内源 gem 国内源
    【转】25个必须记住的SSH命令
    NHibernate 有好几种数据库查询方式
  • 原文地址:https://www.cnblogs.com/kingleoric/p/8027345.html
Copyright © 2011-2022 走看看