kafka的安裝及使用

G_scsd發表於2018-04-26

先來說下kafka是個什麼東西,它是一個訊息中介軟體框架,只負責釋出--訂閱(幫忙存東西的)

接著給大家看一張大致的kafka流程圖

        

      首先打個比方,kafka好比就是中央電視臺,而中央電視臺下面有很多節目,生產者就是製作節目的團隊,而消費者就是我們觀看這個節目的人,一開始在zookeeper建立一個節目,假設就叫cctv1,有了這個節目名後,我們就得請一個團隊來填充這個節目,比如拉廣告啊,放電視劇之類的資料,而我們消費者要觀看這個節目的話就得需要zookeeper來授權給我們。中央電視臺則只是存資料的,相當於一箇中間人,和現在中介差不多個意思。

1.  下載kafka的安裝包到電腦上並傳輸到Linux中的hadoop使用者下

         

2.  將這個壓縮包解壓到hadoop使用者的opt目錄下

         

接著就會在opt目錄下看到這個資料夾

        

3.  進入到該目錄下 /home/hadoop/opt/kafka_2.11-1.1.0/config目錄,將   zookeeper.properties  中的資訊篩選出來並將篩選出來的資料給一個新建的檔案zk.properties

       

接著vi zk.properties這個檔案,修改dataDir,將來zookeeper的資訊都記錄在這個資料夾下dataDir=/home/hadoop/zk/

      

4.  啟動zookeeper

    要在該/home/hadoop/opt/kafka_2.11-1.1.0目錄下啟動

      ./bin/zookeeper-server-start.sh config/zk.properties

     

    接著我們複製該視窗,jps一下,就會看到新開的服務QuorumPeerMain(仲裁的一個機制的東西),這個東西就是zookeeper的程式

     

5.  啟動broker(kafka)

 我們這個是單機模式:

    進入該目錄/home/hadoop/opt/kafka_2.11-1.1.0/config,和上面一樣,將一個檔案的資料重定向到另一個新目錄,將帶有#註釋的程式碼去掉

     cat server.properties | grep -v '#' >>kafka1.properties

     

    然後啟動kafka,要在bin目錄下,和上面一樣

      ./bin/kafka-server-start.shconfig/kafka1.properties

     

    啟動了後,jps一下,就會發現啟動了一個名叫Kafka的程式,說明我們已經啟動成功了

            

6. 建立一個主題

    這裡相當於中央電視臺建立了一個叫cctv1的節目

      還是在/home/hadoop/opt/kafka_2.11-1.1.0目錄下啟動建立

                                   建立   到 zookeeper 上 地址是       

  ./bin/kafka-topics.sh--create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topiccctv1(主題名)

   

     然後就可以用命令檢視一下該主題是否已經建立,看到這個cctv1就說明建立成功了

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

   

  到這裡就已經完成了kafka在zookeeper上建立了一個cctv1的主體,然後就需要一個生產者來製作節目,並往cctv1中灌入資料

7.  釋出訊息(生產者)

     ./bin/kafka-console-producer.sh --broker-listlocalhost:9092 --topic cctv1

    

這是一個kafka自帶的控制檯的訊息者,這裡要注意的一點是埠號為9092,說明這個東西預設監控的埠號是9092,我們可以來看下這個埠

       檢視server.properties這個檔案

         

    會看到箭頭指向的地方有個註釋,如果不想用這個埠,可以把這句前面的#去掉,然後將埠號改為自己想監控的埠號

         

      也可以來檢視下這個埠號,發現正在監控

         

   隨機輸入兩條資料,並沒有什麼變化,因為這個資料borker(經理人)幫忙存著,但這個資料看不到,必須要有一個消費者幫忙消費才能看到

        

8.  啟動消費者

      相當於訂閱了cctv1這個頻道

   ./bin/kafka-console-consumer.sh--bootstrap-server localhost:9092 --topic cctv1

      

   啟動消費者後,並沒有發生什麼變化,這時候我們就在生產者中再輸入幾條訊息 

      

    接著就會看到消費者那邊出來了資料,但看到的資料只有剛剛輸入的

      

   那之前輸入的資料怎麼看?

     輸入這個命令就行了

       ./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092--topic cctv1 --from-beginning

      意識就是在啟動消費者時後面加了一個 --from-beginning,就是說明這個cctv1電視臺成數字電視臺了,可以點播,可以看之前所有的資訊,--from-beginning表示從開頭開始看,其實它可以從任意一個偏移量開始看

     

  隨後再來實驗一下,我們在生產者那裡接著再輸入多條資料

    

  隨後發現消費者也出來對應的資料

    

  而我們剛剛啟動查詢所有的資訊的那個服務裡面也顯示出相應的資訊

    


注意:

     zookeeper只能啟動單數,比如1臺 、3臺、7臺等等,不能偶數臺,偶數臺的話假設有兩臺,那麼只有一臺機器再執行,因為如果是偶數的話,選舉出來的管理者有可能兩個borker得到的票數相同,奇數的話就不會出現這個情況

     上面演示的是簡單的操作,我們也可以在kafka上寫如何放資料,如何讀資料,全部用程式碼來實現。












相關文章