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% %*

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Android随笔

Android四大组件安全问题

我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invi...

721
来自专栏草根专栏

使用Identity Server 4建立Authorization Server (1)

本文内容基本完全来自于Identity Server 4官方文档: https://identityserver4.readthedocs.io/ 官方文档很详...

46910
来自专栏乐沙弥的世界

配置共享服务器模式

两者完成相同的任务,即处理所有指定的SQL操作。假定从客户端提交一个任意查询(DQL)到数据库服务器不论是专用模式还是共享

1703
来自专栏依乐祝

Net Core集成Exceptionless分布式日志功能以及全局异常过滤

这篇文章有一部分内容翻译自官方文档,[点我阅读][https://github.com/exceptionless/Exceptionless.Net/wiki...

842
来自专栏张善友的专栏

在 Windows 上安装Rabbit MQ 指南

rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统。他遵循Mozilla Public License开源协议。采用 Erlang 实现...

2139
来自专栏Android常用基础

Tinker-使用教程与原理分析(上)

前面我们讲解了AndFix的使用,这篇我们来讲解下微信的Tinker热修复,相比AndFix,Tinker的功能更加全面,更主要的是他支持gradle。他不仅做...

1421
来自专栏cmazxiaoma的架构师之路

RabbitMQ生产端消息可靠性投递方案分析

导文: 1.什么是RabbitMQ 2.Java开发技术大杂烩(三)之电商项目优化、rabbitmq、Git、OSI、VIM、Intellj IDEA、HT...

1223
来自专栏NetCore

Identity Service - 解析微软微服务架构eShopOnContainers(二)

接上一篇,众所周知一个网站的用户登录是非常重要,一站式的登录(SSO)也成了大家讨论的热点。微软在这个Demo中,把登录单独拉了出来,形成了一个Service,...

2505
来自专栏我叫刘半仙

原荐记一次服务器被植入挖矿木马cpu飙升200%解决过程

线上服务器用的是某讯云的,欢快的完美运行着Tomcat,MySQL,MongoDB,ActiveMQ等程序。突然一则噩耗从前线传来:网站不能访问了。 此项目是我...

4304
来自专栏Seebug漏洞平台

使用 XML 内部实体绕过 Chrome 和 IE 的 XSS 过滤器

来源:BypassingXSSFiltersusingXMLInternalEntities 原作者:DavidLitchfield (david@davidl...

38210

扫码关注云+社区