最近,因为上级主管部门需要通过使用Kafka向其传输文件,又因为此前没有接触过kafka,所以在部署测试kafka程序期间遇到很多问题,在这里总结4个问题与1个建议,方便入门者参考也便于遇到类似问题进行查阅完善。
1.Kafka java代码与Kafka 软件的关系
Kafka java代码与Kafka 软件之间究竟有什么关系呢?Kafka java代码中已经使了kafka-clients-0.8.2.1.jar,kafka_2.11-0.8.2.1.jar,那么还需要安装kafka_2.11-0.10.2.1么?并可Kafkaproducer.properties已经包含了Kafka软件中 server.propertiy zookeeper.connect,等等属性,那么是不是可以取代Kafka 软件了呢?
Kafka 软件:目前使用版本为kafka_2.11-0.10.2.1,kafka_2.11-0.10.2.1inwindows,可启动Kafka,可创建Topic,可启动一个生产者进程来发送消息,也可以启动一个消费者进程来消费消息,见下:
#创建topic
binwindowskafka-topics.bat --create --zookeeper 101.201.177.100:2181 --replication-factor 1 --partitions 1 --topic mytest-topic
#启动一个生产者进程来发送消息
binwindowskafka-console-producer.bat --broker-list 101.201.177.100:9092 --topic mytest-topic
#启动一个消费者进程来消费消息
binwindowskafka-console-consumer.bat --zookeeper localhost:2181 --topic my-topic --from-beginning
Kafka java代码:用于编写Kafka的Producer端与Consumer端,完成消息的发送与接收;
区别:也就是Kafka java代码运行,离不开Kafka 软件,因为是调用Kafka 软件中的kafka-console-consumer.bat、kafka-console-producer.bat;
2.ZooKeeper与Kafka 软件的关系
zooKeeper集群与Kafka集群之间有什么关系,之前一位对Kafka有所研究的朋友说,作为Kafka的客户端,只需要在此机安装Zookeeper就可以了?然而,在参考各种Kafka集群配置的时候有每台机器都部署zookeeper与kafka的,也有只有1台部署zookeeper的(同时部署Kafka),3台部署kafka的;那究竟是怎样的呢?
在读此篇博文,顿觉一语中的 “”Kafka集群是把状态保存在Zookeeper中的,首先要搭建Zookeeper集群。” 图文参考 http://www.cnblogs.com/luotianshuai/p/5206662.html;
3.Kafka 单机测试通过,集群部署发送文件失败
单机通过kafka发送文件、接收文件均无问题,根据配置文件修改为远程服务端,却发送失败???期间原因很多,但总结如下:
1.在修改配置文件后,因为运行后会产生新文件,修改配置文件,容易产生新的错误;
2.学会看log,根据log提示的错误,查找问题原因,或百度找到解决方法;也需要学会判断判断程序是否正确启动。
3.Kafka配置时host主机名字不能设置为127.0.0.1 !!!困扰了我18个小时的原因
4.Kafka 测试
为了避免重复的额部署、测试,程序能够使用,测试环境是必不可少的啦,建议测试方法如下:
配置本地环境测试与生产环境测试的程序、与配置文件、启动命令;
更建议本地使用编程工具(比如 Idea)进行调试,因为编程工具运行起来不需要部署,贼方便哦;
本地测试OK,进行生产环境测试,只要您的测试与生产环境相似度很高,也就基本OK啦。