kafka_2.10-0.10.0.0集群安装

 

kafka_2.10-0.10.0.0集群安装

IP

HOST

192.168.132.94

BDTEST05

192.168.132.95

BDTEST06

192.168.132.96

BDTEST07

1.          配置java环境

非常简单就不介绍了

2.          安装zookeeper集群

kafka自带有zookeeper服务,但是建议大家最好单独建立一个zookeeper集群,可以和其他应用共享,也便于管理

安装介绍见“zookeeper-3.4.6集群部署”文档

3.          准备安装介质

将下载好的介质kafka_2.10-0.10.0.0.tgz(此处下载的是已编译的)传到服务上并解压

[hduser@BDTEST05 app]$ tar -zxvf kafka_2.10-0.10.0.0.tgz

 

4.          更改kafka配置文件

[hduser@BDTEST05 app]$ vi /app/kafka_2.10-0.10.0.0/config/server.properties

kafka_2.10-0.10.0.0版本的这个配置文件和以前版本有些差别

需要配置的属性有:

broker.id=1

host.name=BDTEST05

listeners=PLAINTEXT://BDTEST05:9092

advertised.listeners=PLAINTEXT://BDTEST05:9092

log.dirs=/app/kafka_2.10-0.10.0.0/logs

num.partitions=4

zookeeper.connect=BDTEST05:2181,BDTEST06:2181,BDTEST07:2181

broker.id(标示当前server在集群中的id,有的说从0开始,有的说从1开始),数字且唯一

log.dirs(log的存储目录,要对应的去建立这个目录)等,其他的一些配置可以看相应的注释:

其他配置暂时采取默认

zookeeper.connect(连接的zookeeper集群)

 

5.          拷贝kafka到另外两台机器

[hduser@BDTEST05 app]$ scp -r /app/kafka_2.10-0.10.0.0/ hduser@BDTEST06://app/

[hduser@BDTEST05 app]$ scp -r /app/kafka_2.10-0.10.0.0/ hduser@BDTEST07://app/

对应更改配置文件/app/kafka_2.10-0.10.0.0/config/server.properties中的

 

6.          启动kafka服务

注意:先启动zookeeper集群,再启动kakfa集群

查看zookeeper服务是否启动(这里查看一台的就可以了)

[hduser@BDTEST05 app]$ clush -g zookeeper /app/zookeeper-3.4.6/bin/zkServer.sh status

在每台机器上启动kafka服务

[hduser@BDTEST05 app]$ nohup /app/kafka_2.10-0.10.0.0/bin/kafka-server-start.sh /app/kafka_2.10-0.10.0.0/config/server.properties &

&表示后台运行,否则一旦终端关闭服务立刻停止 配合nohup使用,这样不会看到如下图日志

 

7.          简单测试kafka

(1)任意一台机器上面(此测试在BDTEST05上),测试:在kafka中创建名为“cmy_nbd_topic1”的topic,该topic切分为4份,每一份备份数为3

[hduser@BDTEST05 bin]$ ./kafka-topics.sh --create --zookeeper BDTEST05:2181 --replication-factor 3 --partitions 4 --topic  cmy_nbd_topic1

(2)列出所有topic :

[hduser@BDTEST05 bin]$ ./kafka-topics.sh --list --zookeeper BDTEST05:2181,BDTEST06:2181,BDTEST07:2181

  

一个完整测试

(1)单机连通性测试:

 (a)运行producer:

./kafka-console-producer.sh --broker-list localhost:9092 --topic test 

 (b)运行consumer:          

./kafka-console-consumer.sh  --zookeeper localhost:2181 --topic test --from-beginning

在producer端输入字符串并回车,查看consumer端是否显示。 

(2) 分布式连通性测试

Zookeeper Server, Kafka Server, Producer都放在服务器BDTEST05上

Consumer放在服务器BDTEST06上

修改Kafka Server的配置文件,将这行修改成这样:

advertised.listeners=PLAINTEXT://BDTEST05:9092

(a)运行BDTEST05上面的producer:   

[hduser@BDTEST05 bin]$ ./kafka-console-producer.sh --broker-list  BDTEST05:9092 --topic test 

(b)运行BDTEST06上面的consumer:  

[hduser@BDTEST06 bin]$ ./kafka-console-consumer.sh --zookeeper BDTEST06:2181 --topic test --from-beginning 

在producer端输入字符串并回车,查看consumer端是否显示。

 

8.          关闭kafka服务

/app/kafka_2.10-0.10.0.0/bin/kafka-server-stop.sh

9.          设置集群启动、关闭脚本

之前安装zookeeper时已经配置clush工具,添加了zookeeper组

 

(1)创建关闭kafka服务器组脚本

[hduser@BDTEST05 service]$ vi stopKafka.sh

 

(2)创建启动kafka服务器组脚本

执行脚本

[hduser@BDTEST05 service]$ sh stopKafka.sh

[hduser@BDTEST05 service]$ sh startKafka.sh

问题

使用/app/kafka_2.10-0.10.0.0/bin/kafka-server-stop.sh停止服务停不掉,查看该停止脚本内容如下,使用jps 或者 ps -ef | grep kafka确实能够查到PID

但是脚本中ps ax | grep -i 'kafka.Kafka'就是查不到PID,这其中使用正则 如果单独使用ps ax | grep -i 'kafka'或者ps ax | grep -i '.Kafka'都能够查到

 

PIDS=$(ps ax | grep -i 'kafka.Kafka' | grep java | grep -v grep | awk '{print $1}')

if [ -z "$PIDS" ]; then

  echo "No kafka server to stop"

  exit 1

else

  kill -s TERM $PIDS

fi

解决办法:更改脚本

原文地址:https://www.cnblogs.com/OS-BigData/p/8526537.html