设为首页 加入收藏

TOP

Apache Kafka0.10.0.0集群部署
2018-12-14 10:32:36 】 浏览:43
Tags:Apache Kafka0.10.0.0 集群 部署

转载请注明出处:http://blog.csdn.net/u012842205/article/details/73250288

Kafka集群部署需要依赖一个Zookeeper集群,用于Kafka broker之间的消息触发。不建议使用Kafka内嵌的Zookeeper。本文不对Zookeeper部署做描述。另外,Kafka是Java语言实现的,也必须有JDK,部署前确定环境变量,用户名称。


一、环境

1、操作系统

Ubuntu 16.04.1 LTS x86_64

Debian 8.7 x86_64

CentOS Linux release 7.2.1511 (Core)

分别部署在三个不同的节点上,系统不同。


2、Zookeeper

Apache Zookeeper3.4.8


3、Kafka

Apache Kafka2.11-0.10.0.0


4、JDK

Oracle JDK1.8.1_101


二、下载解压

由于Kafka各个节点(Broker)是对等的,配置基本相同,所以我们只需要配置一个节点,并复制这个节点的配置到其他节点调整即可。

1、创建kafka用户

这一步可忽略,我是为方便管理各个组件,选择每个组件都创建一个用户。使用命令如下:

adduser kafka

CentOS的节点可能这个命令和Debian节点不太一样,设置密码可以使用passwd。请使用root用户创建这个用户。


2、从官网下载Kafka的部署包

下载地址:http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/0.10.2.0/kafka_2.11-0.10.2.0.tgz

切换到kafka用户,没操作上一步的忽略用户切换。解压部署包到/home/kafka根目录:

tar -xzvf ./kafka_2.11-0.10.2.0.tgz -C /home/kafka

三、安装配置

Kafka broker的配置主要是部署根目录中的conf/server.properties文件,最基本的配置如下:

# broker节点的唯一标示
broker.id=1

# broker监听请求的socket地址
listeners=PLAINTEXT://vubuntuez1:9092

# Zookeeper Quorums地址
zookeeper.connect=vubuntuez1:2181,vcentosez2:2181,vdebianez3:2181

# 数据日志存放位置
log.dirs=/home/kafka/kafka_2.11-0.10.0.0/datalogs

第一个是属性唯一标示这个kafka broker,所以每个节点都要配置不同的int,确保部署的每个broker这个值是集群中唯一的。

listeners设置用于broker监听生产者和消费者请求,只用修改hostname和port即可,本例中hostname是vubuntuez1,port是9092默认值。

zookeeper.connect用于设置zookeeper Quorum地址。以逗号分隔开。每个节点配置格式为hostname:port

log.dirs配置Kafka接入数据的存储文件位置,所有进入Kafka的数据都会存盘,并在过时后清理掉。若目录不存在,请手动创建。


四、后续配置

按上面两步配置其他两个节点,或者直接复制部署目录到其他节点,复制后记得修改各节点的broker.id,保证唯一性。


五、启动服务

Kafka各个broker都是对等的,分别开启三个节点的服务即可。切换路径到kafka部署目录,命令如下,也可以写成脚本:

bin/kafka-server-start.sh -daemon config/server.properties

查看kafka部署目录的日志文件./logs/server.log,确保运行稳定,没有抛出异常。


六、创建主题

创建主题一般都使用随Kafka释出的工具bin/kafka-topics.sh,如下例子我们创建一个名为eztest的主题,分区数为3,冗余存储2份:

bin/kafka-topics.sh --create --zookeeper vubuntuez1:2181 --replication-factor 2 --partitions 3 --topic eztest
--create参数指定命令是创建topic,其次必须指定--topic,主题名称,最重要的--zookeeper,指定访问zookeeper Quorum的地址,剩余两个分别指定分区数和冗余存储。注意,这里冗余存储的数量必须小于等于kafka节点数。


如此创建成功后,列举出当前Kafka中存在哪些主题:

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

查看eztest主题详情:
bin/kafka-topics.sh --describe --zookeeper vubuntuez1:2181,vdebianez3:2181 --topic eztest

--zookeeper选项可以指定多个Quorum,同样用逗号隔开。


七、消费、生产数据

Kafka生产者作为数据生产角色,消费者消费从Kafka获取的数据。我们使用控制台创建一个最简单的生产者和消费者,直接使用随Kafka释出的工具即可。生产者接收用户的标准输入并推到Kafka,消费者一直尝试从Kafka中拉取生产的数据,并打印到标准输出中。先切换到Kafka部署根目录。

1、Console生产者

在主题eztest上开启一个生产者:

bin/kafka-console-producer.sh --bootstrap-server vcentosez2:9092,vubuntuez1:9092 --topic eztest

--bootstrap-server指定Kafka broker访问地址,只要能访问到其中一个即可,若想写多个则用逗号隔开。这个配置来自于 conf/server.properties 中的listeners配置项。

--topic指定主题名称

创建完成后,标准输入等待键盘输入,按下回车则数据将被推送到Kafka。注:程序会独占一个控制台。


2、Console消费者
另开一个控制台,在主题eztest上开启一个消费者:

bin/kafka-console-consumer.sh --bootstrap-server vubuntuez1:9092,vcentosez2:9092,vdebianez3:9092 --topic eztest

选项同producer。

注意:--bootstrap-server选项不用指定所有的节点,只用最少一个可以访问的即可。目前我还不清楚指定多个和一个有什么区别。


现在往生产者控制台中敲入一些字符,回车,消费者控制台将会打印出来。



】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇分布式集群Kafka删除已经创建的to.. 下一篇kafka-0.9.0.0安装和使用

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目