(二)Kafka基本概念簡介及常用命令

一、Kafka簡介
1.Kafka---A distributed streaming platform
很多企業(yè)還是用作消息中間件子刮,其他的消息中間件還有 MQ Redis
2.術(shù)語
broker中間環(huán)節(jié),是一個kafka進程仇哆,作用是數(shù)據(jù)存儲
生產(chǎn)者 producer
消費者 consumer
企業(yè)應(yīng)用:Flume-->Kafka-->Spark Streaming
3.特點:

  1. 發(fā)布和訂閱(publish and subscribe) Read and write streams of data like a messaging system
  2. 實時app Write scalable stream processing applications that react to events in real-time.
  3. 分布式失暴、副本數(shù)、高容錯 Store streams of data safely in a distributed, replicated, fault-tolerant cluster.
    4.kafka源代碼是用scala編寫的
    5.基本概念:
  4. topic: 主題
  5. partitions: 分區(qū) 分區(qū)下標從0開始返敬,假設(shè)3個分區(qū),分區(qū)下標分別為-0寥院,-1劲赠,-2,體現(xiàn)了高并發(fā)讀寫的特點
[hadoop@hadoop000 kafka-logs]$ ll
total 32
-rw-rw-r--. 1 hadoop hadoop    0 Sep 26 23:51 cleaner-offset-checkpoint
drwxrwxr-x. 2 hadoop hadoop 4096 Sep 26 23:58 huluwa_kafka_streaming-0
drwxrwxr-x. 2 hadoop hadoop 4096 Sep 27 03:10 huluwa_offset-0
-rw-rw-r--. 1 hadoop hadoop   54 Sep 26 23:51 meta.properties
-rw-rw-r--. 1 hadoop hadoop   76 Sep 27 09:13 recovery-point-offset-checkpoint
-rw-rw-r--. 1 hadoop hadoop   77 Sep 27 09:13 replication-offset-checkpoint
drwxrwxr-x. 2 hadoop hadoop 4096 Sep 27 08:54 test-0
drwxrwxr-x. 2 hadoop hadoop 4096 Sep 27 08:54 test-1
drwxrwxr-x. 2 hadoop hadoop 4096 Sep 27 08:54 test-2
[hadoop@hadoop000 kafka-logs]$ cd test-0
[hadoop@hadoop000 test-0]$ ll
total 4
-rw-rw-r--. 1 hadoop hadoop 10485760 Sep 27 08:54 00000000000000000000.index
-rw-rw-r--. 1 hadoop hadoop       70 Sep 27 08:55 00000000000000000000.log
  1. replication-factor:副本因子只磷,指的是每個partition有幾個副本经磅,體現(xiàn)了高容錯的特點



    假設(shè)kafka集群有三臺機器,3個partition钮追,3個副本,3個副本分別坐落在三臺機器上阿迈,此時有一條數(shù)據(jù)寫入機器1的partition-0元媚,那么它的另外兩個副本必然是寫在機器2的partition-0和機器3的partition-0中,并不是三個副本分別處于partition-0,partition-1和partition-2中
    二刊棕、常用命令
    1.創(chuàng)建一個topic

bin/kafka-topics.sh --create \
--zookeeper localhost:2181 \
--replication-factor 1 \
--partitions 3 \
--topic test
集群:--zookeeper computer1:2181,computer2:2181,computer3:2181/kafka

2.查看當前的topic信息

bin/kafka-topics.sh \
--list \
--zookeeper localhost:2181
集群:--zookeeper computer1:2181,computer2:2181,computer3:2181/kafka

3.發(fā)送數(shù)據(jù) 生產(chǎn)者

bin/kafka-console-producer.sh \
--broker-list localhost:9092 \
--topic test
集群:--broker-list computer1:9092, computer2:9092, computer3:9092

4.接收數(shù)據(jù) 消費者

bin/kafka-console-consumer.sh \
--zookeeper localhost:2181 \
--topic test \
--from-beginning
集群:--zookeeper computer1:2181,computer2:2181,computer3:2181/kafka

發(fā)送幾條數(shù)據(jù)測試一下:

[hadoop@hadoop000 kafka]$ bin/kafka-console-producer.sh \
> --broker-list localhost:9092 \
> --topic test
spark
1
2
3
4
5
-------------------------------------------------------------------------------------------------------------
[hadoop@hadoop000 kafka]$ bin/kafka-console-consumer.sh \
> --zookeeper localhost:2181 \
> --topic test \
> --from-beginning
spark
2
1
3
4
5

可以正常發(fā)送和接收數(shù)據(jù)
先把producer和consumer都關(guān)掉炭晒,再打開consumer,觀察到:

[hadoop@hadoop000 kafka]$ bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
spark
3
2
5
1
4

數(shù)據(jù)的順序變了甥角,這就是分區(qū)有序网严,全局無序(單個分區(qū)內(nèi)數(shù)據(jù)有序,全局看是無序的)思考如何保證生產(chǎn)上全局有序
核心點:根據(jù)數(shù)據(jù)的特征設(shè)置一個拼裝的key嗤无,把相同特征的數(shù)據(jù)比如(mysql里所有處理id=1的數(shù)據(jù)的語句)發(fā)送到同一個topic的1個分區(qū)內(nèi)
hash(key) 取模
5.描述

bin/kafka-topics.sh \
--describe \
--zookeeper localhost:2181 \
--topic test
集群:--zookeeper computer1:2181,computer2:2181,computer3:2181/kafka

在集群環(huán)境下:

[hadoop@hadoop000 kafka]$ bin/kafka-topics.sh \
> --describe \
> --zookeeper computer1:2181,computer2:2181,computer3:2181/kafka \
> --topic test
Topic:test      PartitionCount:3        ReplicationFactor:3     Configs:
        Topic: test     Partition: 0    Leader: 1       Replicas: 1,2,3     Isr: 1,2,3
        Topic: test     Partition: 1    Leader: 2       Replicas: 2,3,1     Isr: 2,3,1
        Topic: test     Partition: 2    Leader: 3       Replicas: 3,1,2     Isr: 3,1,2

當id=1的機器掛掉之后:

Topic:test      PartitionCount:3        ReplicationFactor:3     Configs:
        Topic: test     Partition: 0    Leader: 2       Replicas: 1,2,3     Isr: 2,3
        Topic: test     Partition: 1    Leader: 2       Replicas: 2,3,1     Isr: 2,3,1
        Topic: test     Partition: 2    Leader: 3       Replicas: 3,1,2     Isr: 3,1,2

6.更改分區(qū)數(shù)(用在并發(fā)不夠震束,加機器的場景下)

bin/kafka-topics.sh \
--alter \
--zookeeper localhost:2181 \
--topic test \
--partitions 4

添加分區(qū)數(shù)不會重新分布數(shù)據(jù)

Topic:test      PartitionCount:4        ReplicationFactor:3     Configs:
        Topic: test     Partition: 0    Leader: 2       Replicas: 1,2,3     Isr: 2,3,1
        Topic: test     Partition: 1    Leader: 2       Replicas: 2,3,1     Isr: 2,3,1
        Topic: test     Partition: 2    Leader: 3       Replicas: 3,1,2     Isr: 3,1,2
        Topic: test     Partition: 3    Leader: 1       Replicas: 1,3,2     Isr: 1,3,2

7.刪除
bin/kafka-topics.sh
--delete
--zookeeper localhost:2181
--topic test
集群:--zookeeper computer1:2181,computer2:2181,computer3:2181/kafka

[hadoop@hadoop000 kafka]$ bin/kafka-topics.sh \
> --delete \
> --zookeeper localhost:2181 \
> --topic test
Topic test is marked for deletion.
Note: This will have no impact if delete.topic.enable is not set to true.
[hadoop@hadoop000 kafka]$ bin/kafka-topics.sh \
> --list \
> --zookeeper localhost:2181
huluwa_kafka_streaming
huluwa_offset
test - marked for deletion

如果不在server.properties中添加:delete.topic.enable=true,這條命令其實并不執(zhí)行刪除動作当犯,僅僅是在zookeeper上標記該topic要被刪除而已垢村,通過命令標記了test-topic要被刪除之后Kafka是怎么執(zhí)行刪除操作的呢?下面介紹一個能徹底刪除的方法:

[hadoop@hadoop000 bin]$ ./zkCli.sh
//先刪除元數(shù)據(jù)
[zk: localhost:2181(CONNECTED) 0]  rmr /kafka/admin/delete_topics/test
[zk: localhost:2181(CONNECTED) 0]  rmr /kafka/config/topics/test
[zk: localhost:2181(CONNECTED) 0]  rmr /kafka/brokers/topics/test  
//再刪除真實數(shù)據(jù)
[hadoop@hadoop000 ~]$ cd $KAFKA_HOME
[hadoop@hadoop000 kafka]$ rm -rf logs/test-*  
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末嚎卫,一起剝皮案震驚了整個濱河市嘉栓,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌拓诸,老刑警劉巖侵佃,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異奠支,居然都是意外死亡馋辈,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進店門胚宦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來首有,“玉大人,你說我怎么就攤上這事枢劝【” “怎么了?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵您旁,是天一觀的道長烙常。 經(jīng)常有香客問我,道長鹤盒,這世上最難降的妖魔是什么蚕脏? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮侦锯,結(jié)果婚禮上驼鞭,老公的妹妹穿的比我還像新娘。我一直安慰自己尺碰,他們只是感情好挣棕,可當我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布译隘。 她就那樣靜靜地躺著,像睡著了一般洛心。 火紅的嫁衣襯著肌膚如雪固耘。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天词身,我揣著相機與錄音厅目,去河邊找鬼。 笑死法严,一個胖子當著我的面吹牛损敷,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播渐夸,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼嗤锉,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了墓塌?” 一聲冷哼從身側(cè)響起瘟忱,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎苫幢,沒想到半個月后访诱,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡韩肝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年触菜,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片哀峻。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡涡相,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出剩蟀,到底是詐尸還是另有隱情催蝗,我是刑警寧澤,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布育特,位于F島的核電站丙号,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏缰冤。R本人自食惡果不足惜犬缨,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望棉浸。 院中可真熱鬧怀薛,春花似錦、人聲如沸迷郑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽三热。三九已至鼓择,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間就漾,已是汗流浹背呐能。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留抑堡,地道東北人摆出。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像首妖,于是被迫代替她去往敵國和親偎漫。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,691評論 2 361

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理有缆,服務(wù)發(fā)現(xiàn)象踊,斷路器,智...
    卡卡羅2017閱讀 134,713評論 18 139
  • 姓名:周小蓬 16019110037 轉(zhuǎn)載自:http://blog.csdn.net/YChenFeng/art...
    aeytifiw閱讀 34,728評論 13 425
  • Kafka入門經(jīng)典教程-Kafka-about云開發(fā) http://www.aboutyun.com/threa...
    葡萄喃喃囈語閱讀 10,842評論 4 54
  • 大致可以通過上述情況進行排除 1.kafka服務(wù)器問題 查看日志是否有報錯棚壁,網(wǎng)絡(luò)訪問問題等杯矩。 2. kafka p...
    生活的探路者閱讀 7,595評論 0 10
  • 我來到了蕪湖,連我都不知道我為什么會來到這里袖外,剛開始的地方是宣城史隆,宣城還是有一定的原因,因為我喜歡“宣城”這樣的名...
    穆諾閱讀 350評論 0 0