Kafka Shell基本命令(包括topic的增刪改查)


轉載請注明出處:http://www.cnblogs.com/xiaodf/

創建kafka topic

bin/kafka-topics.sh --zookeeper node01:2181 --create --topic t_cdr --partitions 30  --replication-factor 2

注: partitions指定topic分區數,replication-factor指定topic每個分區的副本數

  • partitions分區數:

    • partitions :分區數,控制topic將分片成多少個log。可以顯示指定,如果不指定則會使用broker(server.properties)中的num.partitions配置的數量
    • 雖然增加分區數可以提供kafka集群的吞吐量、但是過多的分區數或者或是單台服務器上的分區數過多,會增加不可用及延遲的風險。因為多的分區數,意味着需要打開更多的文件句柄、增加點到點的延時、增加客戶端的內存消耗。
    • 分區數也限制了consumer的並行度,即限制了並行consumer消息的線程數不能大於分區數
    • 分區數也限制了producer發送消息是指定的分區。如創建topic時分區設置為1,producer發送消息時通過自定義的分區方法指定分區為2或以上的數都會出錯的;這種情況可以通過alter –partitions 來增加分區數。
  • replication-factor副本

    • replication factor 控制消息保存在幾個broker(服務器)上,一般情況下等於broker的個數。
    • 如果沒有在創建時顯示指定或通過API向一個不存在的topic生產消息時會使用broker(server.properties)中的default.replication.factor配置的數量

查看所有topic列表

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

查看指定topic信息

bin/kafka-topics.sh --zookeeper node01:2181 --describe --topic t_cdr

控制台向topic生產數據

bin/kafka-console-producer.sh --broker-list node86:9092 --topic t_cdr

控制台消費topic的數據

bin/kafka-console-consumer.sh  --zookeeper node01:2181  --topic t_cdr --from-beginning

查看topic某分區偏移量最大(小)值

bin/kafka-run-class.sh kafka.tools.GetOffsetShell --topic hive-mdatabase-hostsltable  --time -1 --broker-list node86:9092 --partitions 0

注: time為-1時表示最大值,time為-2時表示最小值

增加topic分區數

為topic t_cdr 增加10個分區

bin/kafka-topics.sh --zookeeper node01:2181  --alter --topic t_cdr --partitions 10

刪除topic,慎用,只會刪除zookeeper中的元數據,消息文件須手動刪除

bin/kafka-run-class.sh kafka.admin.DeleteTopicCommand --zookeeper node01:2181 --topic t_cdr

查看topic消費進度

這個會顯示出consumer group的offset情況, 必須參數為--group, 不指定--topic,默認為所有topic

Displays the: Consumer Group, Topic, Partitions, Offset, logSize, Lag, Owner for the specified set of Topics and Consumer Group

bin/kafka-run-class.sh kafka.tools.ConsumerOffsetChecker

required argument: [group] 
Option Description 
------ ----------- 
--broker-info Print broker info 
--group Consumer group. 
--help Print this message. 
--topic Comma-separated list of consumer 
   topics (all topics if absent). 
--zkconnect ZooKeeper connect string. (default: localhost:2181)

Example,

bin/kafka-run-class.sh kafka.tools.ConsumerOffsetChecker --group pv

Group           Topic              Pid Offset   logSize    Lag    Owner 
pv              page_visits        0   21       21         0      none 
pv              page_visits        1   19       19         0      none 
pv              page_visits        2   20       20         0      none

以上圖中參數含義解釋如下:
topic:創建時topic名稱
pid:分區編號
offset:表示該parition已經消費了多少條message
logSize:表示該partition已經寫了多少條message
Lag:表示有多少條message沒有被消費。
Owner:表示消費者

細看kafka-run-class.sh腳本,它是調用 了ConsumerOffsetChecker的main方法,所以,我們也可以通過java代碼來訪問scala的ConsumerOffsetChecker類,代碼如下:

import kafka.tools.ConsumerOffsetChecker;  
  
/** 
 * kafka自帶很多工具類,其中ConsumerOffsetChecker能查看到消費者消費的情況, 
 * ConsumerOffsetChecker只是將信息打印到標准的輸出流中 
 * 
 */  
public class RunClass  {  
    public static void main(String[] args)  {  
        //group-1是消費者的group名稱,可以在zk中  
        String[] arr = new String[]{"--zookeeper=192.168.199.129:2181,192.168.199.130:2181,192.168.199.131:2181/kafka","--group=group-1"};  
        ConsumerOffsetChecker.main(arr);  
    }  
}  

推薦閱讀:
強烈推薦極客時間王爭老師的《數據結構與算法之美》課程,目前已有8萬多人購買,應該是極客時間購買人數最多的課程,有需要的可以掃下面二維碼購買。質量絕對優質,反正我讀了受益匪淺。比如講Redis的有序集合底層數據結構為什么用跳表時,老師會從二叉搜索樹,B+樹開始講起,讓你同時了解了這三種數據結構的異同和應用場景。

更多文章

MapReduce Shuffle 和 Spark Shuffle 原理概述

知識圖譜在大數據中的應用

基於 Apache Flink 和規則引擎的實時風控解決方案


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM