kafka命令

阿里云构建Kafka单机集群环境

删除回忆录丶 提交于 2020-02-29 13:19:55
简介 在一台ECS阿里云服务器上构建Kafa单个集群环境需要如下的几个步骤: 服务器环境 JDK的安装 ZooKeeper的安装 Kafka的安装 1. 服务器环境 CPU: 1核 内存: 2048 MB (I/O优化) 1Mbps 操作系统 ubuntu14.04 64位 感觉服务器性能还是很好的,当然不是给阿里打广告,汗。 随便向kafka里面发了点数据,性能图如下所示: 2. 安装JDK 想要跑 Java 程序,就必须安装JDK。JDK版本,本人用的是JDK1.7。 基本操作如下: 从JDK官网获取JDK的tar.gz包; 将tar包上传到服务器上的opt/JDK下面; 解压tar包; 更改etc/profile文件,将下列信息写在后面;(ps mac环境需要sudo su 以root权限进行操作) cd / cd etc vim profile 然后进行修改 添加如下部分: export JAVA_HOME=/opt/JDK/jdk1.7.0_79 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 1 2 3 4 5 6 7 1 2 3 4 5 6 7 改好后的profile文件信息如下: # /etc/profile:

解决默认的__consumer_offsets这个topic默认副本数为1而存在的单点故障问题

强颜欢笑 提交于 2020-02-29 12:40:19
解决kafka集群由于默认的__consumer_offsets这个topic的默认的副本数为1而存在的单点故障问题 抛出问题: __consumer_offsets这个topic是由kafka自动创建的,默认50个,但是都存在一台kafka服务器上,这是不是就存在很明显的单点故障? 经测试,如果将存储consumer_offsets的这台机器kill掉,所有的消费者都停止消费了。请问这个问题是怎么解决的呢? 原因分析: 由于__consumer_offsets这个用于存储offset的分区是由kafka服务器默认自动创建的,那么它在创建该分区的时候,分区数和副本数的依据是什么? 分区数是固定的50,这个没什么可怀疑的,副本数呢?应该是一个默认值1,依据是,如果我们没有在server.properties文件中指定topic分区的副本数的话,它的默认值就是1。 __consumer_offsets是一个非常重要的topic,我们怎么能允许它只有一个副本呢?这样就存在单点故障,也就是如果该分区所在的集群宕机了的话, 我们的消费者就无法正常消费数据了。 我在笔记本上搭建了kafka集群,共3个Broker,来解决这个问题。下面是一些记录。 说明:如果你的__consumer_offsets这个topic已经被创建了,而且只存在一台broker上

Kafka原理及Kafka群集部署

五迷三道 提交于 2020-02-29 00:48:27
博文大纲: 一、Kafka概述 1)消息队列 2)为什么要使用消息队列? 3)什么是Kafka? 4)Kafka的特性 5)Kafka架构 6)Topic和Partition的区别 7)kafka流程图 8)Kafka的文件存储机制 9)数据的可靠性和持久性保证 10)leader选举 二、部署单机Kafka 1)部署Kafka 2)测试Kafka 三、部署Kafka群集 1)环境准备 2)部署zookeeper群集 3)部署Kafka群集 一、Kafka概述 1)消息队列 1)点对点模式 (一对一,消费者主动拉取数据,消息收到后消息清除) 点对点模型通常是一个基于拉取或者轮询的消息传送模型,这种模型从队列中请求信息,而不是将消息推送到客户端。这个模型的特点是发送到队列的消息被一个且只有一个接收者接收处理,即使有多个消息监听者也是如此; 2)发布/订阅模式 (一对多,数据生产后,推送给所有订阅者) 发布订阅模型则是一个基于推送的消息传送模型。发布订阅模型可以有多种不同的订阅者,临时订阅者只在主动监听主题时才接收消息,而持久订阅者则监听主题的所有消息,即使当前订阅者不可用,处于离线状态。 2)为什么要使用消息队列? 1)解耦 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。 2)冗余 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险

5分钟带你体验一把 Kafka

余生颓废 提交于 2020-02-28 16:10:10
说在文章前面的话: 前置条件:你的电脑已经安装 Docker 主要内容: 使用 Docker 安装 使用命令行测试消息队列的功能 zookeeper和kafka可视化管理工具 Java 程序中简单使用Kafka 使用 Docker 安装搭建Kafka环境 单机版 下面使用的单机版的Kafka 来作为演示,推荐先搭建单机版的Kafka来学习。 以下使用 Docker 搭建Kafka基本环境来自开源项目:github.com/simplesteph… 。当然,你也可以按照官方提供的来:github.com/wurstmeiste… 。 新建一个名为 zk-single-kafka-single.yml 的文件,文件内容如下: version: '2.1' services: zoo1: image: zookeeper:3.4.9 hostname: zoo1 ports: - "2181:2181" environment: ZOO_MY_ID: 1 ZOO_PORT: 2181 ZOO_SERVERS: server.1=zoo1:2888:3888 volumes: - ./zk-single-kafka-single/zoo1/data:/data - ./zk-single-kafka-single/zoo1/datalog:/datalog kafka1: image:

Kafka设计解析(四):Kafka Consumer解析

送分小仙女□ 提交于 2020-02-28 16:00:22
High Level Consumer 很多时候,客户程序只是希望从Kafka读取数据,不太关心消息offset的处理。同时也希望提供一些语义,例如同一条消息只被某一个Consumer消费(单播)或被所有Consumer消费(广播)。因此,Kafka High Level Consumer提供了一个从Kafka消费数据的高层抽象,从而屏蔽掉其中的细节并提供丰富的语义。 Consumer Group High Level Consumer将从某个Partition读取的最后一条消息的offset存于ZooKeeper中( Kafka从0.8.2版本 开始同时支持将offset存于Zookeeper中与 将offset存于专用的Kafka Topic中 )。这个offset基于客户程序提供给Kafka的名字来保存,这个名字被称为Consumer Group。Consumer Group是整个Kafka集群全局的,而非某个Topic的。每一个High Level Consumer实例都属于一个Consumer Group,若不指定则属于默认的Group。ZooKeeper中Consumer相关节点如下图所示: 很多传统的Message Queue都会在消息被消费完后将消息删除,一方面避免重复消费,另一方面可以保证Queue的长度比较短,提高效率。而如上文所述

5分钟带你体验一把 Kafka

倾然丶 夕夏残阳落幕 提交于 2020-02-28 13:12:25
Guide哥答应大家的 Kafka系列的第2篇原创文章。为了保证内容实时更新,我将相关文章也发送到了Gihub上!地址 :https://github.com/Snailclimb/springboot-kafka 相关阅读: 入门篇!大白话带你认识 Kafka! 前置条件:你的电脑已经安装 Docker 主要内容: 使用 Docker 安装 使用命令行测试消息队列的功能 zookeeper和kafka可视化管理工具 Java 程序中简单使用Kafka 使用 Docker 安装搭建Kafka环境 单机版 下面使用的单机版的Kafka 来作为演示,推荐先搭建单机版的Kafka来学习。 以下使用 Docker 搭建Kafka基本环境来自开源项目: https://github.com/simplesteph/kafka-stack-docker-compose 。当然,你也可以按照官方提供的来: https://github.com/wurstmeister/kafka-docker/blob/master/docker-compose.yml 。 新建一个名为 zk-single-kafka-single.yml 的文件,文件内容如下: version: '2.1' services: zoo1: image: zookeeper:3.4.9 hostname: zoo1 ports

Kafka监控之KafkaOffsetMonitor和Kafka Manager

女生的网名这么多〃 提交于 2020-02-26 23:18:30
一. KafkaOffsetMonitor KafkaOffsetMonitor是Kafka的可视化管理与监控工具,可以为Kafka的稳定运维提供高效、可靠、稳定的保障。且程序以jar包的方式运行,部署较为方便。 官网下载jar包(https://github.com/quantifind/KafkaOffsetMonitor) 打开虚拟机并在/usr/local/cluster下创建kafka-offset-console文件夹 [root@cos100 cluster] # mkdir kafka-offset-console 进入kafka-offset-console目录,将下载的jar包上传到此目录下 创建启动脚本文件start.sh并授权,编辑文件添加以下内容 [root@cos100 kafka-offset-console] # touch start.sh [root@cos100 kafka-offset-console] # chmod +x start.sh #!/bin/bash java - cp KafkaOffsetMonitor - assembly - 0 . 4 . 6 - SNAPSHOT . jar \ com . quantifind . kafka . offsetapp . OffsetGetterWeb \ --

Kafka入门集群部署

[亡魂溺海] 提交于 2020-02-26 13:37:22
一、Kafka 概述 Kafka 是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于 大数据实时处理领域。 二、消息队列的两种模式 (1)点对点模式(一对一 ,消费者主动拉取数据,消息收到后消息清除) 消息生产者生产消息发送到Queue中,然后消息消费者从Queue中取出并且消费消息。 消息被消费以后,queue 中不再有存储,所以消息消费者不可能消费到已经被消费的消息。 Queue 支持存在多个消费者,但是对一个消息而言,只会有一个消费者可以消费。 (2)发布/订阅模式(一对多 ,消费者消费数据之后不会清除消息) 消息生产者(发布)将消息发布到 topic 中,同时有多个消息消费者(订阅)消费该消 息。和点对点方式不同,发布到 topic 的消息会被所有订阅者消费。 三、kafka下载和环境准备 kafaka下载地址: http://kafka.apache.org/downloads.html 选择自己需要对应的scala版本进行下载。 3.1 集群规划 准备三台虚拟机这三台虚拟机也完成了zookeeper的集群规划,没有完成的可以参考这一篇 Zookeeper集群部署 。 四、配置环境 4.1 解压安装包,并修改解压后的文件名称 tar - zxvf kafka_2 . 12 - 2.3 .0 . tgz mv kafka_2 . 12 -

Kakfa集群(2.11-0.10.1.0)滚动升级方案

…衆ロ難τιáo~ 提交于 2020-02-26 11:34:47
Kafka集群升级(2.11-0.10.1.0)升级(2.11-0.10.2.2) 官网升级说明: 一、系统环境 Zookeeper集群: 172.16.2.10 172.16.2.11 172.16.2.12 Kafka集群: 172.16.2.10 172.16.2.11 172.16.2.12 现Kafka版本: 2.11-0.10.1.0,安装目录:/usr/local/kafka 计划升级至版本:2.11-0.10.2.2,安装目录:/usr/local/kafka_2.11-0.10.2.2 二、创建测试topic 1.创建测试topic /usr/local/kafka/bin/kafka-topics.sh --zookeeper 172.16.2.10:2181,172.16.2.11:2181,172.16.2.12:2181 --create --replication-factor 3 --partitions 2 --topic first /usr/local/kafka/bin/kafka-topics.sh --zookeeper 172.16.2.10:2181,172.16.2.11:2181,172.16.2.12:2181 --create --replication-factor 2 --partitions 1 --topic

kafka partition(分区)与 group

萝らか妹 提交于 2020-02-23 13:38:46
转载,原文地址 https://www.cnblogs.com/liuwei6/p/6900686.html 一、 1、原理图 2、原理描述 一个topic 可以配置几个partition,produce发送的消息分发到不同的partition中,consumer接受数据的时候是按照group来接受,kafka确保每个partition只能同一个group中的同一个consumer消费,如果想要重复消费,那么需要其他的组来消费。 Zookeerper中保存这每个topic下的每个partition在每个group中消费的offset 新版kafka把这个offsert保存到了一个__consumer_offsert的topic下 这个__consumer_offsert 有50个分区,通过将group的id哈希值%50的值来确定要保存到那一个分区. 这样也是为了考虑到zookeeper不擅长大量读写的原因。 所以,如果要一个group用几个consumer来同时读取的话,需要多线程来读取,一个线程相当于一个consumer实例。当consumer的数量大于分区的数量的时候,有的consumer线程会读取不到数据。 假设一个topic test 被groupA消费了,现在启动另外一个新的groupB来消费test,默认test-groupB的offset不是0,而是没有新建立