Kafka集群的安装:
一、安装zookeeper,并启动。注意:启动zookeeper前需要关闭防火墙,否则会报NoRouteHostException的错误
Zookeeper是一个分布式,开源的应用程序协调服务。是和Hadoop,Hbase等相互配合的重要组件,为分布式应用提供一致性服务。
1.下载zookeeper,并解压
tar -xzvf zookeeper-3.4.6.tar.gz
2.指定位置创建数据目录和日志目录:
mkdir /usr/zookeeper/zookeeper
mkdir /usr/zookeeper/zookeeeper/log
3.在数据目录下创建myid文件,并写入ID:
echo 1 > /usr/zookeeper/zookeeper/myid
myid是集群中个节点的标识,必须是数字,且每台机器需要对应
4.修改zoo.cfg文件(在zookeeper安装目录下的conf目录下)
mv zoo_sample.cfg zoo.cfg && vim zoo.cfg
5.数据目录去掉注释并按实际情况修改:
dataDir=**
追加事务日志目录:
dataLogDir=**
保留文件数目配置,默认3:
autopurge.snapRetainCount=3
添加清理频率的配置,单位是小时,默认0,表示不会自动清理。
autopurge.purgeInterval=1
最后添加如下配置
server.1=spark1:2888:3888
server.2=spark2:2888:3888
server.3=spark3:2888:3888
定义了每个主机对应的节点,server.x,x数值应和myid保持一致,当zookeeper启动时会读取myid文件和zoo.cfg配置信息,然后确定唯一节点。
后面端口号是集群中Leader和Follower之间进行通信的端口,一般不用修改
6.最后将配置好的整个目录发送到另外两台主机,实现同步;并且将另外两台主机的myid修改成配置文件中对应的id:
scp -r /usr/zookeeper/ spark2:/usr/
scp -r /usr/zookeeper/ spark3:/usr/
echo 2 > myid
echo 3 > myid
7.启动zookeeper服务(启动前要关闭防火墙):
./bin/zkServer.sh start 每台都需要启动
./bin/zkServer.sh status 查看每台主机的角色
./bin/zkServer.sh stop 停止zookeeper服务
./bin/zkCli.sh 进入zookeeper客户端
8.使用jps命令查看是否有QuorumPeerMain这个进程,有则表示启动成功
二、安装Kafka并启动:
新版kafka相对旧版性能提升很大。
1.下载相关安装包
安装kafka集群前,需要确保zookeeper服务正常运行,比如上面3台主机正常运行,spark1,spark2,spark3,然后在spark1主机点上解压并做软链
tar -zxvf kafka_2.10-0.10.1.0.tgz
mv kafka_2.10-0.10.1.0 /Learn/
ln -s kafka_2.10-0.10.1.0 kafka
cd kafka
2.修改config/server.properties的配置文件
修改broker.id=1,默认是0,这个值是集群中唯一的整数,每台各不相同
找到listeners这个配置项一般配置PLAINTEXT://ip:9092,如果配置0.0.0.0则绑定全部网卡,如果默认,则会绑定默认网卡和机器host配置的主机名,一般在机器中hosts,hostname都要正确配置,下面的port默认不用配置
配置kafka日志目录,目录要提前建好:
num.partitions是默认单个broker上的partitions数量,默认是1,若想提高单机的并发性能,可以配置多个
kafka日志的保留时间,单位是小时,默认168小时,7天
配置zookeeper集群列表,然后指定kafka在zookeeper上创建的znode为/kafka
最后,连接zookeeper服务器的超时时间,默认即可
3.将配置好的完整目录发送到其他两台主机上,依次将server.properties配置文件中的broker.id分别为2和3并保存,并且这两台主机都要在相同的目录下创建日志目录kafka_logs并根据需要创建软链
4.启动所有主机的kafka服务
bin/kafka-server-start.sh -daemon config/server.properties
新版本不用nohup挂起,直接使用daemon参数后台运行,启动后jps查看kafka进程是否存在,有则启动成功
bin/kafka-server-stop.sh 停止服务