当前位置:首页 > 服务端 > Kafka 安装与入门

Kafka 安装与入门

2022年08月04日 21:22:22服务端6

一、概述

KafkaLinkedin201012月份开源的消息系统,它主要用于处理活跃的流式数据。活跃的流式数据在web网站应用中非常常见,这些数据包括网站的pv、用户访问了什么内容,搜索了什么内容等。这些数据通常以日志的形式记录下来,然后每隔一段时间进行一次统计处理。

传统的日志分析系统提供了一种离线处理日志信息的可扩展方案,但若要进行实时处理,通常会有较大延迟。而现有的消(队列)系统能够很好的处理实时或 者近似实时的应用,但未处理的数据通常不会写到磁盘上,这对于 Hadoop 之类(一小时或者一天只处理一部分数据)的离线应用而言,可能存在问题。 Kafka 正是为了解决以上问题而设计的,它能够很好地离线和在线应用

下图是KafKa部署结构

Kafka 安装与入门 _ JavaClub全栈架构师技术笔记

kafka是显式分布式架构,producerbrokerKafka)和consumer都可以有多个。Kafka的作用类似于缓存,即活跃的数据和离线处理系统之间的缓存。

因为项目的需要这边要安装部署,这里讲述下kafka的安装和一些简单的入门操作

二、kafka安装

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

这边用的是kafka_2.9.2-0.8.1.1.tgz,因为这个是官网推荐的稳定版本

具体地址

http://apache.fayea.com/apache-mirror/kafka/0.8.1.1/kafka_2.9.2-0.8.1.1.tgz

 

下载到服务器上,然后解压文件。

> tar -xzf kafka_2.9.2-0.8.1.1.tgz
> cd kafka_2.9.2-0.8.1.1

这样就安装完成了……

三、kafka入门

3.1、启动

Kafka 需要使用zookeeper,因此在使用kafka前,需要先安装zookeeper,大家可以看我的这篇文章来安装zookeeper单机或者集群

http://blog.csdn.net/looklook5/article/details/40826241

安装完zookeeper后,启动zookeeper

 

然后启动kafka

> bin/kafka-server-start.sh config/server.properties

从命令中可以看出启动kafka 是使用配置文件config/server.properties

配置文件中的一些主要配置

#一台kafka服务器就是一个broker。一个集群由多个broker组成。一个broker可以容纳多个topic,这里broker的ID 必须是整数。
broker.id=128
#kafka 服务侦听端口
port=9092
#kafka 服务的hostname ,注意这个默认是localhost,记得改过来。
host.name=carl
#为了实现扩展性,一个非常大的topic可以分布到多个broker(即服务器)上。kafka只保证按一个partition中的顺序将消息发给consumer,不保证一个topic的整体(多个partition间)的顺序。这里设定partition的个数
num.partitions=2
#消息队列的存储目录
log.dirs=/tmp/kafka-logs
#日志的保留小时
log.retention.hours=168
# zookeeper的设置
zookeeper.connect=carl:2181,slave1:2181,slave2:2181

3.2、创建话题

所谓话题,我们可以直接理解为一个队列

创建话题命令

> bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test

这里说明下如果Topic的"replication factor"为N,那么允许N-1个kafka实例失效

查看话题列表的命令

> bin/kafka-topics.sh --list --zookeeper localhost:2181
test

我们可以查看之前配置文件里设置的log.dirs(消息队列的存储目录)来看话题是否创建

[root@carl kafka-logs]# ll
total 40
-rw-rw-r-- 1 hadoop hadoop   32 Nov 18 15:34 recovery-point-offset-checkpoint
-rw-rw-r-- 1 hadoop hadoop   33 Nov 18 15:34 replication-offset-checkpoint
drwxrwxr-x 2 hadoop hadoop 4096 Nov 18 13:49 test-0

因为我们只设置了一个分区,因此这里关于test的话题就一个,即test-0,进入目录

[root@carl kafka-logs]# cd test-0
[root@carl test-0]# ll
total 8
-rw-rw-r-- 1 hadoop hadoop 10485760 Nov 18 14:32 00000000000000000000.index
-rw-rw-r-- 1 hadoop hadoop        0 Nov 18 14:32 00000000000000000000.log

其中,.log即为消息存储的日志,默认每过160小时会清除一次

 

3.3、生产者发送消息

生产者就是往kafka发消息的客户端Kafka使用一个命令行客户端将从一个文件或标准输入接受输入并把它作为消息的输出。

运行生产者然后键入一些消息到控制台发送到服务器。

> bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test 
This is a message
This is another message

如果发送成功,我们可以查看之前配置文件里设置的log.dirs(消息队列的存储目录)来看消息是否传过来了,即.log 文件应该大小不为0了。

 

3.4、启动消费者

消费者也就是从kafka取消息的客户端

Kafka 也使用一个命令行客户端将从一个文件或标准输入接受生产者对于话题的输出消息。

> bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
This is a message
This is another message

这里说明下from-beginning 是指从头取消息

 

3.5、kafka集群的安装

这里可以参考这篇日志进行kafka集群安装,我觉得这篇写的不错

http://blog.csdn.net/zeroOneMan/article/details/40855937

 

3.6、Producer JAVA API

这里主要是对生产者的一些设置、和发送消息

ProducerConfig config = new ProducerConfig(props);
Producer<String, String> producer = new Producer<String, String>(config);
producer.send(new KeyedMessage<String, String>(话题,内容));

以上是三个关键配置设置配置、初始化producer和发送消息

我们先启动一个test 话题的消费者

> bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test 

这次不重新读取所有消息了。

 

下面是代码

import java.util.Properties;
import java.util.Random;

import kafka.javaapi.producer.Producer;
import kafka.producer.KeyedMessage;
import kafka.producer.ProducerConfig;


public class SendMessage {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Properties props = new Properties();
		props.put("zookeeper.connect", "carl:2181,slave1:2181,slave2:2181");
		props.put("serializer.class", "kafka.serializer.StringEncoder");
		props.put("producer.type", "async");
		props.put("compression.codec", "1");
		props.put("metadata.broker.list", "carl:9092");
		
		ProducerConfig config = new ProducerConfig(props);
		Producer<String, String> producer = new Producer<String, String>(config);
		for(int i=0;i<10;i++){
			producer.send(new KeyedMessage<String, String>("test",String.valueOf(i)));
		}
		producer.close();
		System.out.println("send over ------------------");
	}

}

这里要注意下,如果在windows 上使用eclipse 运行程序的话,这里写的hostname 要在本机的hosts里进行设置,win7的hosts目录为C:\Windows\System32\drivers\etc 

运行后输出


[hadoop@carl kafka_2.9.2-0.8.1.1]$ bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test
0
1
2
3
4
5
6
7
8
9

可以看到消息正确输出了。

作者:顾晓艳
来源链接:https://blog.csdn.net/looklook5/article/details/41248561

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/server/17460.html

分享给朋友:

“Kafka 安装与入门” 的相关文章

kafka启动后没反应

kafka使用脚本启动后后台没有进程 然后删除data和log目录下的所有文件 开启kafka,成功解决 作者:nidiquge 来源链接:https://blog.csdn.net/nidiquge/article/detail...

Windows环境中Kafka的安装及使用

Windows环境中Kafka的安装及使用

Kafka安装及使用 1. 简介 2.环境搭建 2.1安装JDK(例如JDK1.8等) 2.2 安装Zookeeper 2.3 安装Kafka...

CentOS7 安装kafka教程及启动

CentOS7 安装kafka教程及启动

介绍 Kafka是分布式发布-订阅消息系统,最初由LinkedIn公司开发,之后成为之后成为Apache基金会的一部分,由Scala和Java编写。Kafka是一种快速、可扩展的、设计内在就是分布式的,分区的和可复制的提交日志服务。 它与传统系统相比,有以下不同:...

Kafka安装之二 在CentOS 7上安装Kafka

Kafka安装之一  Zookeeper Kafka安装之二 在CentOS 7上安装Kafka 一、简介         Kafka是由Apache软件基金会开发的一个开...

windows安装kafka

windows安装kafka

一、下载kafka http://kafka.apache.org/downloads 选择二进制版本。 二、安装kafka 下载到本地后,将文件解压到本地磁盘下,该文件夹包括了所有相关的运行文件及配置文件,其子文件夹bin\w...

kafka 安装 测试 could not be established. Broker may not be available

liulux服务器,安装启动kafka服务 kafka_2.12-2.2.0.tgz 解压安装包,修改config目录中zookeeper.properties和server.properties配置文件,一般只需要修改日志和数据保存的路径,端口使用默认...

Kafka 入门教程之一: 安装

Kafka 入门教程之一: 安装

Kafka 入门教程之一: 安装 1. 官网下载软件 http://kafka.apache.org/ 2. 安装单节点kafka a) 创建用户kafka [root@tjtestrac1 ~]# useradd...

kafka安装-windows环境

kafka安装-windows环境

kafka是一个分布式消息队列。具有高性能、持久化、多副本备份、横向扩展能力。   window环境下如何安装kafka呢?   下载地址: Zookeeper下载地址:   http://archive.a...

大聪明教你学kafka | Windows10系统下kafka安装及使用

大聪明教你学kafka | Windows10系统下kafka安装及使用

前言 Apache Kafka 是一款开源的消息系统,在开发各类系统的时候,我们经常会选择使用Kafka来帮助我们削峰、做异步处理、解耦,那么正好借此机会跟大家说说kafka的安装部署、应用场景以及简单的使用。 kafka的安装部署 想...

kafka安装使用

kafka安装使用

 先来说下kafka是个什么东西,它是一个消息中间件框架,只负责发布--订阅(帮忙存东西的)接着给大家看一张大致的kafka流程图         首先打个比方,kafka...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。