Kafka学习之路 (四)Kafka的安装

zookeeper1:192.168.1.11
zookeeper2:192.168.1.12
zookeeper3:192.168.1.13

kafka1:192.168.1.14
kafka2:192.168.1.15
kafka3:192.168.1.16
kafka3:192.168.1.17

kafka-manager:192.168.1.18

一、下载

下载地址:

http://kafka.apache.org/downloads.html

http://mirrors.hust.edu.cn/apache/

http://zookeeper.apache.org/releases.html

已经安装好java-1.8

[[email protected] ~]# yum install java-1.8.0

二、Zookeeper安装

此处使用版本zookeeper-3.4.10.tar.gz

2.1 上传解压缩

# 下载 ZooKeeper
[[email protected] ~]# wget https://mirrors.aliyun.com/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz

# 解压文件
[[email protected] ~]# tar -zxf zookeeper-3.4.10.tar.gz -C /opt/
[[email protected] ~]# cd /opt/
[[email protected] opt]#  ln -s zookeeper-3.4.10 zookeeper
[[email protected] opt]#  cd zookeeper
[[email protected] zookeeper]# cp ./conf/zoo_sample.cfg ./conf/zoo.cfg

2.2 修改配置文件

zookeeper1,zookeeper2,zookeeper3都是同样的配置

[[email protected] zookeeper]# vim ./conf/zoo.cfg
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/opt/push/kafka-test/zookeeper/data
dataLogDir=/opt/push/kafka-test/zookeeper/logs
clientPort=2181
server.1=192.168.1.11:2888:3888
server.2=192.168.1.12:2888:3888
server.3=192.168.1.13:2888:3888

[[email protected] zookeeper]# mkdir data logs
[[email protected] zookeeper]# echo ‘1‘ > /opt/zookeeper/data/myid

# 其它两台此处需要修改
[[email protected] zookeeper]# echo ‘2‘ > /opt/zookeeper/data/myid

[[email protected] zookeeper]# echo ‘3‘ > /opt/zookeeper/data/myid

三、Kafka安装

此处使用版本为kafka_2.11-1.1.0.tgz

3.1 上传解压缩

# 下载 Kafka
[[email protected] ~]# wget https://archive.apache.org/dist/kafka/1.1.0/kafka_2.11-1.1.0.tgz

# 解压tar文件
[[email protected] ~]# tar -zxf kafka_2.11-1.1.0.tgz.gz -C /opt/
[[email protected] ~]# cd /opt/
[email protected] opt]# ln -s kafka_2.11-1.1.0 kafka
[email protected] opt]# cd kafka

3.2 修改配置文件

进入kafka的安装配置目录

[[email protected] kafka]# cp config/server.properties  config/server.properties.bak    # 备份kafka默认配置文件

主要关注:server.properties 这个文件即可,我们可以发现在目录下:

有很多文件,这里可以发现有Zookeeper文件,我们可以根据Kafka内带的zk集群来启动,但是建议使用独立的zk集群

server.properties(broker.id和host.name每个节点都不相同)

//当前机器在集群中的唯一标识,和zookeeper的myid性质一样
broker.id=0
//Socket服务器侦听的地址,当前kafka对外提供服务的端口默认是9092
listeners = PLAINTEXT://your.host.name:9092
//代理将向生产者和消费者做广告的主机名和端口
advertised.listeners=PLAINTEXT://your.host.name:9092
//这个是borker进行网络处理的线程数
num.network.threads=3
//这个是borker进行I/O处理的线程数
num.io.threads=8
//发送缓冲区buffer大小,数据不是一下子就发送的,先回存储到缓冲区了到达一定的大小后在发送,能提高性能
socket.send.buffer.bytes=102400
//kafka接收缓冲区大小,当数据到达一定大小后在序列化到磁盘
socket.receive.buffer.bytes=102400
//这个参数是向kafka请求消息或者向kafka发送消息的请请求的最大数,这个值不能超过java的堆栈大小
socket.request.max.bytes=104857600
//消息存放的目录,这个目录可以配置为“,”逗号分割的表达式,上面的num.io.threads要大于这个目录的个数这个目录,
//如果配置多个目录,新创建的topic他把消息持久化的地方是,当前以逗号分割的目录中,那个分区数最少就放那一个
log.dirs=/home/hadoop/log/kafka-logs
//默认的分区数,一个topic默认1个分区数
num.partitions=1
//每个数据目录用来日志恢复的线程数目
num.recovery.threads.per.data.dir=1
//默认消息的最大持久化时间,168小时,7天
log.retention.hours=168
//这个参数是:因为kafka的消息是以追加的形式落地到文件,当超过这个值的时候,kafka会新起一个文件
log.segment.bytes=1073741824
//每隔300000毫秒去检查上面配置的log失效时间
log.retention.check.interval.ms=300000
//设置zookeeper的连接端口
zookeeper.connect=localhost:2181
//设置zookeeper的连接超时时间
zookeeper.connection.timeout.ms=6000

kafka1:

[[email protected] kafka]# vim config/server.properties
broker.id=1             # 当前机器在集群中的唯一标识
listeners=PLAINTEXT://192.168.1.14:9092        # 监听端口
advertised.listeners=PLAINTEXT://192.168.1.14:9092  # 提供给生产者,消费者的端口号。可以不设置则使用listeners的值
zookeeper.connect=192.168.1.11:2181,192.168.1.12:2181,192.168.1.13:2181/kafka            # 连接zookeeper

kafka2:

[[email protected] kafka]# vim config/server.properties
broker.id=2             # 当前机器在集群中的唯一标识
listeners=PLAINTEXT://192.168.1.15:9092        # 监听端口
advertised.listeners=PLAINTEXT://192.168.1.15:9092  # 提供给生产者,消费者的端口号。可以不设置则使用listeners的值
zookeeper.connect=192.168.1.11:2181,192.168.1.12:2181,192.168.1.13:2181/kafka            # 连接zookeeper

kafka3:

[[email protected] kafka]# vim config/server.properties
broker.id=3             # 当前机器在集群中的唯一标识
listeners=PLAINTEXT://192.168.1.16:9092        # 监听端口
advertised.listeners=PLAINTEXT://192.168.1.16:9092  # 提供给生产者,消费者的端口号。可以不设置则使用listeners的值
zookeeper.connect=192.168.1.11:2181,192.168.1.12:2181,192.168.1.13:2181/kafka            # 连接zookeeper

kafka4:

[[email protected] kafka]# vim config/server.properties
broker.id=4             # 当前机器在集群中的唯一标识
listeners=PLAINTEXT://192.168.1.17:9092        # 监听端口
advertised.listeners=PLAINTEXT://192.168.1.17:9092  # 提供给生产者,消费者的端口号。可以不设置则使用listeners的值
zookeeper.connect=192.168.1.11:2181,192.168.1.12:2181,192.168.1.13:2181/kafka            # 连接zookeeper

四、启动

3.1 首先启动zookeeper集群

所有zookeeper节点都需要执行

[[email protected] kafka]# ./bin/zkServer.sh start

3.2 启动Kafka集群服务

所有kafka节点都需要执行

[[email protected] kafka]# ./bin/kafka-server-start.sh config/server.properties
或者:
[[email protected] kafka]# ./bin/kafka-server-start.sh -daemon config/server.properties  # 后台启动

3.3 创建的topic

[[email protected] kafka]# bin/kafka-topics.sh --create --zookeeper kafka1:2181 --replication-factor 3 --partitions 3 --topic topic2

3.4 查看topic副本信息

[[email protected] kafka]# ./bin/kafka-topics.sh --describe --zookeeper kafka1:2181 --topic topic2

3.5 查看已经创建的topic信息

[[email protected] kafka]# ./bin/kafka-topics.sh --list --zookeeper kafka1:2181

3.6 生产者发送消息

kafka1显示接收到消息

[[email protected] kafka]# ./bin/kafka-console-producer.sh --broker-list kafka1:9092 --topic2

3.7 消费者消费消息

在kafka2上消费消息

[[email protected] kafka]# ./bin/kafka-console-consumer.sh --zookeeper kafka1:2181 --from-beginning --topic topic2

五、kafka-manager安装

官网:https://github.com/yahoo/kafka-manager

[[email protected] ~]# git clone https://github.com/yahoo/kafka-manager.git
[[email protected] ~]# cd kafka-manager

# 部署
[[email protected] kafka-manager]# ./sbt clean dist

解压缩生成的zip文件

# 启动
[[email protected] kafka-manager]# bin/kafka-manager
[[email protected] kafka-manager]# bin/kafka-manager -Dconfig.file=/path/to/application.conf -Dhttp.port=8080

原文地址:http://blog.51cto.com/13525470/2315458

时间: 2024-10-08 00:33:12

Kafka学习之路 (四)Kafka的安装的相关文章

kafka学习之路

https://www.cnblogs.com/qingyunzong/p/9004509.html 目录 一.简介 1.1 概述 1.2 消息系统介绍 1.3 点对点消息传递模式 1.4 发布-订阅消息传递模式 二.Kafka的优点 2.1 解耦 2.2 冗余(副本) 2.3 扩展性 2.4 灵活性&峰值处理能力 2.5 可恢复性 2.6 顺序保证 2.7 缓冲 2.8 异步通信 三.常用Message Queue对比 3.1 RabbitMQ 3.2 Redis 3.3 ZeroMQ 3.4

kafka学习之路(二)——提高

kafka学习之路(二)--提高 消息发送流程 因为Kafka内在就是分布式的,一个Kafka集群通常包括多个代理.为了均衡负载,将话题分成多个分区,每个代理存储一或多个分区.多个生产者和消费者能够同时生产和获取消息.     过程: 1.Producer根据指定的partition方法(round-robin.hash等),将消息发布到指定topic的partition里面 2.kafka集群接收到Producer发过来的消息后,将其持久化到硬盘,并保留消息指定时长(可配置),而不关注消息是否

学习之路四十一丶简论重构

四月份的最后一天,写点心得,记录一下. 这个月一直忙着开发一个基于Win32 API的程序,大量运用了句柄等很多API的知识. 尤其随着代码量越来越大,逻辑越来越复杂,代码的清晰,健壮,扩展性成了一个需要重视的问题,也就是要适时的重构了. 一丶重构的时机 上个星期在修改一块重大逻辑的时候,需要修改很多代码,当时我犯了一个错误,一开始想了一个思路,但一上来没写多少就开始想着重构代码,目的是使其代码清晰以及可扩展. 可是随着时间的流失,不仅没有重构好,而且该改的逻辑也没有改好,我很郁闷,为什么会这样

kafka 学习之路 第一篇

kafka官网:http://kafka.apache.org/ 下载地址:http://mirrors.hust.edu.cn/apache/kafka/0.10.2.0/kafka_2.12-0.10.2.0.tgz 未完待续

Redis——学习之路四(初识主从配置)

首先我们配置一台master服务器,两台slave服务器.master服务器配置就是默认配置 端口为6379,添加就一个密码CeshiPassword,然后启动master服务器. 两台slave服务器配置如下: 1.先找到配置redis.windows-service.config文件修改port 6379 为port 6380 2.然后配置master服务器地址:slaveof 127.0.0.1 6379,然后主服务有密码还需要配置密码 masterauth CeshiPassword(本

Kafka学习--spring boot 整合kafka

一.启动kafka 启动kafka之前一定要启动zookeeper,因为要使用kafka必须要使用zookeeper. windows环境下启动,直接使用kafka自带的zookeeper: E:\kafka_2.12-2.4.0\bin\windows  zookeeper-server-start.bat ..\..\config\zookeeper.properties 接下来启动kafka E:\kafka_2.12-2.4.0\bin\windows  kafka-server-sta

Kafka学习之路 (二)Kafka的架构

一.Kafka的集群架构 如上图所示,一个典型的Kafka集群中包含若干Producer(可以是web前端产生的Page View,或者是服务器日志,系统CPU.Memory等),若干broker(Kafka支持水平扩展,一般broker数量越多,集群吞吐率越高),若干Consumer Group,以及一个Zookeeper集群.Kafka通过Zookeeper管理集群配置,选举leader,以及在Consumer Group发生变化时进行rebalance.Producer使用push模式将消

Kafka学习之路 (三)Kafka的高可用

一.高可用的由来 1.1 为何需要Replication 在Kafka在0.8以前的版本中,是没有Replication的,一旦某一个Broker宕机,则其上所有的Partition数据都不可被消费,这与Kafka数据持久性及Delivery Guarantee的设计目标相悖.同时Producer都不能再将数据存于这些Partition中. 如果Producer使用同步模式则Producer会在尝试重新发送message.send.max.retries(默认值为3)次后抛出Exception,

kafka学习之路(三)——高级

设计原理 kafka的设计初衷是希望作为一个统一的信息收集平台,能够实时的收集反馈信息,并需要能够支撑较大的数据量,且具备良好的容错能力. 持久性 kafka使用文件存储消息,这就直接决定kafka在性能上严重依赖文件系统的本身特性.且无论任何OS下,对文件系统本身的优化几乎没有可能.文件缓存/直接内存映射等是常用的手段.因为kafka是对日志文件进行append操作,因此磁盘检索的开支是较小的;同时为了减少磁盘写入的次数,broker会将消息暂时buffer起来,当消息的个数(或尺寸)达到一定