分布式消息队列Kafka集群安装

kafka是LinkedIn开发并开源的一个分布式MQ系统,现在是Apache的一个孵化项目。在它的主页描述kafka为一个高吞吐量的分布式(能将消息分散到不同的节点上)MQ。在这片博文中,作者简单提到了开发kafka而不选择已有MQ系统的原因。两个原因:性能和扩展性。Kafka仅仅由7000行Scala编写,据了解,Kafka每秒可以生产约25万消息(50 MB),每秒处理55万消息(110 MB)。

Kafka版本:0.8.0

约定:安装3台虚拟机

官网:http://kafka.apache.org/
官方文档:http://kafka.apache.org/documentation.html#quickstart

 

下载解压

# wget http://mirrors.hust.edu.cn/apache/kafka/0.8.0/kafka-0.8.0-src.tgz
# tar xzf kafka-0.8.0-src.tgz
# cd kafka-0.8.0-src

Kafka是用Scala写的,SBT是Simple Build Tool的简称,如果读者使用过Maven,那么可以简单将SBT看做是Scala世界的Maven,虽然二者各有优劣,但完成的工作基本是类似的。
## Building it ##
# ./sbt update
# ./sbt package
# ./sbt assembly-package-dependency

以上每一步完成就会提醒[Success]

例如:[success] Total time: 21 s, completed 2014-2-11 10:29:55

集群环境需要修改配置文件

# vim config/server.properties

brokerid:这个每个server(broker)必须唯一,写数字

hostname:这个也是唯一的,写服务器IP即可

############################# Server Basics #############################

# The id of the broker. This must be set to a unique integer for each broker.
broker.id=3

############################# Socket Server Settings #############################

# The port the socket server listens on
port=9092

# Hostname the broker will bind to and advertise to producers and consumers.
# If not set, the server will bind to all interfaces and advertise the value returned from
# from java.net.InetAddress.getCanonicalHostName().
#host.name=localhost
host.name=192.168.2.111

还有就是zookeeper.connect也要配置

zookeeper.connect=192.168.19.218:2181,192.168.19.217:2181,192.168.19.214:2181

关于zookeeper的安装可以参考此文:ZooKeeper集群环境安装与配置

其他默认配置即可。

启动Kafka服务

# /usr/kafka-0.8.0-src/bin/kafka-server-start.sh /usr/kafka-0.8.0-src/config/server.properties

创建Topic
# /usr/kafka-0.8.0-src/bin/kafka-create-topic.sh --zookeeper localhost:2181 --partition 1 --topic test
查看Topic
# /usr/kafka-0.8.0-src/bin/kafka-list-topic.sh --zookeeper localhost:2181
输出:

topic: test     partition: 0    leader: 1       replicas: 1     isr: 1

说明:
partiton: partion id,由于此处只有一个partition,因此partition id 为0
leader:当前负责读写的lead broker id
relicas:当前partition的所有replication broker  list
isr:relicas的子集,只包含出于活动状态的broker

producer发送消息
# /usr/kafka-0.8.0-src/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
This is a message
This is another message

consumer接收消息
# /usr/kafka-0.8.0-src/bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning

注意,如果上述命令不能发送接收消息说明没有配置host,可以直接用ip

producer发送消息
# /usr/kafka-0.8.0-src/bin/kafka-console-producer.sh --broker-list 192.168.19.218:9092 --topic test

consumer接收消息
# /usr/kafka-0.8.0-src/bin/kafka-console-consumer.sh --zookeeper 192.168.19.218:2181 --topic test --from-beginning

如果要最新的数据,可以不带--from-beginning参数即可。

# /usr/kafka-0.8.0-src/bin/kafka-console-consumer.sh --zookeeper 192.168.19.218:2181 --topic test

在kafka的核心思路中,不需要在内存里缓存数据,因为操作系统的文件缓存已经足够完善和强大,只要不做随机写,顺序读写的性能是非常高效的。kafka的数据只会顺序append,数据的删除策略是累积到一定程度或者超过一定时间再删除。Kafka另一个独特的地方是将消费者信息保存在客户端而不是MQ服务器,这样服务器就不用记录消息的投递过程,每个客户端都自己知道自己下一次应该从什么地方什么位置读取消息,消息的投递过程也是采用客户端主动pull的模型,这样大大减轻了服务器的负担。Kafka还强调减少数据的序列化和拷贝开销,它会将一些消息组织成Message Set做批量存储和发送,并且客户端在pull数据的时候,尽量以zero-copy的方式传输,利用sendfile(对应java里的FileChannel.transferTo/transferFrom)这样的高级IO函数来减少拷贝开销。可见,kafka是一个精心设计,特定于某些应用的MQ系统,这种偏向特定领域的MQ系统我估计会越来越多,垂直化的产品策略值的考虑。

只要磁盘没有限制并且不出现损失,kafka可以存储相当长时间的消息(一周)。

原文出自:本人另一个博客http://blog.csdn.net/unix21/

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.net

原文地址:https://www.cnblogs.com/siwnchs/p/10462254.html

时间: 2024-10-10 15:53:02

分布式消息队列Kafka集群安装的相关文章

zookeeper+kafka集群安装之二

zookeeper+kafka集群安装之二 此为上一篇文章的续篇, kafka安装需要依赖zookeeper, 本文与上一篇文章都是真正分布式安装配置, 可以直接用于生产环境. zookeeper安装参考: http://blog.csdn.net/ubuntu64fan/article/details/26678877 首先了解几个kafka中的概念: kafka是一个消息队列服务器,服务称为broker, 消息发送者称为producer, 消息接收者称为consumer; 通常我们部署多个b

KafKa集群安装、配置

一.事前准备 1.kafka官网:http://kafka.apache.org/downloads. 2.选择使用版本下载. 3.kafka集群环境准备:(linux) 192.168.145.129   主机名:kafka01 192.168.145.130              kafka02 192.168.145.131              kafka03 4.本次安装版本:kafka_2.10-0.8.2.0 5.注意事项 ①:kafka依赖zookeeper集群. ②:集

Kafka集群安装与扩容

介绍略 集群安装: 一.准备工作: 1.版本介绍: 目前我们使用版本为kafka_2.9.2-0.8.1(scala-2.9.2为kafka官方推荐版本,此外还有2.8.2和2.10.2可以选择) 2.环境准备: 安装JDK6,目前使用版本为1.6,并配置JAVA_HOME 3.配置修改: 1)拷贝线上配置到本地kafka目录. 2)需要注意的是server.properties里broker和ip的指定,必须要唯一. 3)server.properties中log.dirs必须要手动指定.此配

zookeeper+kafka集群安装之一

zookeeper+kafka集群安装之一 准备3台虚拟机, 系统是RHEL64服务版. 1) 每台机器配置如下: $ cat /etc/hosts ... # zookeeper hostnames: 192.168.8.182 zk1 192.168.8.183 zk2 192.168.8.184 zk3 2) 每台机器上安装jdk, zookeeper, kafka, 配置如下: $ vi /etc/profile ... # jdk, zookeeper, kafka export KA

13张PPT带你了解主动式消息队列处理集群

前言 偷偷和你们说,我搞了一份内部资料,该内部资料共有13张PPT,据作者透露,该PPT至少花了整整1周时间才编写完成,其内容简洁明了,内容深度足够,易于初学者理解,也给深度开发人员分享了不一样的消息队列的玩法.特别重要的是,该架构目前已大面积的稳定应用于生产环境. PPT的内容我作了脱敏处理,经作者审核后分享给大家. 特点 该消息队列的主要特点是:主动式.其架构主要由3大部分组成,分别是:消息生产者.消息处理集群.消息消费者,该架构和一般的消费队列最大的区别就是:消息生产者和消费者不直接接触消

Centos7.4 kafka集群安装与kafka-eagle1.3.9的安装

Centos7.4 kafka集群安装与kafka-eagle1.3.9的安装 集群规划: hostname Zookeeper Kafka kafka-eagle kafka01 √ √ √ kafka02 √ √ kafka03 √ √ 准备工作: 网络配置 vim /etc/sysconfig/network-scripts/ifcfg-ens33 # kafka01 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=sta

kafka集群安装与配置

一.集群安装 1. Kafka下载: 可以从kafka官方网站(http://kafka.apache.org)上找到下载地址,再wgetwget http://mirrors.cnnic.cn/apache/kafka/0.8.2.2/kafka_2.10-0.8.2.2.tgz 解压该文件: tar zxvf kafka_2.10-0.8.2.2.tgz 注意kafka依赖于zookeeper和scala,以上tgz文件名中的2.10即为scala的版本号 zk和scala的安装在此不再赘述

Kafka 消息队列系列之分布式消息队列Kafka

介绍 ApacheKafka®是一个分布式流媒体平台.这到底是什么意思呢?我们认为流媒体平台具有三个关键功能:它可以让你发布和订阅记录流.在这方面,它类似于消??息队列或企业消息传递系统.它允许您以容错方式存储记录流.它可以让您在发生记录时处理记录流.什么是卡夫卡好?它被用于两大类的应用程序:构建可在系统或应用程序之间可靠获取数据的实时流数据管道构建实时流应用程序,可以转换或响应数据流要了解卡夫卡如何做这些事情,让我们深入探索卡夫卡的能力.首先几个概念:Kafka作为一个或多个服务器上的集群运行

基于Docker搭建分布式消息队列Kafka

本文基于Docker搭建一套单节点的Kafka消息队列,Kafka依赖Zookeeper为其管理集群信息,虽然本例不涉及集群,但是该有的组件都还是会有,典型的kafka分布式架构如下图所示.本例搭建的示例包含Zookeeper + Kafka + Kafka-manger #获取镜像 ·         zookeeper镜像:zookeeper:3.4.9 ·         kafka镜像:wurstmeister/kafka:0.10.2.0 ·         kafka-manager