大數據實戰(2)---分佈式消息隊列:Kafka

1.Kafka概述

    1.概述

    媽媽:生產者
    你:消費者
    饅頭:數據流、消息

        正常情況下: 生產一個  消費一個
        其他情況:  
            一直生產,你喫到某一個饅頭時,你卡主(機器故障), 饅頭就丟失了
            一直生產,做饅頭速度快,你喫來不及,饅頭也就丟失了

        拿個碗/籃子,饅頭做好以後先放到籃子裏,你要喫的時候去籃子裏面取出來喫

    籃子/框: Kafka
        當籃子滿了,饅頭就裝不下了,咋辦?
        多準備幾個籃子 === Kafka的擴容

 

1)訂閱與消費
2)高效的處理
3)安全的分佈式存儲
4)可以做流處理(但是很少用)

    2.Kafka架構

    Kafka架構
    producer:生產者,就是生產饅頭(老媽)
    consumer:消費者,就是喫饅頭的(你)
    broker:籃子
    topic:主題,給饅頭帶一個標籤,topica的饅頭是給你喫的,topicb的饅頭是給你弟弟喫

   3.單節點多broker部署

    複製server.properties_0,修改:broker.id=0,端口號:9092,日誌名稱_0

           server.properties_1,修改:broker.id=1,端口號:9093,日誌名稱_1

           ......

   4.Kafka容錯性

          結論:多broker時,只要有一個broker正常,正常的broker就會被選舉爲leader,正常使用。

   5.API編程

          向Kafka發送數據:調用producer.send(new keyedMessage<Integer,String>(topic,message));

          消費Kafka數據:

  //String : topic
  //List<KafkaStream<byte[],byte[]>> 對應的數據流
  Map<String,List<KafkaStream<byte[],byte[]>>>  messageStream =  consumer.createMessageStreams(topicCountMap);
KafkaStream<byte[],byte[]> stream =  messageStream.get(topic).get(0);   //獲取我們每次接受到的數據
ConsumerIterator<byte[],byte[]> iterator = stream.iterator();

   6.相關命令

虛擬機上啓動kafka:

cd /home/hadoop/app/kafka_2.11-0.9.0.0/

kafka-server-start.sh $KAFKA_HOME/config/server.properties

後臺啓動:加-daemon

kafka-server-start.sh -daemon config/server-1.properties &

創建一個topic:zk

kafka-topics.sh --create --zookeeper hadoop000:2181 --replication-factor 1 --partitions 1 --topic hello_topic

(--replication-factor 1(分區信息) --partitions 1(副本信息))

查所有topic:

kafka-topics.sh --list --zookeeper hadoop000:2181

發送消息:broker

kafka-console-producer.sh --broker-list hadoop000:9092 --topic hello_topic

消費消息: zk

kafka-console-consumer.sh --zookeeper hadoop000:2181 --topic hello_topic --from-beginn

(--from-beginn 重啓後消費從開始的所有數據)

查看所有topic的詳細信息:kafka-topics.sh --describe --zookeeper hadoop000 :2181

查看指定topic的詳細信息:kafka-topics.sh --describe --zookeeper hadoop000:2181 --topic hello_topic

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章