一、Kafka的安装和配置
1.kafka的下载地址
http://kafka.apache.org/downloads.html
2.下载后,可以通过winscp,复制到centos环境下,然后解压:
tar zxvf kafka_2.10-0.8.1.1.tgz
3.进入/kafka_2.10-0.8.1.1/config/目录下,对server.properties进行配置:vi server.properties
broker.id=8 这个broker的id,如果是配置的集群的话,这个id需要唯一
port=9092 kafka消息的端口号
host.name kafka主机的ip
zookeeper.connect配置zookeeper的ip,kafka启动的时候会与zookeeper关联,如果zookeeper没有启动就开始启动kafka的话会报错,当然可以配置一个kafka的集群,只关联一个zookeeper,这样也是可行的。
4.启动kafka:进入到kafka的安装目录下,执行命令:
bin/kafka-server-start.sh config/server.properties &
启动成功后出现下面信息:
[1] 18176
[root@logsrv03 kafka_2.10-0.8.1.1]# [2015-08-17 19:52:06,799] INFO Verifying properties (kafka.utils.VerifiableProperties)
[2015-08-17 19:52:06,849] INFO Property broker.id is overridden to 8 (kafka.utils.VerifiableProperties)
[2015-08-17 19:52:06,849] INFO Property host.name is overridden to 172.17.6.148 (kafka.utils.VerifiableProperties)
[2015-08-17 19:52:06,849] INFO Property log.cleaner.enable is overridden to false (kafka.utils.VerifiableProperties)
[2015-08-17 19:52:06,850] INFO Property log.dirs is overridden to /tmp/kafka-logs (kafka.utils.VerifiableProperties)
[2015-08-17 19:52:06,850] INFO Property log.retention.check.interval.ms is overridden to 60000 (kafka.utils.VerifiableProperties)
[2015-08-17 19:52:06,850] INFO Property log.retention.hours is overridden to 168 (kafka.utils.VerifiableProperties)
[2015-08-17 19:52:06,850] INFO Property log.segment.bytes is overridden to 536870912 (kafka.utils.VerifiableProperties)
[2015-08-17 19:52:06,850] INFO Property num.io.threads is overridden to 8 (kafka.utils.VerifiableProperties)
[2015-08-17 19:52:06,851] INFO Property num.network.threads is overridden to 2 (kafka.utils.VerifiableProperties)
[2015-08-17 19:52:06,851] INFO Property num.partitions is overridden to 2 (kafka.utils.VerifiableProperties)
[2015-08-17 19:52:06,851] INFO Property port is overridden to 9092 (kafka.utils.VerifiableProperties)
[2015-08-17 19:52:06,851] INFO Property socket.receive.buffer.bytes is overridden to 1048576 (kafka.utils.VerifiableProperties)
[2015-08-17 19:52:06,852] INFO Property socket.request.max.bytes is overridden to 104857600 (kafka.utils.VerifiableProperties)
[2015-08-17 19:52:06,852] INFO Property socket.send.buffer.bytes is overridden to 1048576 (kafka.utils.VerifiableProperties)
[2015-08-17 19:52:06,852] INFO Property zookeeper.connect is overridden to 172.17.6.142:2181 (kafka.utils.VerifiableProperties)
[2015-08-17 19:52:06,852] INFO Property zookeeper.connection.timeout.ms is overridden to 1000000 (kafka.utils.VerifiableProperties)
[2015-08-17 19:52:06,870] INFO [Kafka Server 8], starting (kafka.server.KafkaServer)
[2015-08-17 19:52:06,872] INFO [Kafka Server 8], Connecting to zookeeper on 172.17.6.142:2181 (kafka.server.KafkaServer)
[2015-08-17 19:52:06,887] INFO Starting ZkClient event thread. (org.I0Itec.zkclient.ZkEventThread)
[2015-08-17 19:52:06,894] INFO Client environment:zookeeper.version=3.3.3-1203054, built on 11/17/2011 05:47 GMT (org.apache.zookeeper.ZooKeeper)
[2015-08-17 19:52:06,894] INFO Client environment:host.name=logsrv03 (org.apache.zookeeper.ZooKeeper)
[2015-08-17 19:52:06,894] INFO Client environment:java.version=1.7.0_71 (org.apache.zookeeper.ZooKeeper)
[2015-08-17 19:52:06,894] INFO Client environment:java.vendor=Oracle Corporation (org.apache.zookeeper.ZooKeeper)
[2015-08-17 19:52:06,894] INFO Client environment:java.home=/usr/local/jdk1.7.0_71/jre (org.apache.zookeeper.ZooKeeper)
[2015-08-17 19:52:06,894] INFO Client environment:java.class.path=.:/usr/local/jdk1.7.0_71/lib:/usr/local/jdk1.7.0_71/lib/dt.jar:/usr/local/jdk1.7.0_71/lib/tools.jar:/usr/local/jiang/kafka_2.10-0.8.1.1/bin/../core/build/dependant-libs-2.8.0/*.jar:/usr/local/jiang/kafka_2.10-0.8.1.1/bin/../perf/build/libs//kafka-perf_2.8.0*.jar:/usr/local/jiang/kafka_2.10-0.8.1.1/bin/../clients/build/libs//kafka-clients*.jar:/usr/local/jiang/kafka_2.10-0.8.1.1/bin/../examples/build/libs//kafka-examples*.jar:/usr/local/jiang/kafka_2.10-0.8.1.1/bin/../contrib/hadoop-consumer/build/libs//kafka-hadoop-consumer*.jar:/usr/local/jiang/kafka_2.10-0.8.1.1/bin/../contrib/hadoop-producer/build/libs//kafka-hadoop-producer*.jar:/usr/local/jiang/kafka_2.10-0.8.1.1/bin/../libs/jopt-simple-3.2.jar:/usr/local/jiang/kafka_2.10-0.8.1.1/bin/../libs/kafka_2.10-0.8.1.1.jar:/usr/local/jiang/kafka_2.10-0.8.1.1/bin/../libs/kafka_2.10-0.8.1.1-javadoc.jar:/usr/local/jiang/kafka_2.10-0.8.1.1/bin/../libs/kafka_2.10-0.8.1.1-scaladoc.jar:/usr/local/jiang/kafka_2.10-0.8.1.1/bin/../libs/kafka_2.10-0.8.1.1-sources.jar:/usr/local/jiang/kafka_2.10-0.8.1.1/bin/../libs/log4j-1.2.15.jar:/usr/local/jiang/kafka_2.10-0.8.1.1/bin/../libs/metrics-core-2.2.0.jar:/usr/local/jiang/kafka_2.10-0.8.1.1/bin/../libs/scala-library-2.10.1.jar:/usr/local/jiang/kafka_2.10-0.8.1.1/bin/../libs/slf4j-api-1.7.2.jar:/usr/local/jiang/kafka_2.10-0.8.1.1/bin/../libs/snappy-java-1.0.5.jar:/usr/local/jiang/kafka_2.10-0.8.1.1/bin/../libs/zkclient-0.3.jar:/usr/local/jiang/kafka_2.10-0.8.1.1/bin/../libs/zookeeper-3.3.4.jar:/usr/local/jiang/kafka_2.10-0.8.1.1/bin/../core/build/libs/kafka_2.8.0*.jar (org.apache.zookeeper.ZooKeeper)
[2015-08-17 19:52:06,894] INFO Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib (org.apache.zookeeper.ZooKeeper)
[2015-08-17 19:52:06,894] INFO Client environment:java.io.tmpdir=/tmp (org.apache.zookeeper.ZooKeeper)
[2015-08-17 19:52:06,894] INFO Client environment:java.compiler=<NA> (org.apache.zookeeper.ZooKeeper)
[2015-08-17 19:52:06,894] INFO Client environment:os.name=Linux (org.apache.zookeeper.ZooKeeper)
[2015-08-17 19:52:06,894] INFO Client environment:os.arch=amd64 (org.apache.zookeeper.ZooKeeper)
[2015-08-17 19:52:06,894] INFO Client environment:os.version=2.6.32-431.el6.x86_64 (org.apache.zookeeper.ZooKeeper)
[2015-08-17 19:52:06,895] INFO Client environment:user.name=root (org.apache.zookeeper.ZooKeeper)
[2015-08-17 19:52:06,895] INFO Client environment:user.home=/root (org.apache.zookeeper.ZooKeeper)
[2015-08-17 19:52:06,895] INFO Client environment:user.dir=/usr/local/jiang/kafka_2.10-0.8.1.1 (org.apache.zookeeper.ZooKeeper)
[2015-08-17 19:52:06,895] INFO Initiating client connection, connectString=172.17.6.142:2181 sessionTimeout=6000 watcher=org.I0Itec.zkclient.ZkClient@4a1ab1c1 (org.apache.zookeeper.ZooKeeper)
[2015-08-17 19:52:06,916] INFO Opening socket connection to server /172.17.6.142:2181 (org.apache.zookeeper.ClientCnxn)
[2015-08-17 19:52:06,921] INFO Socket connection established to logsrv02/172.17.6.142:2181, initiating session (org.apache.zookeeper.ClientCnxn)
[2015-08-17 19:52:06,941] INFO Session establishment complete on server logsrv02/172.17.6.142:2181, sessionid = 0x14f3b0a17ca0000, negotiated timeout = 6000 (org.apache.zookeeper.ClientCnxn)
[2015-08-17 19:52:06,944] INFO zookeeper state changed (SyncConnected) (org.I0Itec.zkclient.ZkClient)
[2015-08-17 19:52:07,221] INFO Found clean shutdown file. Skipping recovery for all logs in data directory '/tmp/kafka-logs' (kafka.log.LogManager)
[2015-08-17 19:52:07,223] INFO Loading log 'test-0' (kafka.log.LogManager)
[2015-08-17 19:52:07,257] INFO Completed load of log test-0 with log end offset 25 (kafka.log.Log)
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
[2015-08-17 19:52:07,280] INFO Loading log 'mytest01-0' (kafka.log.LogManager)
[2015-08-17 19:52:07,282] INFO Completed load of log mytest01-0 with log end offset 1 (kafka.log.Log)
[2015-08-17 19:52:07,283] INFO Loading log 'mytest-0' (kafka.log.LogManager)
[2015-08-17 19:52:07,285] INFO Completed load of log mytest-0 with log end offset 500763 (kafka.log.Log)
[2015-08-17 19:52:07,286] INFO Loading log 'mykafka-1' (kafka.log.LogManager)
[2015-08-17 19:52:07,288] INFO Completed load of log mykafka-1 with log end offset 0 (kafka.log.Log)
[2015-08-17 19:52:07,288] INFO Loading log 'mykafka-0' (kafka.log.LogManager)
[2015-08-17 19:52:07,290] INFO Completed load of log mykafka-0 with log end offset 0 (kafka.log.Log)
[2015-08-17 19:52:07,291] INFO Starting log cleanup with a period of 60000 ms. (kafka.log.LogManager)
[2015-08-17 19:52:07,294] INFO Starting log flusher with a default period of 9223372036854775807 ms. (kafka.log.LogManager)
[2015-08-17 19:52:07,311] INFO Awaiting socket connections on logsrv03:9092. (kafka.network.Acceptor)
[2015-08-17 19:52:07,312] INFO [Socket Server on Broker 8], Started (kafka.network.SocketServer)
[2015-08-17 19:52:07,407] INFO Will not load MX4J, mx4j-tools.jar is not in the classpath (kafka.utils.Mx4jLoader$)
[2015-08-17 19:52:07,454] INFO conflict in /controller data: {"version":1,"brokerid":8,"timestamp":"1439812327412"} stored data: {"version":1,"brokerid":2,"timestamp":"1439358003358"} (kafka.utils.ZkUtils$)
[2015-08-17 19:52:07,520] INFO Registered broker 8 at path /brokers/ids/8 with address 172.17.6.148:9092. (kafka.utils.ZkUtils$)
[2015-08-17 19:52:07,532] INFO [Kafka Server 8], started (kafka.server.KafkaServer)
[2015-08-17 19:52:07,797] INFO [ReplicaFetcherManager on broker 8] Removed fetcher for partitions [mykafka,0],[mykafka,1],[mytest,0],[mytest01,0] (kafka.server.ReplicaFetcherManager)
[2015-08-17 19:52:07,815] INFO Truncating log mykafka-0 to offset 0. (kafka.log.Log)
[2015-08-17 19:52:07,816] INFO Truncating log mykafka-1 to offset 0. (kafka.log.Log)
[2015-08-17 19:52:07,817] INFO Truncating log mytest-0 to offset 500763. (kafka.log.Log)
[2015-08-17 19:52:07,817] INFO Truncating log mytest01-0 to offset 1. (kafka.log.Log)
[2015-08-17 19:52:07,851] INFO [ReplicaFetcherThread-0-2], Starting (kafka.server.ReplicaFetcherThread)
[2015-08-17 19:52:07,854] INFO [ReplicaFetcherManager on broker 8] Added fetcher for partitions ArrayBuffer([[mytest,0], initOffset 500763 to broker id:2,host:172.17.6.142,port:9092] , [[mytest01,0], initOffset 1 to broker id:2,host:172.17.6.142,port:9092] , [[mykafka,0], initOffset 0 to broker id:2,host:172.17.6.142,port:9092] ) (kafka.server.ReplicaFetcherManager)
[2015-08-17 19:52:07,873] INFO [ReplicaFetcherManager on broker 8] Removed fetcher for partitions [mykafka,1] (kafka.server.ReplicaFetcherManager)
二、kafka测试
1.创建topic(创建一个名为test的topic)
bin/kafka-topics.sh --create --zookeeper 172.17.6.142:2181 -replication-fator 1 --partitions 1 --topic test
2.查看topic
bin/kafka-topics --list --zookeeper 172.17.6.142:2181
3.发送消息
bin/kafka-console-producer.sh --broker-list 172.17.6.142:9092 --topic test
然后输出要发送的消息
4.接收消息
bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning