zookeeper+KAFKA 集群搭建

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、集群管理等。

因为Kafka集群是把状态信息保存在Zookeeper中的,并且Kafka的动态扩容是通过Zookeeper来实现的,所以需要优先搭建Zookeerper集群,建立分布式状态管理。开始准备环境,搭建集群:

zookeeper是基于Java环境开发的所以需要先安装Java 然后这里使用的zookeeper安装包版本为zookeeper-3.4.14,Kafka的安装包版本为kafka_2.11-2.2.0。

AMQP协议:Advanced Message Queuing Protocol (高级消息队列协议)是一个标准开放的应用层的消息中间件协议。AMQP定义了通过网络发送的字节流的数据格式。因此兼容性非常好,任何实现AMQP协议的程序都可以和与AMQP协议兼容的其他程序交互,可以很容易做到跨语言,跨平台。

server1:192.168.42.128

server2:192.168.42.129

server3:192.168.42.130

安装之前先检查一下系统有没有自带open-jdk

命令:

rpm -qa |grep java

rpm -qa |grep jdk

如果没有输入信息表示没有安装。
检索1.8的列表
yum list java-1.8*
安装1.8.0的所有文件
yum install java-1.8.0-openjdk* -y

使用命令检查是否安装成功
java -version

cat /etc/hosts

192.168.42.128 kafka01

192.168.42.129 kafka02

192.168.42.130 kafka03

1.关闭selinux,防火墙。

setenforce 0

systemctl stop firewalld && systemctl disable firewalld

2.创建zookeeper和Kafka的存放目录:

cd /usr/local/

wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz

wget http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.2.0/kafka_2.11-2.2.0.tgz

tar xzvf zookeeper-3.4.14.tar.gz

tar xzvf kafka_2.11-2.2.0.tgz

mkdir -pv zookeeper/{zkdata,zkdatalog} #zkdata是存放快照日志,zkdatalog是存放事物日志

mkdir -pv kafka/kfdatalogs #kfdatalogs是存放消息日志

4.生成并更改zookeeper的配置文件(三台服务器上都需要设置):

#可以将zoo_sample理解为zookeeper自带的配置文件模板,复制出一份以.cfg结尾的配置文件。

cp -av /usr/local/zookeeper/conf/{zoo_sample,zoo.cfg}

tickTime=2000 #zookeeper服务器之间的心跳时间。

initLimit=10 #zookeeper的最大连接失败时间

syncLimit=5 #zookeeper的同步通信时间

dataDir=/usr/local/zookeeper/zkdata #zookeeper的存放快照日志的绝对路径

dataLogDir=/usr/local/zookeeper/zkdatalog #zookeeper的存放事物日志的绝对路径

clientPort=2181 #zookeeper与客户端的连接端口

server.1=192.168.11.139:2888:3888 #服务器及其编号,服务器IP地址,通信端口,选举端口

server.2=192.168.11.140:2888:3888 #服务器及其编号,服务器IP地址,通信端口,选举端口

server.3=192.168.11.141:2888:3888 #服务器及其编号,服务器IP地址,通信端口,选举端口

#以上端口都是zookeeper的默认端口,可随需求进行修改

5.创建myid文件:

在server1上

echo “1” > /usr/local/zookeeper/zkdata/myid

#就是在不同的服务器上,将服务器编号发送到zkdata下的myid。

6.启动zookeeper集群

cd /usr/local/zookeeper/bin

./zkServer.sh start

./zkServer.sh status

#Mode: leader为主节点,Mode: follower为从节点,zk集群一般只有一个leader,多个follower,主一般是响应客户端的读写请求,而从主同步数据,当主挂掉之后就会从follower里投票选举一个leader出来。

zookeeper 选举过程/工作原理

https://blog.csdn.net/wyqwilliam/article/details/83537139

在zookeeper的集群中,各个节点共有下面3种角色和4种状态:

角色:leader,follower,observer

状态:leading,following,observing,looking

每个Server在工作过程中有4种状态:

LOOKING:当前Server不知道leader是谁,正在搜寻。

LEADING:当前Server即为选举出来的leader。

FOLLOWING:leader已经选举出来,当前Server与之同步。

OBSERVING:observer的行为在大多数情况下与follower完全一致,但是他们不参加选举和投票,而仅仅接受(observing)选举和投票的结果

到此,zookeeper集群搭建结束,接下来基于zookeeper搭建kafka集群:

Kafka的基本概念:

主题:Topic特指Kafka处理的消息源(feeds of messages)的不同分类。

分区:Partition Topic物理上的分组,一个topic可以分为多个partition,每个partition是一个有序的队列。partition中的每条消息都会被分配一个有序的id(offset)。

Message:消息,是通信的基本单位,每个producer可以向一个topic(主题)发布一些消息。

Producers:消息的数据生产者,向Kafka的一个topic发布消息的过程叫做producers。

Consumers:消息的数据消费者,订阅topics并处理其发布的消息的过程叫做consumers。

Broker:缓存代理,Kafka集群中的一台或多台服务器统称为broker,这里用的是AMQP协议。

cd /usr/local/kafka/config/

1.修改server.properties文件:

broker.id=1 #这里和zookeeper中的myid文件一样,采用的是唯一标识

prot=9092 #Kafka集群间连接的端口,配置文件中没有,但默认为9092,可随需求进行修改,这里咱们加上

log.dirs=/usr/local/kafka/kfdatalogs #存放Kafka消息日志的绝对路径

advertised.listeners=PLAINTEXT://kafka01:9092

log.retention.hours=168 #默认消息的最大持久化时间,168小时,7天

message.max.byte=5242880 #消息保存的最大值5M

default.replication.factor=2 #kafka保存消息的副本数,如果一个副本失效了,另一个还可以继续提供服务

replica.fetch.max.bytes=5242880 #取消息的最大直接数

zookeeper.connect=192.168.42.128:2181,192.168.42.129:2181,192.168.42.130:2181#集群的各个节点的IP地址及zookeeper的端口,在zookeeper集群设置的端口是多少这里的端口就是多少。

未修改的配置文件信息:

num.network.threads=3 #这个是borker进行网络处理的线程数

num.io.threads=8 #这个是borker进行I/O处理的线程数

num.partitions=1 #默认的分区数,一个topic默认1个分区数

log.retention.hours=168 #默认消息的最大持久化时间,168小时,7天

message.max.byte=5242880 #消息保存的最大值5M

default.replication.factor=2 #kafka保存消息的副本数,如果一个副本失效了,另一个还可以继续提供服务

replica.fetch.max.bytes=5242880 #取消息的最大直接数

log.segment.bytes=1073741824 #这个参数是:因为kafka的消息是以追加的形式落地到文件,当超过这个值的时候,kafka会新起一个文件

log.retention.check.interval.ms=300000 #每隔300000毫秒去检查上面配置的log失效时间(log.retention.hours=168 ),到目录查看是否有过期的消息如果有,删除

log.cleaner.enable=false #是否启用log压缩,一般不用启用,启用的话可以提高性能

2.启动Kafka集群:

cd /usr/local/kafka/bin

bash kafka-server-start.sh -daemon …/config/server.properties

3.开始测试:

3.1创建topic

./kafka-topics.sh --create --zookeeper 192.168.21.241:2181 --replication-factor 2 --partitions 1 --topic wg01

#–replication-factor 2 复制两份

#–partitions 1 创建一个分区

#–topic tian 主题为tian

3.2创建一个producter:

./kafka-console-producer.sh --broker-list 192.168.21.241:9092 --topic wg01

3.3创建一个consumer:

./kafka-console-consumer.sh --bootstrap-server 192.168.11.141:9092 --topic wg01 --from-beginning

3.4查看topic:

./kafka-topics.sh --list --zookeeper 192.168.11.141:2181
————————————————
版权声明:本文为CSDN博主「大阿弃?」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/TH_lsq/article/details/102626967

原文地址:https://www.cnblogs.com/liushuqing/p/11702760.html

时间: 2024-10-08 11:30:27

zookeeper+KAFKA 集群搭建的相关文章

KAFKA集群搭建

一.简介 Kafka是Apache下的一个子项目,是一个高性能跨语言分布式发布/订阅消息队列系统,使用Scala编写,它以可水平扩展和高吞吐率而被广泛使用.目前越来越多的开源分布式处理系统如Cloudera.Apache Storm.Spark都支持与Kafka集成.   Kafka适合做什么? 官方文档介绍,它通常被使用在两大类应用中: 搭建实时数据流管道,在系统或应用之间可靠的获取数据 搭建对数据流进行转换或相应的实时流应用程序.   为了了解Kafka具体如何实现这些功能, 首先理解几个概

kafka集群搭建和使用Java写kafka生产者消费者

 kafka集群搭建 Java代码   1.zookeeper集群  搭建在110, 111,112 2.kafka使用3个节点110, 111,112 修改配置文件config/server.properties broker.id=110 host.name=192.168.1.110 log.dirs=/usr/local/kafka_2.10-0.8.2.0/logs 复制到其他两个节点,然后修改对应节点上的config/server.pro 3.启动,在三个节点分别执行 bin/kaf

kafka学习(三)-kafka集群搭建

kafka集群搭建 下面简单的介绍一下kafka的集群搭建,单个kafka的安装更简单,下面以集群搭建为例子. 我们设置并部署有三个节点的 kafka 集合体,必须在每个节点上遵循下面的步骤来启动 kafka 服务器,kafka集群需要依赖zookeeper集群,上一篇已经说道了zookeeper的搭建,方法请参考:http://www.cnblogs.com/chushiyaoyue/p/5615267.html 1.环境准备 测试服务器(2n+1)奇数台 192.168.181.128 ce

Kafka【第一篇】Kafka集群搭建

Kafka初识 1.Kafka使用背景 在我们大量使用分布式数据库.分布式计算集群的时候,是否会遇到这样的一些问题: 我们想分析下用户行为(pageviews),以便我们设计出更好的广告位 我想对用户的搜索关键词进行统计,分析出当前的流行趋势 有些数据,存储数据库浪费,直接存储硬盘效率又低 这些场景都有一个共同点: 数据是又上游模块产生,上游模块,使用上游模块的数据计算.统计.分析,这个时候就可以使用消息系统,尤其是分布式消息系统! 2.Kafka的定义 What is Kafka:它是一个分布

消息队列之kafka(集群搭建)

1.kafka集群搭建   kafka安装包下载地址: 官网网址:http://kafka.apache.org/quickstart 中文官网:http://kafka.apachecn.org/quickstart.html 在 windows 平台,从官网下载:http://mirrors.hust.edu.cn/apache/kafka/1.1.0/ 在 centos 平台:wgethttp://mirrors.hust.edu.cn/apache/kafka/1.1.0/kafka_2

Centos7安装zookeeper+kafka集群

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

[Golang] kafka集群搭建和golang版生产者和消费者

一.kafka集群搭建 至于kafka是什么我都不多做介绍了,网上写的已经非常详尽了. 1. 下载zookeeper  https://zookeeper.apache.org/releases.html 2. 下载kafka http://kafka.apache.org/downloads 3. 启动zookeeper集群(我的示例是3台机器,后面的kafka也一样,这里就以1台代指3台,当然你也可以只开1台) 1)配置zookeeper. 修改复制一份 zookeeper-3.4.13/c

Linux下kafka集群搭建过程记录

环境准备 zookeeper集群环境kafka是依赖于zookeeper注册中心的一款分布式消息对列,所以需要有zookeeper单机或者集群环境. 三台服务器: 172.16.18.198 k8s-n1 172.16.18.199 k8s-n2 172.16.18.200 k8s-n3 下载kafka安装包 http://kafka.apache.org/downloads 中下载,目前最新版本的kafka已经到2.2.0,我这里之前下载的是kafka_2.11-2.2.0.tgz. 安装ka

zookeeper+kafka集群的安装

时效性要求很高的数据,库存,采取的是数据库+缓存双写的技术方案,也解决了双写的一致性的问题 缓存数据生产服务,监听一个消息队列,然后数据源服务(商品信息管理服务)发生了数据变更之后,就将数据变更的消息推送到消息队列中 缓存数据生产服务可以去消费到这个数据变更的消息,然后根据消息的指示提取一些参数,然后调用对应的数据源服务的接口,拉去数据,这个时候一般是从mysql库中拉去的 1.zookeeper集群搭建 zookeeper-3.4.5.tar.gz使用WinSCP拷贝到/usr/local目录