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

相关文章

来自专栏云计算教程系列

为公益伸出援手,自建 NTP 服务器池

在本教程中,讲述如何设置了自己的时间服务器,并使其成为NTP池项目的成员,为社区服务,现在国内NTP服务器数量还是不够乐观,还是那句话,如果你有位于国内的、长期...

3.4K12
来自专栏Jaycekon

Zookeeper-5分钟快速掌握分布式应用程序协调服

一、Zookeeper 安装 1.zookeeper支持brew安装。 ➜ ~ brew info zookeeper zookeeper: stable 3...

3685
来自专栏嵌入式程序猿

小猿助你freeRTOS驱动开发

准备工作: 1,基于之前移植好的K64+freeRTOS平台 2,装有IAR的电脑 3,塔式系统平台TWR-K64F120M 之前曾多次提到过,移植一个源码包,...

3895
来自专栏L宝宝聊IT

Linux基础——磁盘配额

1486
来自专栏Android源码框架分析

Android模拟器识别技术

Android模拟器常常被用来刷单,如何准确的识别模拟器成为App开发中的一个重要模块,目前也有专门的公司提供相应的SDK供开发者识别模拟器。 目前流行的And...

1944
来自专栏Hadoop实操

LDAP用户组信息异常导致Sentry授权失效问题分析

问题起因:“80040151”用户反映在Hue上通过Hive查询表数据出现异常,异常信息为权限拒绝,需要通过Sentry授权。然而通过beeline直连Hive...

1053
来自专栏铭毅天下

干货 | 你是不是也有多进程管理的困惑呢?

场景一: 将关系型、非关系型数据的数据同步到ES中。 但是数据库中的表有多个, 一种方案是:一个配置文件中 if else 的方式配置多个表; 另外一种方案是:...

962
来自专栏程序员八阿哥

Nginx与前端开发

作为前端开发,即使没用过Nginx,但一定听说过上面这句话。这句经典的话,基本构成了所有人对Nginx的第一印象。

941
来自专栏加米谷大数据

技术干货 | hbase配置详解

为了能够让namespace支持使用配置属性,如:namespace下表个数(hbase.namespace.quota.maxtables)或者region个...

3825
来自专栏喵了个咪的博客空间

[喵咪Redis]Redis安装与介绍

[喵咪Redis]Redis安装与介绍 ? 前言 哈喽大家好啊,这次要来和大家一起来了解学习Redis的一系列技术,最终目的是搭建一个高可用redis集群自动负...

3657

扫码关注云+社区