Kafka入门-集群搭建

Kafka入门

Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,

Kafka是什么

  • Apache Kafka是一个开源消息系统,由Scala写成。是由Apache软件基金会开发的一个开源消息系统项目。
  • Kafka最初是由LinkedIn开发,并于2011年初开源。2012年10月从Apache Incubator毕业。该项目的目标是为处理实时数据提供一个统一、高通量、低等待的平台。
  • Kafka是一个分布式消息队列:生产者、消费者的功能。它提供了类似于JMS的特性,但是在设计实现上完全不同,此外它并不是JMS规范的实现。
  • Kafka对消息保存时根据Topic进行归类,发送消息者称为Producer,消息接受者称为Consumer,此外kafka集群有多个kafka实例组成,每个实例(server)成为broker。
  • 无论是kafka集群,还是producer和consumer都依赖于zookeeper集群保存一些meta信息,来保证系统可用性

Kafka核心组件

  • Topic :消息根据Topic进行归类
  • Producer:发送消息者
  • Consumer:消息接受者
  • broker:每个kafka实例(server)
  • Zookeeper:依赖集群保存meta信息。

在这里插入图片描述

Kafka集群搭建

前提:已成功搭建zookeeper集群

概览

Kafka最终部署在主机名为mini1、mini2、mini3的三台机器上,zookeeper也同时部署在这三天机器。配置三台主机的/etc/hosts文件,使IP和主机名对应。本次部署的Kafka版本为 kafka_2.11-0.8.2.2

  • 集群部署的基础环境准备

    • root用户下防火墙
      chkconfig iptables off  && setenforce 0
    
    • 创建mini用户
     groupadd mini && useradd mini && usermod -a -G mini mini
    
    • 创建工作目录并赋权
      mkdir /export
      mkdir /export/servers
      chmod 755 -R /export
    
    • 切换到mini用户下
  • 下载安装包

地址 http://kafka.apache.org/downloads.html 在官网找到对应的kafka_2.11-0.8.2.2.tgz 压缩包下载。

  • 将压缩包上传到mini1机器并解压安装包
tar -zxvf /export/software/kafka_2.11-0.8.2.2.tgz -C /export/servers/
cd /export/servers/
mv kafka_2.11-0.8.2.2 kafka
  • 修改配置文件
# 全局唯一编号,不能重复
broker.id=1

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

# 用来监听的端口,producer或consumer将在此端口上建立连接
port=9092

# 处理网络请求的线程数量
num.network.threads=3
 
# 用来处理磁盘IO的线程数量
num.io.threads=8

# 发送套接字的缓冲区大小
socket.send.buffer.bytes=102400

# 接受套接字的缓冲区大小
socket.receive.buffer.bytes=102400

# 请求套接字的缓冲区大小
socket.request.max.bytes=104857600


############################# Log Basics #############################

# kafka运行日志保存的路径
log.dirs=/export/servers/logs/kafka

# topic在当前broker上的分片个数
num.partitions=2

# 用来恢复和清理data下的数据的线程数量
num.recovery.threads.per.data.dir=1

############################# Log Flush Policy #############################

# segment 文件保留的最长时间,超时将被删除
log.retention.hours=168

# 滚动生成新的segment文件的最大时间
log.roll.hours=168

# 日志文件中每个segment的大小,默认为1G
log.segment.bytes=1073741824

# to the retention policies
# 周期性检查文件大小的时间
log.retention.check.interval.ms=300000

# 日志清理是否打开
log.cleaner.enable=true

############################# Zookeeper #############################

zookeeper.connect=mini1:2181,mini2:2181,mini3:2181

# zookeeper链接的超时时间
zookeeper.connection.timeout.ms=6000

# partiion buffer中,消息的条数达到阈值,将触发flush到磁盘
log.flush.interval.messages=10000

# 消息buffer的时间,达到阈值,将触发flush到磁盘
log.flush.interval.ms=3000

# 删除topic需要server.properties中设置delete.topic.enable=true否则只是标记删除
delete.topic.enable=true

# 此处的host.name为本机的IP,如果不改则客户端会抛出:Producer connection to localhost:9092 unsuccessful 错误!
host.name=mini2
# host 对应的IP
advertised.host.name=192.168.175.139

  • 分发安装包到其他机器
scp -r /export/servers/kafka mini2:/export/servers
scp -r /export/servers/kafka mini3:/export/servers
  • 再次修改配置文件

依次修改各服务器上配置文件的的broker.id,分别是0,1,2不得重复,同时修改配置文件的host.name 与 advertised.host.name,并在各个机器上创建上述配置文件中设置的kafka运行时的日志所在目录 (log.dirs的值)。

  • 启动集群
    • 先启动zookeeper集群
    • 依次在各节点上启动kafka
     /export/servers/kafka/bin/kafka-server-start.sh  /export/servers/kafka/config/server.properties
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值