ITPub博客

首页 > 大数据 > 数据分析 > kafka集群安装

kafka集群安装

数据分析 作者:破棉袄 时间:2014-09-10 16:06:53 0 删除 编辑


首先了解几个kafka中的概念:
kafka是一个消息队列服务器,服务称为broker, 消息发送者称为producer, 消息接收者称为consumer;通常我们部署多个broker以提供高可用性的消息服务集群.典型的是3个broker;消息以topic的形式发送到broker,消费者订阅topic,实现按需取用的消费模式;创建topic需要指定replication-factor(复制数目, 通常=broker数目);每个topic可能有多个分区(partition), 每个分区的消息内容不会重复:

假定我们有一个名称为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;
    }
}

kafka安装配置参考:

1)下载KAFKA
$ wget http://apache.fayea.com/apache-mirror/kafka/0.8.1.1/kafka_2.9.2-0.8.1.1.tgz

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

我们安装3个broker,分别在3个vm上:zk1,zk2,zk3:

zk1:
$ vi /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=zk1

$ vi $KAFKA_HOME/config/server.properties 
broker.id=0
port=9092
host.name=zk1
advertised.host.name=zk1
...
num.partitions=2
...
zookeeper.contact=zk1:2181,zk2:2181,zk3:2181

zk2:
$ vi /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=zk2

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

zk3: 
$ vi /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=zk3


broker.id=2
port=9092
host.name=zk3
advertised.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  ../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

原文:http://blog.csdn.net/ubuntu64fan/article/details/2668

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29754888/viewspace-1267107/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: Storm DRPC 使用
请登录后发表评论 登录
全部评论

注册时间:2014-07-16

  • 博文量
    180
  • 访问量
    1158175