一脸懵逼学习KafKa集群的安装搭建--(一种高吞吐量的分布式发布订阅消息系统)

1:KafKa的官方网址:http://kafka.apache.org/

开发流程图,如:

2:KafKa的基础知识:

2.1:kafka是一个分布式的消息缓存系统
2.2:kafka集群中的服务器都叫做broker
2.3:kafka有两类客户端,一类叫producer(消息生产者),一类叫做consumer(消息消费者),客户端和broker服务器之间采用tcp协议连接
2.4:kafka中不同业务系统的消息可以通过topic进行区分,而且每一个消息topic都会被分区,以分担消息读写的负载
2.5:每一个分区都可以有多个副本,以防止数据的丢失
2.6:某一个分区中的数据如果需要更新,都必须通过该分区所有副本中的leader来更新
2.7:消费者可以分组,比如有两个消费者组A和B,共同消费一个topic:order_info,A和B所消费的消息不会重复
  比如 order_info 中有100个消息,每个消息有一个id,编号从0-99,那么,如果A组消费0-49号,B组就消费50-99号
2.8:消费者在具体消费某个topic中的消息时,可以指定起始偏移量

 3:KafKa集群的安装搭建,注意区分单节点KafKa集群的搭建。

  3.1:kafka集群安装,第一步上传kafka_2.10-0.8.1.1.tgz到虚拟机上面,过程省略,然后进行解压缩操作:

  3.2:修改kafka配置文件,修改server.properties

修改如下所示,具体情况可以根据手册修改,详细修改可以参考Kafka的文档:

 

 使用自己部署的Zookeeper集群,修改如下所示:

可以直接搜索:/zookeeper.connect找到所要修改的内容:

 将配置好的Kafka复制到另外两个节点上面:

[root@master hadoop]# scp -r kafka_2.10-0.8.1.1/ slaver1:/home/hadoop/

[root@master hadoop]# scp -r kafka_2.10-0.8.1.1/ slaver2:/home/hadoop/

 

 然后修改一下另外两台的broker.id=2和broker.id=3:

 

   3.3:将zookeeper集群启动:

[root@master hadoop]# cd /home/hadoop/zookeeper-3.4.5/bin/

[root@master bin]# ./zkServer.sh start

[root@slaver2 bin]#  ./zkServer.sh status

 

   3.4:在每一台节点上启动broker:

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

Unrecognized VM option 'UseCompressedOops'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

启动的时候报错了,问题的根本是UseCompressedOops是jdk8的,而我的jdk是7,所以解决一下问题:

原因是jdk的版本不匹配,需要修改一下配置文件
修改文件:
  去掉这个配置
  -XX:+UseCompressedOops

 

进去以后,搜索一下比较快:/UseCompressedOops,然后看到如下,删除如此配置:

[root@master bin]# vim kafka-run-class.sh

其他两个节点的都按照如此删除掉即可:

修改好以后开始跑:

在每一台节点上启动broker
bin/kafka-server-start.sh config/server.properties

然后按照如此将其他两个节点都启动起来,然后复制xshell的连接看一下jps进程启动情况:

 三个都启动起来,可以看一下,broker 1,broker 2,broker 3都启动起来了:

可以使用复制的xshell窗口查看jps进程启动情况:

   3.5:在kafka集群中创建一个topic:

[root@master kafka_2.10-0.8.1.1]# bin/kafka-topics.sh --create --zookeeper master:2181 --replication-factor 3 --partitions 1 --topic order

 

可以查看一下自己创建的topic:

 [root@master kafka_2.10-0.8.1.1]# bin/kafka-topics.sh --list --zookeeper master:2181

可以创建多个多个topic,也可以查看一下自己创建的topic:

   3.6:用一个producer向某一个topic中写入消息,生产者产生消息,消费者消费消息,如下生产者可以生产:

如下先启动一下生产者,先不生产消息,然后一个消费者,看看是否有输出,然后再生产消息,再去消费者看看消费消息:

#生产者
[root@master kafka_2.10-0.8.1.1]# bin/kafka-console-producer.sh --broker-list master:9092 --topic order
#消费者
[root@master kafka_2.10-0.8.1.1]# bin/kafka-console-consumer.sh --zookeeper master:2181 --from-beginning --topic order

上面是生产者:

下面是消费者:

  3.7:查看一个topic的分区及副本状态信息:

自己可以找任意一个xshell复制连接进程查看:

[root@slaver1 kafka_2.10-0.8.1.1]# bin/kafka-topics.sh --describe --zookeeper master:2181 --topic order

 4:kafka运行在后台如何操作,如下所示:

  1>/dev/null:代表标准输入到这个目录;

  2>&1:代表标准输出也到这个目录下面;

  &:代表这个是后台运行;

[root@master kafka_2.10-0.8.1.1]# bin/kafka-server-start.sh config/server.properties 1>/dev/null 2>&1 &

 

时间: 2024-10-28 18:05:54

一脸懵逼学习KafKa集群的安装搭建--(一种高吞吐量的分布式发布订阅消息系统)的相关文章

Apache Kafka是分布式发布-订阅消息系统

转自: http://www.infoq.com/cn/articles/apache-kafka?utm_source=infoq&utm_medium=popular_links_homepage 简介 Apache Kafka是分布式发布-订阅消息系统.它最初由LinkedIn公司开发,之后成为Apache项目的一部分.Kafka是一种快速.可扩展的.设计内在就是分布式的,分区的和可复制的提交日志服务. Apache Kafka与传统消息系统相比,有以下不同: 它被设计为一个分布式系统,易

Kafka(分布式发布订阅消息系统)

http://kafka.apache.org/ 目前越来越多的开源分布式处理系统如Apache Storm.Spark都支持与Kafka集成. 使用场景:设想这样一个情景:想分析用户在网站上的的浏览行为.这些浏览日志,存数据库浪费,直接存硬盘又怕到时候操作效率低. 此时,消息系统就是一个选择. 1.组件 Broker ['brəʊkə] n.经纪人 Kafka集群包含一个或多个服务器,这种服务器被称为broker.Topic 每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic

Kafka集群磁盘使用率瞬超85%,幕后元凶竟是它?

Kafka是一种快速.可扩展的,设计内在就是分布式的.分区的和可复制的提交日志服务.作为一种高吞吐量的分布式发布订阅消息系统,Kafka被广泛的应用于海量日志的收集.存储.网上有大量Kafka架构.原理介绍的文章,本文不再重复赘述,重点谈谈Consumer Offset默认保存机制.   Topic作为一类消息的逻辑集合,Kafka集群为其维护了一个分区的日志,其结构如图:     Topic每个分区是一个有序的.信息不断追加的序列.分区中的每个消息都分配了一个连续的ID号,称为偏移量(offs

Kafka详解二、如何配置Kafka集群

Kafka集群配置比较简单,为了更好的让大家理解,在这里要分别介绍下面三种配置 单节点:一个broker的集群 单节点:多个broker的集群 多节点:多broker集群 一.单节点单broker实例的配置 1. 首先启动zookeeper服务      Kafka本身提供了启动zookeeper的脚本(在kafka/bin/目录下)和zookeeper配置文件(在kafka/config/目录下),首先进入Kafka的主目录(可通过 whereis kafka命令查找到):      [roo

扩展-kafka集群 报错 在线等

问题描述 kafka集群 报错 在线等 WARN [Controller-1-to-broker-2-send-thread], Controller 1's connection to broker Node(2, mine-28, 9092) was unsuccessful (kafka.controller.RequestSendThread) java.io.IOException: Connection to Node(2, mine-28, 9092) failed at kafk

kafka集群部署

前提:kafka集群依赖于zk集群,没有zk集群环境的请先参考 http://www.cnblogs.com/yjmyzz/p/4587663.html . 假设搭建3个节点的kafka集群,下面是步骤:  一.下载 http://kafka.apache.org/downloads ,如果只是安装,直接down kafka_2.12-0.11.0.0.tgz 即可. 二.解压 假设$KAFKA_HOME为解压后的根目录,将tag包解压到该目录下(3台机器上都解压) 三.修改$KAFKA_HOM

如何为Kafka集群选择合适的Partitions数量

如何为Kafka集群选择合适的Partitions数量 Hadoop技术博文 这是许多kafka使用者经常会问到的一个问题.本文的目的是介绍与本问题相关的一些重要决策因素,并提供一些简单的计算公式. 文章目录 1 越多的分区可以提供更高的吞吐量 2 越多的分区需要打开更多地文件句柄 3 更多地分区会导致更高的不可用性 4 越多的分区可能增加端对端的延迟 5 越多的partition意味着需要客户端需要更多的内存 6 总结   越多的分区可以提供更高的吞吐量 首先我们需要明白以下事实:在kafka

部署kafka集群到服务器

前面文章写道的是伪集群的部署,是在同一台服务器部署了四个kafka broker 实际上没有任何的高HA作用.现在来部署一个真正的kafka集群 三台服务器,分别是106 107 108-现在已经部署的lafka在106上 -已经在106上启动了kafka服自带的zookeeper 编辑106服务器的kafka server.properties conf/server.properties 修改broker.id=0 修改listeners=PLAINTEXT://0.0.0.0:9092 修

LinkedIn开源Cruise Control:一个Kafka集群自动化运维新利器

Kafka近年来日渐流行,LinkedIn的1800台Kafka服务器每天处理2万亿个消息.虽说Kafka运行得十分稳定,但要大规模运行Kafka,在运维方面仍然面临巨大的挑战.每天都会有broker崩溃,导致集群工作负载不均衡.SRE团队需要花费大量的时间和精力来重分配分区,以便让集群重新恢复均衡. 自动化因此变得十分重要,这也就是为什么我们要开发Cruise Control:持续监控Kafka集群,自动调整分配给服务器的资源,达到预期的性能目标.用户设定目标,Cruise Control对集