启动kafka!!!!!!!!!!(通过kafka-server-start.sh $KAFKA_HOME/config/server.properties启动)
kafka是要先启动的!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(重要的事情说三遍)
telnet不通9092不一定是开不开放端口的问题
有可能是端口上的程序没有启动的原因,只有先启动了程序才能判断这个端口是否可以访问
先在Linux上启动kafka服务只不过和其他服务不同的是要跟上一个配置文件才可以
java api要保证生产者代码能够正确的运行前提是 Kafka启动了 创建了对应的topic
和zookeeper一样要手动的启动两个机器上的kafka不会自动启动两个kafka
所以可以可zookeeper一样写个shell用来启动
下面是集群中的start-zk.sh的shell文件
echo "start zKserver......"
for i in 1 2
do
ssh hadoop0$i "source /etc/profile;/export/servers/zookeeper-3.4.5/bin/zkServer.sh start"
done
kafka快的两个原因
pagecach(一种缓存和磁盘相对)和sendfile技术支撑kafka的速度
消费者读取的时候可能会用到sendfile技术
查看所有主题的详细信息
kafka-topics.sh --describe --zookeeper hadoop01:2181
partion(0,1,2,3)其中数字代表分区的编号
leader(0,1)其中数字代表 server.properties中配置的broker编号(brokerid),对应的编号就是leader
replicas代表副本 ,数字代表副本所在的brokid
Isr代表存活的brokerid
上述内容属于kafka的容错测试(注意这里的leader不是zookeeper里面的leader和follower,注意区分)
jps -m 命令用来查看jps的详细进程
kafka要借助zookeeper但是kafka有自己的leader和follower这套概念区别于zookeeper
props.put("request.required.acks", "1");
这里的1大部分情况下用1
如果是-1的话要等所有的副本过来