kafka&zookeeper

1、搭建Zookeeper集群
Zookeeper是一个分布式开源框架,提供了协调分布式应用的基本服务,它向外部应用暴露一组通用服务——分布式同步(Distributed Synchronization)、命名服务(Naming Service)、集群维护(Group Maintenance)等,简化分布式应用协调及其管理的难度,提供高性能的分布式服务。ZooKeeper自己能够以单机模式安装运行,不过它的长处在于经过分布式ZooKeeper集群(一个Leader,多个Follower),基于必定的策略来保证ZooKeeper集群的稳定性和可用性,从而实现分布式应用的可靠性。apache

1.在zookeeper.apache.org上下载zookeeper-3.4.8.tar.gz
2.解压 tar -xzvf zookeeper-3.4.8.tar.gz
3.修改权限 sudo chown -R cms(ubuntu用户名) zookeeper-3.4.8
4.修改配置文件 /etc/profile,增长ubuntu

kafka&zookeeper
5.对Zookeeper的配置文件的参数进行设置
进入zookeeper-3.4.5/conf
1)cp zoo_sample.cfg zoo.cfg
2)在zookeeper下新建一个存放数据的目录
mkdir zookerperdata
3)vim zoo.cfgkafka&zookeeper
4)注意上图的配置中master,slave1分别为主机名
在上面的配置文件中"server.id=host:port:port"中的第一个port是从机器(follower)链接到主机器(leader)的端口号,第二个port是进行leadership选举的端口号。
5)建立myid
接下来在dataDir所指定的目录下(zookeeper-3.4.8/zookerperdata/)建立一个文件名为myid的文件,文件中的内容只有一行,为本主机对应的id值,也就是上图中server.id中的id。例如:在服务器1中的myid的内容应该写入1。
vim myid
6)远程复制到slave1,slave2相同的目录下
scp -r zookeeper-3.4.8 cms@slave1:/home/cms/
scp -r zookeeper-3.4.8 cms@slave1:/home/cms/
7)修改slave1,slave2机器上的myid的值分别为2和3
启动ZooKeeper集群
在ZooKeeper集群的每一个结点上,执行启动ZooKeeper服务的脚本,以下所示:vim

kafka&zookeeperkafka&zookeeperkafka&zookeeper
其中,QuorumPeerMain是zookeeper进程,启动正常。
如上依次启动了全部机器上的Zookeeper以后能够经过ZooKeeper的脚原本查看启动状态,包括集群中各个结点的角色(或是Leader,或是Follower),以下所示,是在ZooKeeper集群中的每一个结点上查询的结果服务器

2、搭建kafka集群
kafka&zookeeper
1.下载
下载官网:http://kafka.apache.org/downloads
下载版本:与本身安装的Scala版本对应的版本,我的习惯是下载最新版本的前一版
kafka_2.11-0.10.0.1.tgz
2.安装
tar -xzf kafka_2.11-0.10.0.1.tgz
cp kafka_2.11-0.10.0.1.tgz /home/cms/kafka
3.配置环境变量
即path、classpath,意义不大,可不配置
4.修改配置文件kafka/config/server.properties
kafka&zookeeper
5.在kafka的目录下,创建kafka存储数据的目录
mkdir kafkalogs
6.其余节点配置
将kafka文件复制到其余节点
kafka&zookeeper
broker.id=1 #整个集群内惟一id号,整数,通常从0开始
listeners=PLAINTEXT://192.168.31.132:9092 #协议、当前broker机器ip、端口
port=9092 #broker端口
host.name=192.168.31.132 #broker 机器ip框架

7.每一个节点下启动zookerper
8.启动kafka进程,在每一个节点的kafka/bin目录下分布式

--zookeeper : zookeeper集群列表,用英文逗号分隔。能够不用指定zookeeper整个集群内的节点列表,只指定某个或某几个zookeeper节点列表也是你能够的
replication-factor : 复制数目,提供failover机制;1表明只在一个broker上有数据记录,通常值都大于1,表明一份数据会自动同步到其余的多个broker,防止某个broker宕机后数据丢失。
partitions : 一个topic能够被切分红多个partitions,一个消费者能够消费多个partitions,但一个partitions只能被一个消费者消费,因此增长partitions能够增长消费者的吞吐量。kafka只保证一个partitions内的消息是有序的,多个一个partitions之间的数据是无序的。ide

9.启动生产者和消费者
生产者:kafka-console-producer.sh --broker-list 192.168.31.131:9092 --topic test5
--broker-list : 值能够为broker集群中的一个或多个节点
消费者:
kafka-console-consumer.sh --zookeeper 192.168.31.131:2181,192.168.31.132:2181,192.168.31.133:2181 --topic test5 --from-beginning
--zookeeper : 值能够为zookeeper集群中的一个或多个节点
--from-beginning 表示从开始第一个消息开始接收性能

10.查看topic
kafka-topics.sh --list --zookeeper 192.168.31.131:2181,192.168.31.132:2181,192.168.31.133:2181
11.查看topic详情
kafka-topics.sh --describe --zookeeper 192.168.31.131:2181,192.168.31.132:2181,192.168.31.133:2181 --topic test5
kafka&zookeeperspa

状态说明:test有三个分区分别为一、二、3,分区0的leader是3(broker.id),分区0有三个副本,而且状态都为lsr(ln-sync,表示能够参加选举成为leader)。server

12.建立分区为三、备份为3的topic
bin/kafka-topics.sh --create --zookeeper 192.168.31.131:2181,192.168.31.132:2182,192.168.31.133:2183 --replication-factor 3 --partitions 3 --topic test5

13.删除topic
在config/server.properties中加入delete.topic.enable=true并重启服务,在执行以下命令

kafka-topics.sh --delete --zookeeper 192.168.31.131:2181,192.168.31.132:2181,192.168.31.133:2181 --topic test5

相关文章
相关标签/搜索