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的作用类似于缓存,即活跃的数据和离线处理系统之间的缓存。

准备工作: 
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

kafka本地单机安装部署

至此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

kafka本地单机安装部署

使之立即生效 
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

kafka本地单机安装部署

kafka本地单机安装部署

如上图所示,即为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

kafka本地单机安装部署

vim server.properties

kafka本地单机安装部署

将上图中的host.name处写上本地服务器的IP地址

kafka本地单机安装部署

mkdir -p /opt/kafka/kafka_2.8.0-0.8.0/logs

上图中的log.dirs结合自己所建的文件夹路径填写,没有严格要求

kafka本地单机安装部署

上图中的红框处默认为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

kafka本地单机安装部署

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 &

kafka本地单机安装部署

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

kafka本地单机安装部署

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

./kafka-list-topic.sh -zookeeper localhost:2181

kafka本地单机安装部署

(3)、启动producer 发送消息

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

./kafka-console-producer.sh -broker-list 192.168.200.243:9092 -topic test 

(192.168.200.243是本地服务器IP地址,读者根据情况填写)

kafka本地单机安装部署

如上图所示,输入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

kafka本地单机安装部署

你在一个终端中运行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 &

kafka本地单机安装部署

kafka本地单机安装部署