Kafka 单机安装、测试和监控

来源:互联网 发布:手机拍电影特效软件 编辑:程序博客网 时间:2024/05/19 14:19

Kafka是一款分布式消息发布和订阅的系统,具有高性能和高吞吐率。


Kafka 的结构图:




1、 消息的发布称为 producer,即生产者。消息的订阅称作 consumer,即消费者。一台 kafka服务器就是一个broker。一个集群由多个broker组成。

2、Producer和broker之间没有负载均衡机制。broker和consumer之间利用zookeeper进行负载均衡。所有broker和consumer都会在zookeeper中进行注册,且 zookeeper会保存他们的一些元数据信息。如果某个broker和consumer发生了变化,所有其他的broker和consumer都会得到通知。

3、producer产生和推送(push)数据到broker,consumer从broker拉取(pull)数据并进行处理。 

4、使用磁盘进行存储,线性读写,速度快:避免了数据在JVM内存和系统内存之间的复制,减少性能的创建对象和垃圾回收。

 

Kafka的作用类似于缓存,即活跃的数据和离线处理系统之间的缓存。


安装:

1、下载

[root@master ~]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/0.8.1.1/kafka_2.9.2-0.8.1.1.tgz


2、解压

[root@master ~]# tar -zxvf kafka_2.9.2-0.8.1.1.tgz


3、链接

[root@master ~]# ln -s kafka_2.9.2-0.8.1.1 kafka

[root@master ~]# ll

lrwxrwxrwx. 1 root root        19 Oct  6 00:08 kafka ->kafka_2.9.2-0.8.1.1
drwxr-xr-x. 6 root root      4096 Aug  4 20:17 kafka_2.9.2-0.8.1.1
-rw-r--r--. 1 root root  32609012 Aug  9 12:14 kafka_2.9.2-0.8.1.1.tgz


4、修改配置 conf/server.properties 
host.name=master  

zookeeper.connect=master:2181


5、启动和停止 

Kafka用到了Zookeeper,所有首先启动Zookeeper,下面简单的启用一个单实例的Zookeeper服务。

后台启动Zookeeper

[root@master kafka]# bin/zookeeper-server-start.sh config/zookeeper.properties &
[1] 3052
[root@master kafka]# Unrecognized VM option 'UseCompressedOops'
Error: Could not create the Java Virtual Machine.

Error: A fatal exception has occurred. Program will exit.


解决:

Kafka默认开启JVM压缩指针,在64位的机器上支持,32位不支持,需要修改 bin/kafka-run-class.sh文件。

[root@master kafka]# vim bin/kafka-run-class.sh 


找到下面这个:去除-XX:+UseCompressedOops

# JVM performance options
if [ -z "$KAFKA_JVM_PERFORMANCE_OPTS" ]; then
  KAFKA_JVM_PERFORMANCE_OPTS="-server -XX:+UseCompressedOops -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+CMSScavengeBeforeRemark -XX:+DisableExplicitGC -Djava.awt.headless=true"
fi

修改完之后重启zookeeper,将不会报错。


台启动Kafka

[root@master kafka]# bin/kafka-server-start.sh config/server.properties &


停止时,先停止Kafka,然后再停止Zookeeper

bin/kafka-server-stop.sh

bin/zookeeper-server-stop.sh 



测试:

1、创建 topic

创建一个叫做“test”的topic,它只有一个分区,一个副本。

[root@master kafka]# bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test


2、通过list命令查看创建的topic:

[root@master kafka]# bin/kafka-topics.sh --list --zookeeper localhost:2181

test


3、发送消息

运行producer并在控制台中输一些消息,这些消息将被发送到服务端:

[root@master kafka]# bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
This is a message

ctrl+c可以退出发送。


4、消费消息

[root@master kafka]# bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning

This is a message


你在一个终端中运行consumer命令行,在另一个终端中运行producer命令行,就可以在一个终端输入消息,另一个终端读取消息。


使用KafkaOffsetMonitor进行监控

下载地址:http://download.csdn.net/detail/u012689336/9453017

KafkaOffsetMonitor 是有由Kafka开源社区提供的一款Web管理界面。

新建一个单独用于Kafka的监控目录,我这里新建一个kafka_monitor文件目录,然后写启动脚本,脚本内容如下所示:

[root@master ~]# mkdir kafka_monitor

[root@master ~]# cp  KafkaOffsetMonitor-assembly-0.2.0.jar kafka_monitor/

[root@master ~]# cd kafka_monitor/

[root@master kafka_monitor]# touch run.sh

[root@master kafka_monitor]# vim run.sh

#! /bin/bash
java -cp KafkaOffsetMonitor-assembly-0.2.0.jar \
 com.quantifind.kafka.offsetapp.OffsetGetterWeb \
 --zk localhost:2181 \
 --port 8080 \
 --refresh 10.seconds \
 --retain 1.days


首先指明运行Web监控的类,然后需要用到ZooKeeper,所有要填写ZK集群信息,接着是Web运行端口,页面数据刷新的时间以及保留数据的时间值。


启动监控

[root@master kafka_monitor]# sh run.sh


访问:

http://master:8080





Topic List 栏目中就可以看到刚才创建的test topic了。


0 0