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 条评论
登录 后参与评论

相关文章

来自专栏依乐祝

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

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

11720
来自专栏乐沙弥的世界

配置共享服务器模式

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

29330
来自专栏智能大石头

NewLife.Net——开始网络编程

网络编程的重要性就不说了,先上源码:https://github.com/nnhy/NewLife.Net.Tests

10500
来自专栏移动开发的那些事儿

Android Sqlite并发问题

如上异常堆栈中的错误信息error code 5: database is locked,经过查找发现code为5代表sqlite中的SQLITE_BUSY异常...

19540
来自专栏Seebug漏洞平台

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

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

422100
来自专栏ytkah

wordpress无法安装这个包。: PCLZIP_ERR_MISSING_FILE (-4) : Missing archive file 'C:\WINDOWS\TEMP/wordpress-4.

朋友的wp博客好久没管理了,让ytkah帮忙打理一下,进到后台发现版本还是3.9的,那是比较早以前的版本了,早该升级了。 在升级wordpress时出现以下错误...

37380
来自专栏小狼的世界

Kubernetes部署ELK并使用Filebeat收集容器日志

Elasticsearch运行时要求vm.max_map_count内核参数必须大于262144,因此开始之前需要确保这个参数正常调整过。

1.7K10
来自专栏逸鹏说道

直传文件到Azure Storage的Blob服务中

题记:为了庆祝获得微信公众号赞赏功能,忙里抽闲分享一下最近工作的一点心得:如何直接从浏览器中上传文件到Azure Storage的Blob服务中。 为什么 如果...

39370
来自专栏Android随笔

Android四大组件安全问题

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

8910
来自专栏草根专栏

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

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

541100

扫码关注云+社区

领取腾讯云代金券