zookeeper+kafka叢集安裝之二

來源:互聯網
上載者:User

zookeeper+kafka叢集安裝之二

此為上一篇文章的續篇, kafka安裝需要依賴zookeeper, 本文與上一篇文章都是真正分布式安裝配置, 可以直接用於生產環境.

zookeeper安裝參考:

http://blog.csdn.net/ubuntu64fan/article/details/26678877

首先瞭解幾個kafka中的概念:

假定我們有一個名稱為test的topic, 分區數目為2, 當我們發送到這個test具體的訊息"msg1:hello beijing"和"msg2:hello shanghai"的時候,我們如何知道訊息的發送路徑呢(發往哪個分區)?msg1如果被發送到分區test.1,則肯定不會發送到test.2. 資料發送直接選取決策受kafka.producer.Partitioner的影響:interface Partitioner {    int partition(java.lang.Object key, int numPartitions);}

一個虛擬碼的實現如下:

package org.mymibao.mq.client;import kafka.producer.Partitioner;public class DefaultKafkaPartitioner implements Partitioner {    private final static int FIRST_PARTITION_ID = 1;    public int partition(Object key, int numPartitions) {        return FIRST_PARTITION_ID;    }}

分區API根據相關的索引值以及系統中具有的代理分區的數量返回一個分區id。將該id用作索引,在broker_id和partition組成的經過排序的列表中為相應的生產者請求找出一個代理分區。預設的分區策略是hash(key)%numPartitions。如果key為null,那就進行隨機播放。使用partitioner.class這個配置參數可用插入自訂的分區策略.分區檔案不會跨越broker,但是多個broker上可以有某個topic的分區副本.

kafka安裝配置參考:

1)下載KAFKA

    $ wget http://apache.fayea.com/apache-mirror/kafka/0.8.1.1/kafka_2.9.2-0.8.1.1.tgz

安裝和配置參考上一篇文章:

http://blog.csdn.net/ubuntu64fan/article/details/26678877

2)配置$KAFKA_HOME/config/server.properties

我們安裝3個broker,分別在3個vm上:zk1,zk2,zk3:

zk1:

$ vi /etc/sysconfig/network

NETWORKING=yesHOSTNAME=zk1

$ vi $KAFKA_HOME/config/server.properties

broker.id=0port=9092host.name=zk1advertised.host.name=zk1...num.partitions=2...zookeeper.contact=zk1:2181,zk2:2181,zk3:2181

zk2:

$ vi /etc/sysconfig/network

NETWORKING=yesHOSTNAME=zk2

$ vi $KAFKA_HOME/config/server.properties

broker.id=1port=9092host.name=zk2advertised.host.name=zk2...num.partitions=2...zookeeper.contact=zk1:2181,zk2:2181,zk3:2181

zk3:

$ vi /etc/sysconfig/network

NETWORKING=yesHOSTNAME=zk3

$ vi $KAFKA_HOME/config/server.properties

broker.id=2port=9092host.name=zk3advertised.host.name=zk3...num.partitions=2...zookeeper.contact=zk1:2181,zk2:2181,zk3:2181

3)啟動zookeeper服務, 在zk1,zk2,zk3上分別運行:

$ zkServer.sh start

4)啟動kafka服務, 在zk1,zk2,zk3上分別運行:

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

5) 建立一個TOPIC(replication-factor=num of brokers)

$ kafka-topics.sh --create --topic test --replication-factor 3 --partitions 2 --zookeeper zk1:2181

6)假設我們在zk2上,開一個終端,發送訊息至kafka(zk2類比producer)

$ kafka-console-producer.sh --broker-list zk1:9092 --sync --topic test

在發送訊息的終端輸入:Hello Kafka

7)假設我們在zk3上,開一個終端,顯示訊息的消費(zk3類比consumer)

$ kafka-console-consumer.sh --zookeeper zk1:2181 --topic test --from-beginning
在消費訊息的終端顯示:Hello Kafka

8) 編程操作Producer和Consumer的例子參考:

http://shift-alt-ctrl.iteye.com/blog/1930791




聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.