Kafka 2

1)核心概念:

   ./kafka-topics.sh --create \

        --zookeeper 192.168.137.141:2181,192.168.137.142:2181,192.168.137.143:2181/kafka \

        --replication-factor 3 --partitions 3 --topic ruozedata

            topic:ruozedata 主题,不同的主题不同的业务线 1----10 

            partitions:3个分区  下标是从0开始的   物理上的分区,数据落在磁盘上,是最稳定最安全的

            replication:3个副本 指的是一个分区被复制3份

            3台机器:

                        hadoop001    hadoop002   hadoop003

             0分区: ruozedata-0   ruozedata-0  ruozedata-0

             1分区: ruozedata-1   ruozedata-1  ruozedata-1

             2分区: ruozedata-2   ruozedata-2  ruozedata-2 

            如:HDFS 一个文件比如130M  BLOCKSIZE:128M 两个块,每个块复制3份

    ./kafka-topics.sh --describe \

        --zookeeper 192.168.137.141:2181,192.168.137.142:2181,192.168.137.143:2181 \kafka

        --topic ruozedata

         a) Topic:ruozedata     PartitionCount:3        ReplicationFactor:3     Configs:

            Topic:ruozedata        Partition: 0    Leader: 1       Replicas: 1,3,2 Isr: 1,3,2

            Topic:ruozedata        Partition: 1    Leader: 2       Replicas: 2,1,3 Isr: 2,1,3

            Topic:ruozedata        Partition: 2    Leader: 3       Replicas: 3,2,1 Isr: 3,2,1        

       kill hadoop003的kafka

        b) Topic: ruozedata         Partition: 0    Leader: 1       Replicas: 1,3,2 Isr: 1,2

            Topic: ruozedata         Partition: 1    Leader: 2       Replicas: 2,1,3 Isr: 2,1

            Topic: ruozedata         Partition: 2    Leader: 2       Replicas: 3,2,1 Isr: 2,1

        说明: 第一行列举这个topic的名称,分区数,副本数         

                  Partition:0,1,2 三个分区

                  Leader:1  指的是broker.id=1  只有leader才可以读写。生产上的读,在从节点做的

                  Replicas(副本):复制该分区数据的节点列表,第一位代表leader  静态表述

                  Isr:in-sync Replicas 正在复制的副本节点列表    动态表述,理解为真正做复制副本的分区(对比上面a和b的Isr)

                         当leader挂了,会从这个列表选举出新的leader,保证读写

                  broker:代表每台机器上运行Kafka实例的节点 (也就是kafka进程) 

2)核心概念 -- 生产案例

    producer: 生产者  flume/maxwell

    consumer: 消费者  spark streaming/flink

    producer ---> broker ---> consumer

    一般生产上:

        --replication-factor 3 --partitions 3

        --partitions的数量取决于broker数量(也就是装了多少台kafka)

        --replication-factor 3 --partitions 8

       It provides simple parallelism, 1:1 correspondence between Kafka partitions,and Spark partitions, and access to offsets and metadata. (Kafka提供了简单的并行,1:1针对kafka和spark的分区)

        即kafka机器8个,8个分区,spark也8个分区,通过direct方式读取,并行度就高了。

       虽然我们增加了分区数,提高kafka的写和读的吞吐量,但是假如一个集群多个topic,多个分区,必然一台机器上有多个 ruozedata-0  test-0 jepson-0,就需要更多的文件数(进程数),那就要调优

        *****:从集群观点来考虑,集群里不要有过多的topic,尽可能把业务线合用       

3) 核心概念 -- 疑问

    Q:分区是有序的吗?多个分区是有序的吗?

    A:分区是有序的(队列,先进先出),多个分区是无序的

         比如:0: 1,2,3                                       

                  1: 7,8,9

                  3: 4,5,6    spark stream拿到的数据是123789456,那可以解决排序吗?

              record:key、 value(业务数据creatime字段)、 timestamp(生产者向broker的插入时间) ,offset   json格式

                1. 按timestamp(生产者向broker的插入时间) 排序

                2. 业务数据creatime字段排序

               但是spark不支持排序,DF排序会丢失一些信息offset,会导致一连串的无法做到 断点还原

4)consumer group    消费组

    -- 生产用的并不多

    

    -- 一个消费组可以包含一个或多个消费者,分区只能被一个消费组的其中一个消费者去消费

    -- 正常在企业开发使用多分区方式去提高计算的能力

    -- offset:偏移量 

                    消费时读取一个分区的文件的数据,数据所在的下标

5)常用命令

    -- 5.1 创建

        bin/kafka-topics.sh --create \

            --zookeeper 192.168.137.141:2181,192.168.137.142:2181,192.168.137.143:2181/kafka \

            --replication-factor 3 --partitions 3 --topic test

    -- 5.2 查看

        bin/kafka-topics.sh --list \

            --zookeeper 192.168.137.141:2181,192.168.137.142:2181,192.168.137.143:2181/kafka

    -- 5.3 查看某个具体的topic

        bin/kafka-topics.sh --describe \

            --zookeeper 192.168.137.141:2181,192.168.137.142:2181,192.168.137.143:2181/kafka \

            --topic test

    -- 5.4 假删除topic 

        bin/kafka-topics.sh  --delete \

            --zookeeper 192.168.137.141:2181,192.168.137.142:2181,192.168.137.143:2181/kafka \

            --topic ruozedata

                    Topic ruozedata is marked for deletion.

                    Note: This will have no impact if delete.topic.enable is not set to true.

                    delete.topic.enable=true,生产不设置该参数。

                    Q:这样删除了topic后,发送和接受数据的实验是否成功? 

                    A:可以的,因为这只是假删除,数据依然还在

    -- 5.5 真删除 彻底删除:

        kafka元数据在哪? zk 

            rmr /config/topics/ruozedata

            rmr /brokers/topics/ruozedata

            rmr /admin/delete_topics/ruozedata

        kafka数据在哪?   磁盘

            rm -rf $KAFKA_HOME/logs/ruozedata-*

        Q:删除了topic之后,重新新增这个topic,为什么没看到分区文件夹?

        A:找个空余时间重启一下kafka进程,分区文件夹便会出来

    -- 5.6 调大

        bin/kafka-topics.sh --alter \

            --zookeeper 192.168.137.141:2181,192.168.137.142:2181,192.168.137.143:2181/kafka \

            --partitions 2 --topic zp        (*****只能增长,不可以调小,这个是错的)

         

        bin/kafka-topics.sh --alter \

            --zookeeper 192.168.137.141:2181,192.168.137.142:2181,192.168.137.143:2181/kafka \

            --partitions 4 --topic zp    (调大了)

        

        kafka-topics.sh --describe \

            --zookeeper 192.168.137.141:2181,192.168.137.142:2181,192.168.137.143:2181/kafka \

            --topic zp    (查看调整结果)

6)kafka监控

    1. kafka eagle

        https://github.com/smartloli/kafka-eagle

        Version 1.2.1
        *******************************************************************
        * Kafka Eagle Service has started success!
        * Welcome, Now you can visit 'http://<your_host_or_ip>:port/ke'
        * Account:admin ,Password:123456
        *******************************************************************
        * <Usage> ke.sh [start|status|stop|restart|stats] </Usage>
        * <Usage> http://ke.smartloli.org/ </Usage>
        *******************************************************************
 

    2.Grafana  kafka0.10不成功的  kafka0.8

        prometheus + kafka    kubernetes        

        采集--》存储--》可视化

                ES/INFLUXDB

        数据采集: Metricbeat   

        数据存储: ES/INFLUXDB

        数据可视化 Grafana: web dashborad
 

    3.CDH kafka

        语法: TQS

        *****SELECT 

                   total_kafka_bytes_received_rate_across_kafka_broker_topics,

                   total_kafka_bytes_fetched_rate_across_kafka_broker_topics

                WHERE entityName = "kafka:onlinelogs" AND category = KAFKA_TOPIC

        total_kafka_bytes_received_rate_across_kafka_broker_topics  蓝色 写数据

        total_kafka_bytes_fetched_rate_across_kafka_broker_topics   绿色  读数据

     --Q:写和读的趋势是否一样?

        A:是一样

     --Q:写和读的趋势是否在同一时间是吻合的,假如是吻合的,为什么读的曲线图比写的曲线图高呢?

        A:吻合,1点写了100条数据,1点消费者100条,而不是1点05去消费

             消费及时,没有延时    

    --Q:为什么读的数据比写的数据多?

       A:如以下例子

            写:"123" 3B

            读:timestamp offset key value 拼接成一条json数据  20B   

     *****所以只要看图的趋势是不是及时消费的就行      

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值