kafka本地单机安装部署
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的作用类似于缓存,即活跃的数据和离线处理系统之间的缓存。
准备工作:
上述的文件除了jdk以外均放在/opt/kafka目录下
1、安装jdk1.7包
tar -zxvf jdk-7u55-linux-x64.gz
vim /etc/profile
export JAVA_HOME=/opt/jdk1.7.0_55
export PATH=$JAVA_HOME/bin:$PATH
使其立即生效 source /etc/profile
检查是否安装成功:java –version
至此jdk安装配置成功。
2、安装zookeeper包
cd /opt/kafka
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.3.6/zookeeper-3.3.6.tar.gz
tar -zxvf zookeeper-3.3.6.tar.gz
vim /etc/profile
使之立即生效
source /etc/profile
vim /opt/kafka/zookeeper-3.3.6/conf/zoo.cfg
tickTime=2000
dataDir=/opt/kafka/zookeeper-3.3.6/data
clientPort=2181
initLimit=10
syncLimit=5
server.1=192.168.200.243:2888:3888
mkdir -p /opt/kafka/zookeeper-3.3.6/data/
echo "1" >> /opt/kafka/zookeeper-3.3.6/data/myid
测试zookeeper是否安装成功
cd /opt/kafka/zookeeper-3.3.6/bin
./zkServer.sh start
如上图所示,即为zookeeper安装配置成功。
3、安装kafka包
cd /opt/kafka
wget https://archive.apache.org/dist/kafka/0.8.0/kafka_2.8.0-0.8.0.tar.gz
tar -zxvf kafka_2.8.0-0.8.0.tar.gz
配置kafka,修改文件server.properties
cd /opt/kafka/kafka_2.8.0-0.8.0/config
vim server.properties
将上图中的host.name处写上本地服务器的IP地址
mkdir -p /opt/kafka/kafka_2.8.0-0.8.0/logs
上图中的log.dirs结合自己所建的文件夹路径填写,没有严格要求
上图中的红框处默认为2181端口
#配置kafka下zookeeper
mkdir -p /opt/kafka/kafka_2.8.0-0.8.0/zookeeper #创建zookeeper目录
mkdir -p /opt/kafka/kafka_2.8.0-0.8.0/log/zookeeper #创建zookeeper日志目录
cd /opt/kafka/kafka_2.8.0-0.8.0/config
vim zookeeper.properties
dataDir=/opt/kafka/kafka_2.8.0-0.8.0/zookeeper
dataLogDir=/opt/kafka/kafka_2.8.0-0.8.0/log/zookeeper
上图中的dataDir和dataLogDir可以依据自己建立的文件夹路径填写。
4、后台启动kafka
(1)后台启动kafka服务
cd /opt/kafka/kafka_2.8.0-0.8.0/bin
nohup ./kafka-server-start.sh ../config/server.properties &
5、测试kafka
(1)、创建 topic
#创建一个叫做"test"的topic,它只有一个分区,一个副本。
cd /opt/kafka/kafka_2.8.0-0.8.0/bin
./kafka-create-topic.sh -partition 1 -replica 1 -zookeeper localhost:2181 -topic test
(2)、通过list命令查看创建的topic:
./kafka-list-topic.sh -zookeeper localhost:2181
(3)、启动producer 发送消息
#运行producer并在控制台中输一些消息,这些消息将被发送到服务端:
./kafka-console-producer.sh -broker-list 192.168.200.243:9092 -topic test
(192.168.200.243是本地服务器IP地址,读者根据情况填写)
如上图所示,输入this is a message后,回车
(4)、启动consumer消费消息
cd /opt/kafka/kafka_2.8.0-0.8.0/bin
./kafka-console-consumer.sh -zookeeper localhost:2181 -topic test
你在一个终端中运行consumer命令行,在另一个终端中运行producer命令行,就可以在一个终端输入消息,另一个终端读取消息。
kafka的单机安装部署完成。
(5)、关闭kafka
cd /opt/kafka/kafka_2.8.0-0.8.0/bin
./kafkastop.sh
6、KafkaOffsetMonitor进行监控
KafkaOffsetMonitor 是有由Kafka开源社区提供的一款Web管理界面。
#新建一个单独用于Kafka的监控目录,我这里新建一个kafka_monitor文件目录,然后写启动脚本,脚本内容如下所示:
cd /opt/kafka/kafka_2.8.0-0.8.0
mkdir kafka_monitor
cd kafka_monitor/
上传KafkaOffsetMonitor-assembly-0.2.0.jar包到kafka_monitor目录
touch run.sh
vim run.sh
#! /bin/bash
java -cp KafkaOffsetMonitor-assembly-0.2.0.jar \
com.quantifind.kafka.offsetapp.OffsetGetterWeb \
--zk 192.168.200.243:2181 \
--port 8080 \
--refresh 10.seconds \
--retain 1.days
#首先指明运行Web监控的类,然后需要用到ZooKeeper,所有要填写ZK集群信息,接着是Web运行端口,页面数据刷新的时间以及保留数据的时间值。
# nohup ./run.sh &