MENU

Kafka 安装教程

Kafka 是什么?

分布式发布订阅消息系统 Kafka 架构设计

官方文档: http://kafka.apache.org/0110/documentation.html#producerapi


名词解释:

  • 【Producer】: 特指消息的生产者
  • 【Consumer】 :特指消息的消费者
  • 【Consumer】 Group :消费者组,可以并行消费Topic中partition的消息
  • 【Broker】:缓存代理,Kafa 集群中的一台或多台服务器统称为 broker。
  • 【Topic】:特指 Kafka 处理的消息源(feeds of messages)的不同分类。
  • 【Partition】:Topic 物理上的分组,一个 topic 可以分为多个 partition,每个 partition 是一个有序的队列。partition 中的每条消息都会被分配一个有序的 id(offset)
  • 【Message】:消息,是通信的基本单位,每个 producer 可以向一个 topic(主题)发布一些消息
  • 【Producers】(是个动词):消息和数据生产者,向 Kafka 的一个 topic 发布消息的过程叫做 producers
  • 【Consumers】(是个动词):消息和数据消费者,订阅 topics 并处理其发布的消息的过程叫做 consumers

Kafka 安装

下载

下载地址:http://kafka.apache.org/downloads

教程地址:https://kafka.apache.org/quickstart


解压
tar -zxvf kafka_2.12-1.0.0.tgz
cd kafka_2.11-1.0.0

配置文件修改

a.修改监听kafka地址

server.properties

# Hostname and port the broker will advertise to producers and consumers. If not set,
# it uses the value for "listeners" if configured.  Otherwise, it will use the value
# returned from java.net.InetAddress.getCanonicalHostName().
# listener address
advertised.listeners=PLAINTEXT://host_name:port:9092 # 修改这里

修改为:

# Hostname and port the broker will advertise to producers and consumers. If not set,
# it uses the value for "listeners" if configured.  Otherwise, it will use the value
# returned from java.net.InetAddress.getCanonicalHostName().
listeners=PLAINTEXT:///123.207.119.211:9092

<div style="color:red">注意:</div> your.host.name 为kafka安装的服务器ip或域名地址。(不设置外网无法访问,开始的时候认为这个是监听外网的地址,理解错误)

b.修改zookeeper地址

server.properties

############################# Zookeeper #############################
# Zookeeper connection string (see zookeeper docs for details).
# This is a comma separated host:port pairs, each corresponding to a zk
# server. e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002".
# You can also append an optional chroot string to the urls to specify the
# root directory for all kafka znodes.
zookeeper.connect=localhost:2181 #修改这里
# Timeout in ms for connecting to zookeeper
zookeeper.connection.timeout.ms=6000

内存修改

注意:若机器内存较小,则需要修改配置文件

kafka-server-start.sh

if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
    export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
fi

启动

bin/kafka-server-start.sh config/server.properties
系统服务
cd /etc/rc.d/init.d/ 
touch kafka  
chmod +x kafka 
vi kafka 

编辑文件内容

#!/bin/bash  
#chkconfig:2345 20 90  
#description:kafka  
#processname:kafka  
#export JAVA_HOME=//usr/lib/java/jdk1.8.0_151  
case $1 in  
        start) su root /usr/local/app/kafka_2.12-1.0.0/bin/kafka-server-start.sh /usr/local/app/kafka_2.12-1.0.0/config/server.properties;;  
        stop) su root /usr/local/app/kafka_2.12-1.0.0/bin/kafka-server-stop.sh stop;;  
        create) su root /usr/local/app/kafka_2.12-1.0.0/bin/bin/kafka-topics.sh create;;   
        *) echo "require start|stop|create" ;;  
esac  
开机启动
chkconfig --add kafka
chkconfig --list

遇到的问题

1.启动的时候无法找到主类

在配置好kafka的server.properties文件后,cmd进入命令窗口输入命令:

.\bin\windows\kafka-server-start.bat config\server.properties

提示错误:错误: 找不到或无法加载主类 FilesJavajdk1.7.0_80lib;C:Program

解决方式如下:在kafka安装目录中找到binwindows目录中的kafka-run-class.bat找到142行为%CLASSPATH%加上双引号

修改前:

set COMMAND=%JAVA% %KAFKA_HEAP_OPTS% %KAFKA_JVM_PERFORMANCE_OPTS% %KAFKA_JMX_OPTS% %KAFKA_LOG4J_OPTS% -cp %CLASSPATH% %KAFKA_OPTS% %*

修改后:

set COMMAND=%JAVA% %KAFKA_HEAP_OPTS% %KAFKA_JVM_PERFORMANCE_OPTS% %KAFKA_JMX_OPTS% %KAFKA_LOG4J_OPTS% -cp "%CLASSPATH%" %KAFKA_OPTS% %*
Tags: Kafka, 教程
Archives QR Code
QR Code for this page
Tipping QR Code