系列文章目录
ZOOKEEPER和KAFKA的配置
文章目录
一、ZOOKEEPER是什么?
ZooKeeper是一个分布式协调服务。
具体来说,ZooKeeper是Apache软件基金会的一个开源项目,它为分布式系统提供了一系列的协调服务。ZooKeeper的设计目标是在分布式环境中提供可靠的、高性能的协调功能,它能够保证分布式系统中数据的一致性和系统的高可用性。ZooKeeper的主要功能包括:
统一配置管理:集中管理分布式系统中的配置信息,使得配置的更改可以迅速反映到所有相关的系统组件中。
统一命名服务:提供一个全局唯一的命名空间,用于分布式系统中的对象命名和查找。
分布式锁:实现跨多个系统组件的同步锁,确保在分布式环境中的操作顺序和互斥性。
集群管理:管理和监控集群的状态,进行领导者选举等集群协调活动。
数据同步:同步状态信息,使得集群中的节点能够保持一致的状态。
组服务:提供组成员管理,包括组成员的动态加入和退出。
此外,ZooKeeper还与许多其他分布式系统紧密集成,例如Kafka使用ZooKeeper来维护其集群状态和消息主题的元数据。它的数据模型基于类似于文件系统的树状结构,客户端可以通过创建、读取、更新和删除ZooKeeper中的数据节点(称为znodes)来进行交互。
二、KAFKA是什么?
Kafka是一个分布式流式处理平台,也是一个高吞吐量的分布式消息系统。
Kafka最初是由LinkedIn公司开发的,后来被捐献给了Apache基金会,成为了一个开源项目。它使用Scala语言编写,设计之初就是为了处理实时数据流。Kafka的核心特性包括:
多分区和多副本:Kafka通过多分区的设计来实现数据的并行处理,提高了系统的吞吐量。同时,多副本机制确保了数据的可靠性和容错性。
基于ZooKeeper的协调:Kafka依赖ZooKeeper来进行集群管理和协调,保证了系统的稳定性和一致性。
高吞吐量和可扩展性:Kafka能够处理大量的数据流,支持水平扩展,可以轻松地增加更多的服务器来应对数据量的增长。
持久化:Kafka支持数据持久化,即使在系统故障的情况下也能保证数据不丢失。
Kafka在大数据领域和实时数据处理中扮演着重要的角色。它的适用场景包括但不限于日志收集、流式数据处理、实时分析等。由于其高效的性能和可靠性,Kafka已经成为了许多大型互联网公司和企业在处理实时数据时的首选技术方案。
IP地址 | 主机名 |
---|---|
192.168.20.20 | node1 |
192.168.20.30 | node2 |
192.168.20.40 | node3 |
三、基本配置。
1.配置hosts IP映射。
vim /etc/hosts
把下面的内容加到上面的文件中
192.168.20.20 node1 //IP地址 主机名
192.168.20.30 node2
192.168.20.40 node3
2.完成ssh的免密登录。
1.生成密钥对。
[root@node1 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:l+RqMv79hB9RI0oIwim7THE0Vd23t1qfNXBdXCARCs4 root@node1
The key's randomart image is:
+---[RSA 2048]----+
| o+oo.o. .+o.oo|
| o +o + o..... o|
| = E + ..o.o|
| o + o +.oo|
| o . S = . o..|
| o o . . +.|
| o o . o o =|
| . + . o o ..|
| ... ..o |
+----[SHA256]-----+
2.将生成的密钥对传至另外的服务器
[root@node1 ~]# ssh-copy-id root@node1 //传至node1服务器
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@node1's password: // 密码
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@node1'"
and check to make sure that only the key(s) you wanted were added.
[root@node1 ~]# ssh-copy-id root@node2 //传至node2服务器
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@node1's password: // 密码
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@node1'"
and check to make sure that only the key(s) you wanted were added.
[root@node1 ~]# ssh-copy-id root@node3 //传至node3服务器
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@node1's password: // 密码
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@node1'"
and check to make sure that only the key(s) you wanted were added.
3.关闭防火墙
systemctl stop firewalld.service //关闭防火墙
systemctl disable firewalld.service //开机自动关闭防火墙
四、zookeeper的配置。
1.把 zookeeper的安装包利用xftp传到虚拟机上。
2.解压安装包,并解压到指定目录。
tar -zxvf /apache-zookeeper-3.5.7-bin.tar.gz -C /opt/ //解压到根下的opt目录
3.配置zookeeper的环境变量。
export ZOOKEEPER_HOME=/opt/zookeeper //解压路径
export PATH=$ZOOKEEPER_HOME/bin:$PATH
让环境变量生效
source /etc/profile
4.修改zookeeper的配置文件。
1.将zoo_sample.cfg的配置文件改名
mv /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg
2.修改zoo.cfg.
vim /opt/zookeeper/conf/zoo.cfg
把下面的内容添加到上面的文件中
dataDir=/opt/zookeeper/data
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888
5.在/opt/zookeepert目录下创建一个data目录,并且到这个目录下。
1.创建data目录。
cd /opt/zookeeper/ //到zookeeper的目录下
mkdir data //创建目录
2.到刚刚创建的data目录下,创建一个文本。
vim myid //myid文件添加的内容是对应node1的编号1,node2编号2,node3编号3。
把下面的内容添加到文本中
node2,node3重复上面配置
五node2,node3需要修改的地方。
1.node1修改的位置。
vim /opt/zookeeper/data/myide
2.node3修改的位置。
vim /opt/zookeeper/data/myide
3.在node2,node3上分别让环境变量生效。
source /etc/profile
六、分别在node1,node2,node3上查看和启动集群。
1.node1查看。
zkServer.sh start
2.node2查看。
zkServer.sh start
3.node3查看。
zkServer.sh start
七、KAFKA的配置。
1.上传压缩包。
2.将KAFKA的压缩包解压到指定目录。
tar -zxvf kafka_2.12-2.4.1.tgz /opt/
//解压到根下的opt目录
3.配置Kafka的环境变量。
vim /etc/profile
把下面代码添加到上面文本中
export KAFKA_HOME=/opt/kafka
export PATH=$KAFKA_HOME/bin:$PATH
source /etc/profile //让环境变量生效
4.Kafka的文件配置。
1.切换到/opt/kafka/config目录下修改文件。
cd /opt/kafka/config/
vim server.properties
把下面的代码添加到上面的文本中
broker.id=0 //broker的全局编号,不能重复
delete.topic.enable=true //删除topic功能
zookeeper.connect=node1:2181,node2:2181,node3:2181 //配置连接zookeeper的集群地址
node2,node3同样配置
八、node2,node3,配置的修改。
1.node2的修改。
vim /opt/kafka/config/server.properties
2.node3的修改。
vim /opt/kafka/config/server.properties
九、启动集群。
1启动集群。
kafka-server-start.sh -daemon /opt/kafka/config/server.properties
2.查看集群。
总结
以上就是今天要讲的内容,本文仅仅简单介绍了zookeeper的使用。