zookeeper+kafka集群安装之二

zookeeper+kafka集群安装之二

此为上一篇文章的续篇, kafka安装需要依赖zookeeper, 本文与上一篇文章都是真正分布式安装配置, 可以直接用于生产环境.

zookeeper安装参考:

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

首先了解几个kafka中的概念:

  1. kafka是一个消息队列服务器,服务称为broker, 消息发送者称为producer, 消息接收者称为consumer;
  2. 通常我们部署多个broker以提供高可用性的消息服务集群.典型的是3个broker;
  3. 消息以topic的形式发送到broker,消费者订阅topic,实现按需取用的消费模式;
  4. 创建topic需要指定replication-factor(复制数目, 通常=broker数目);
  5. 每个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;
    }
}

分区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=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

$ vi $KAFKA_HOME/config/server.properties

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

$ vi $KAFKA_HOME/config/server.properties

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 $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

zookeeper+kafka集群安装之二,布布扣,bubuko.com

时间: 2024-10-27 08:08:23

zookeeper+kafka集群安装之二的相关文章

zookeeper+kafka集群安装之一

zookeeper+kafka集群安装之一 准备3台虚拟机, 系统是RHEL64服务版. 1) 每台机器配置如下: $ cat /etc/hosts ... # zookeeper hostnames: 192.168.8.182 zk1 192.168.8.183 zk2 192.168.8.184 zk3 2) 每台机器上安装jdk, zookeeper, kafka, 配置如下: $ vi /etc/profile ... # jdk, zookeeper, kafka export KA

Centos7安装zookeeper+kafka集群

Centos7安装zookeeper+kafka集群 1  Zookeeper和kafka简介 1)  ZooKeeper 是一个分布式的.分层级的文件系统,能促进客户端间的松耦合,并提供最终一致的,用于管理.协调Kafka代理,zookeeper集群中一台服务器作为Leader,其它作为Follower 2)  Apache Kafka 是分布式发布-订阅消息系统,kafka对消息保存时根据Topic进行归类,每个topic将被分成多个partition(区),每条消息在文件中的位置称为off

KafKa集群安装、配置

一.事前准备 1.kafka官网:http://kafka.apache.org/downloads. 2.选择使用版本下载. 3.kafka集群环境准备:(linux) 192.168.145.129   主机名:kafka01 192.168.145.130              kafka02 192.168.145.131              kafka03 4.本次安装版本:kafka_2.10-0.8.2.0 5.注意事项 ①:kafka依赖zookeeper集群. ②:集

Kafka集群安装与扩容

介绍略 集群安装: 一.准备工作: 1.版本介绍: 目前我们使用版本为kafka_2.9.2-0.8.1(scala-2.9.2为kafka官方推荐版本,此外还有2.8.2和2.10.2可以选择) 2.环境准备: 安装JDK6,目前使用版本为1.6,并配置JAVA_HOME 3.配置修改: 1)拷贝线上配置到本地kafka目录. 2)需要注意的是server.properties里broker和ip的指定,必须要唯一. 3)server.properties中log.dirs必须要手动指定.此配

Zookeeper+Kafka集群部署

Zookeeper+Kafka集群部署 主机规划: 10.200.3.85  Kafka+ZooKeeper 10.200.3.86  Kafka+ZooKeeper 10.200.3.87  Kafka+ZooKeeper 软件下载地址: #wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz #wget http://mirror.bit.edu.cn/apache/

Centos7.4 kafka集群安装与kafka-eagle1.3.9的安装

Centos7.4 kafka集群安装与kafka-eagle1.3.9的安装 集群规划: hostname Zookeeper Kafka kafka-eagle kafka01 √ √ √ kafka02 √ √ kafka03 √ √ 准备工作: 网络配置 vim /etc/sysconfig/network-scripts/ifcfg-ens33 # kafka01 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=sta

1.2 Zookeeper伪集群安装

1.2  Zookeeper伪集群安装 zookeeper单机安装配置可以查看 1.1 zookeeper单机安装 1.复制三份zookeeper,分别为zookeeper-3.4.7-node1,zookeeper-3.4.7-node2,zookeeper-3.4.7-node3 2.修改每个zookeeper文件夹下的配置文件 大部分配置与单机相同,核心为server的配置 server.1=localhost:2887:3887 server.2=localhost:2888:3888

Hadoop初学指南(10)--ZooKeeper的集群安装和操作

本文简单介绍了ZooKeeper的基本知识. (1)概述 ①什么是ZooKeeper? Zookeeper 是 Google 的 Chubby一个开源的实现,是 Hadoop 的分布式协调服务 它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等 ②Zookeeper的角色 ③为什么使用Zookeeper? 大部分分布式应用需要一个主控.协调器或控制器来管理物理分布的子进程(如资源.任务分配等) 目前,大部分应用需要开发私有的协调程序,缺乏一个通用的机制 协调程序的

Kafka集群安装和配置(二)

(一).环境介绍1.服务器的相关设置:1.kafka1:172.20.67.522.kafka2:172.20.67.563.kafka3:172.20.67.57 2.zookeeper所需的三个端口1.21812.28883.3888三个端口的作用:2181:对客户端提供服务2888:集群内机器通讯使用(Leader监听此端口)3888:选举leader使用 3.kafka 所需的端口9092:kafka所需的端口 (二).kafka集群的安装配置 (1).kafka1172.20.67.5