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

安装准备

版本

Kafka版本:kafka_2.10-0.8.2.0

Zookeeper版本:3.4.6

Zookeeper 集群:hadoop104,hadoop107,hadoop108

Zookeeper集群的搭建参见:在CentOS上安装ZooKeeper集群

物理环境

安装两台物理机:

192.168.40.104  hadoop104(运行3个Broker)

192.148.40.105  hadoop105(运行2个Broker)

该集群的创建主要分为三步,单节点单Broker,单节点多Broker,多节点多Broker

单节点单Broker

本节以hadoop104上创建一个Broker为例

下载kafka

下载路径:http://kafka.apache.org/downloads.html

[html] view plaincopyprint?

 

  1. #tar -xvf kafka_2.10-0.8.2.0.tgz
  2. # cd kafka_2.10-0.8.2.0

配置

修改config/server.properties

[html] view plaincopyprint?

 

  1. broker.id=1
  2. port=9092
  3. host.name=hadoop104
  4. socket.send.buffer.bytes=1048576
  5. socket.receive.buffer.bytes=1048576
  6. socket.request.max.bytes=104857600
  7. log.dir=./kafka1-logs
  8. num.partitions=10
  9. zookeeper.connect=hadoop107:2181,hadoop104:2181,hadoop108:2181

启动Kafka服务

[html] view plaincopyprint?

 

  1. #bin/kafka-server-start.sh config/server.properties

创建Topic

[html] view plaincopyprint?

 

  1. #bin/kafka-topics.sh --create --zookeeper hadoop107:2181,hadoop104:2181,hadoop108:2181 --replication-factor 1 --partitions 1 --topic test

查看Topic

[html] view plaincopyprint?

 

  1. #bin/kafka-topics.sh --list --zookeeper hadoop107:2181,hadoop104:2181,hadoop108:2181

输出:

producer发送消息

[html] view plaincopyprint?

 

  1. #bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test

consumer接收消息

[html] view plaincopyprint?

 

  1. #bin/kafka-console-consumer.sh --zookeeper hadoop107:2181,hadoop104:2181,hadoop108:2181 --topic test --from-beginning

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

# /bin/kafka-console-consumer.sh --zookeeper  hadoop107:2181,hadoop104:2181,hadoop108:2181  --topic test

单节点多个Broker

配置

将上个章节中的文件夹再复制两份分别为kafka_2,kafka_3

[html] view plaincopyprint?

 

  1. #cp -r kafka_2.10-0.8.2.0 kafka_2
  2. #cp -r kafka_2.10-0.8.2.0 kafka_3

分别修改kafka_2/config/server.properties以及kafka_3/config/server.properties 文件中的broker.id,以及port属性,确保唯一性

[html] view plaincopyprint?

 

  1. kafka_2/config/server.properties
  2. broker.id=2
  3. port=9093
  4. kafka_3/config/server.properties
  5. broker.id=3
  6. port=9094

启动

启动另外两个Broker

[html] view plaincopyprint?

 

  1. #cd kafka_2
  2. # bin/kafka-server-start.sh config/server.properties &
  3. #cd ../kafka_3
  4. # bin/kafka-server-start.sh config/server.properties &

创建一个replication factor为3的topic

[html] view plaincopyprint?

 

  1. #bin/kafka-topics.sh --create --zookeeper hadoop107:2181,hadoop104:2181,hadoop108:2181 --replication-factor 3 --partitions 1 --topic my-replicated-topic

查看Topic的状态

[html] view plaincopyprint?

 

  1. bin/kafka-topics.sh --describe --zookeeper  hadoop107:2181,hadoop104:2181,hadoop108:2181  --topic my-replicated-topic

从上面的内容可以看出,该topic包含1个part,replicationfactor为3,且Node3 是leador
解释如下:
  • "leader" is the node responsible for all reads and writes for the given partition. Each node will be the leader for a randomly selected portion of the partitions.
  • "replicas" is the list of nodes that replicate the log for this partition regardless of whether they are the leader or even if they are currently alive.
  • "isr" is the set of "in-sync" replicas. This is the subset of the replicas list that is currently alive and caught-up to the leader.

 
再来看一下之前创建的test topic, 从下图可以看出没有进行replication
 

多个节点的多个Broker

 
在hadoop105上分别把下载的文件解压缩到kafka_4,kafka_5两个文件夹中,再将hadoop104上的server.properties配置文件拷贝到这连个文件夹中

[html] view plaincopyprint?

 

  1. #scp -r config/ root@hadoop105:/root/hadoop/kafka_4/
  2. #scp -r config/ root@hadoop105:/root/hadoop/kafka_5/

配置

并分别修改内容如下:
[html] view plaincopyprint?

 

  1. kafka_4
  2. brokerid=4
  3. port=9095
  4. host.name=hadoop105
  5. kafka_5
  6. brokerid=5
  7. port=9096
  8. host.name=hadoop105

启动服务

[html] view plaincopyprint?

 

  1. #cd kafka_4
  2. # bin/kafka-server-start.sh config/server.properties &
  3. #cd ../kafka_5
  4. # bin/kafka-server-start.sh config/server.properties &
 
到目前为止,两台物理机上的5个Broker已经启动完毕

总结

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

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

转:http://www.centoscn.com/CentosServer/cluster/2015/0312/4863.html

Centos安装Kafka集群相关推荐

  1. 备份k8s_树莓派k8s集群安装kafka集群及监控

    安装准备 树莓派k8s集群 root@pi4-master01:~# kubectl get nodes -o wideNAME STATUS ROLES AGE VERSION INTERNAL-I ...

  2. 【kafka专栏】使用shell脚本快速安装kafka集群(含视频)

    我们本节来正式安装kafka集群,安装kafka集群主要的方式有两种:一种是纯手动安装,一种是使用自动化shell脚本安装.纯手动安装的方式需要一台服务器.一台服务器的去操作,在服务器较多的情况下工作 ...

  3. [docker] docker-compose安装kafka集群

    前言 之前有介绍docker-compose的网络模块和使用docker-compose安装zookeeper集群.([docker] docker-compose安装zookeeper集群) 在本章 ...

  4. Centos安装FastDFS集群文件系统

    简介 FastDFS是一个开源的轻量级分布式文件系统.它解决了大数据量存储和负载均衡等问题.特别适合以中小文件(建议范围:4KB < file_size <500MB)为载体的在线服务,如 ...

  5. CentOS 搭建Kafka集群

            目录 1.Kafka下载 2.安装 Zookeeper 3.安装 Kafka 4.spring boot 整合Kafka 5.使用 kraft 注册中心 1.Kafka下载 进行 Ka ...

  6. docker 安装Kafka集群

    文章目录 前言 一.安装Zookeeper.Kafka 二.启动 1.启动Zookeeper 2.启动Kafka 3.搭建Kafka集群 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工 ...

  7. docker swam 安装kafka集群以及kfakamanger

    前面搭建过单节点zookeeper的kafka集群,但是操作起来很不方便,因此这次试着搭建一个带有管理界面kafka-manager的kafka集群. 1.创建docker-compose的yml文件 ...

  8. 字节跳动面试真题:安装kafka集群

    正文 在实际的工作项目中, 缓存成为高并发.高性能架构的关键组件 ,那么Redis为什么可以作为缓存使用呢?首先可以作为缓存的两个主要特征: 在分层系统中处于内存/CPU具有访问性能良好, 缓存数据饱 ...

  9. 多易教育KAFKA实战(1)-KAFKA集群安装和shell客户端

    注意kafka的安装需要依赖Zookeeper集群 ,所以安装kafka之前先安装zookeeper! zookeeper安装 上传安装包 解压 tar -zxvf zookeeper-3.4.6.t ...

  10. kafka集群操作指南

    kafka集群操作指南 @(KAFKA)[kafka, 大数据] kafka集群操作指南 一单机版安装 二集群安装 三集群启停操作 四topic相关的操作 五某个broker挂掉本机器可重启 六某个b ...

最新文章

  1. python主函数的作用_python中main函数的用法
  2. linux下uvc协议访问usb摄像头,Ubuntu调用USB摄像头
  3. Codeforces Global Round 3 A. Another One Bites The Dust
  4. CTS(23) --- Android 8.1GMS注意事项
  5. linux c语言变量地址类型,C语言基础知识:访问内存地址的方法
  6. mysql创建数据库命令
  7. 如何解决“请考虑使用 app.config 将程序集“XXXXXXXX”从版本XXXX重新映射到版本XXXX”的问题
  8. Factory Method 抽象工厂模式(创建型)
  9. 贴片铝电容识别及型号_贴片铝电解电容封装尺寸定义.pdf
  10. 360卸载方法(最全面)
  11. python输出边长为n的正方形_将一个正方形分成N个较小的正方形并求N个较小正方形的中心坐标...
  12. PCL 自定义点云类型PointT
  13. STL学习之路(一)
  14. 序列标注NER、POS、Chunking、SRL
  15. 慧荣SM2269XT量产开卡成功,附SM2269XT量产工具、开卡软件
  16. ffmpeg 源码不可以下载
  17. nodejs express搭建服务器(爬虫知乎精华帖,个人学习用)一 爬取所有话题类型
  18. 使用云服务安装Hyperledger Fabric 全过程
  19. 考试提交答案后台代码
  20. 程序员技术开发委托合同模板 私活模板

热门文章

  1. loj 1308(点双连通分量应用)
  2. 随机数产生转换-根据(1,5)随机数生成器,生成(1,7)之内的随机数
  3. 你家的APS系统有这些功能吗?排程系统功能盘点
  4. 解决Secure Shell Client(SSH)客户端中文乱码的方法
  5. SQL简单基础(1)
  6. 2017年2月24号课堂笔记
  7. 兄弟连教育分享:用CSS实现鼠标悬停提示的方法
  8. Oracle 10G R2 让表常驻内存
  9. web页面直接跳转至其他页面
  10. GDI+中发生一般性错误 Winform Image.Save(mstream, ImageFormat.Png)引发