kafka安装

下载

wget http://apache.gree.com/apache/kafka/1.0.2/kafka_2.11-1.0.2.tgz

tar -zxvf kafka_2.11-1.0.2.tgz -C /usr/local/

mv /usr/local/kafka_2.11-1.0.2 /usr/local/kafka

 

cd /usr/local/kafka/config/

vi server.properties

broker.id=0                   这里的id每个kafka的id都是唯一的

host.name=10.2.xxx.xx         设置当前机器的IP

zookeeper.connect=10.2.xxx.xx:2181,10.2.xx.xxx:2181,10.2.xxx.xx:2181   设置zookeeper的地址

log.dirs=/tmp/kafka0-logs     设置日志地址,不同机器上的地址可能需要区别一下,避免broker启动不起来

其他节点配置类似

kafka指令

启动kafka

/usr/local/kafka/bin/kafka-server-start.sh --daemon  /usr/local/kafka/config/server.properties 1>/dev/null 2>&1 &

添加--daemon让kafka在后台以守护进程的方式启动,不会自动停掉

创建topic,名为netSwitch ,分区数为3(--partition 3),总备份数为2(--replication-factor 2),备份数不可超过机器的数量,分区数可以大于机器的数量

/usr/local/kafka/bin/kafka-topics.sh --create --zookeeper HDP-master,HDP-slave1,HDP-slave2 --replication-factor 2 --partitions3 --topic netSwitch

kafka-topics --create --zookeeper HDP-master --replication-factor 2 --partitions3 --topic netSwitch

查看topic的描述

/usr/local/kafka/bin/kafka-topics.sh --describe --zookeeper HDP-master,HDP-slave1,HDP-slave2 --topic netSwitch

Topic:netSwitch  PartitionCount:3                            ReplicationFactor:2

Topic:netSwitch    Partition:0        Leader:2          Replicas: 2,0         Isr: 2,0

Topic:netSwitch    Partition:1        Leader:0          Replicas: 0,1         Isr: 0,1

Topic:netSwitch    Partition:2        Leader:1          Replicas: 1,2         Isr: 1,2

其中Leader表示数据所在节点,在其他节点上的数据为备份数据

列出所有topic

/usr/local/kafka/bin/kafka-topics.sh --list --zookeeper HDP-master,HDP-slave1,HDP-slave2

kafka的topic数据保存在之前配置的日志文件目录下(server.properties文件中log.dirs的值,默认为/tmp/kafka0-logs),如果要删除某个topic,需要删除日志目录下对应的文件夹

查看已注册到zookeeper中的broker个数

/usr/lcoal/zookeeper/bin/zkCli.sh             进入zookeeper命令行

ls /brokers/ids                               列出已注册的brokers的id

out:[1,2]                                     id为1,2的节点注册正常,0节点异常?

quit                                          退出zookeeper命令行

当部分broker注册异常时可尝试修改log.dirs的值为不同目录名 后 正常启动

修改topic的分区数 

kafka-topics --alter --zookeeper 10.4.56.22:9013/kafka --topic eSafenet --partitions 4 

修改topic的备份数(将已有数据进行重新 分布配置)

(1)查看topic的分区备份情况

/usr/local/kafka/bin/kafka-topics.sh --describe --zookeeper HDP-master,HDP-slave1,HDP-slave2 --topic netSwitch

Topic:netSwitch  PartitionCount:3                            ReplicationFactor:1

Topic:netSwitch    Partition:0        Leader:2          Replicas: 2         Isr: 2

Topic:netSwitch    Partition:1        Leader:0          Replicas: 0         Isr: 0

Topic:netSwitch    Partition:2        Leader:1          Replicas: 1         Isr: 1

(2)根据分区备份信息,编辑新的配置

vi ./increase-replication-factor.json

{"version":1,

"partitions":[

{"topic":"netSwitch","partition":0,"replicas":[2,0]},

{"topic":"netSwitch","partition":1,"replicas":[0,1]},

{"topic":"netSwitch","partition":1,"replicas":[1,2]}

]}

 kafka-reassign-partitions --zookeeper HDP-master --reassignment-json-file ./increase-replication-factor.json --execute

(3)查看重分配的执行情况

kafka-reassign-partitions --zookeeper HDP-master  --reassignment-json-file ./increase-replication.json --verify

清空topic中的数据

kafka-topics --zookeeper HDP-master --delete --topic netSwitch

发送消息到broker (生产者)

/usr/local/bin/kafka-console-producer.sh --broker-list HDP-master:9092 --topic netSwitch

>this is the first hdp-master test message

>this is the second hdp-master test message

>three of it

^c                                    ctrl+c 退出并发送消息

从broker消费消息 (消费者)

/usr/local/bin/kafka-console-consumer.sh --zookeeper HDP-master,HDP-salve1,HDP-slave2 --from-beginning --topic netSwitch

this is the first hdp-master test message

three of it

this is the second hdp-master test message

 kafka-console-consumer --bootstrap-server 10.2.24.15:9092 --topic netSwitch

可以看出消费kafka的topic数据时,不一定是按顺序来的,因为这些数据在不同的partition分区,kafka只能保证同一分区上的数据是按顺序读取的,

可以通过某种方式,设置某一类型的数据被发送到同一分区。

kafka相关操作的更多相关文章

  1. kafka的相关操作脚本

    总结最近用到的kafka相关命令和脚本. 1.创建Topic./kafka-topics.sh --zookeeper cc13-141:2182 --topic mytopic --replicat ...

  2. 简单封装kafka相关的api

    一.针对于kafka版本 <dependency> <groupId>org.apache.kafka</groupId> <artifactId>ka ...

  3. Kafka学习笔记之Kafka自身操作日志的清理方法(非Topic数据)

    0x00 概述 本文主要讲Kafka自身操作日志的清理方法(非Topic数据),Topic数据自己有对应的删除策略,请看这里. Kafka长时间运行过程中,在kafka/logs目录下产生了大量的ka ...

  4. Spark-读写HBase,SparkStreaming操作,Spark的HBase相关操作

    Spark-读写HBase,SparkStreaming操作,Spark的HBase相关操作 1.sparkstreaming实时写入Hbase(saveAsNewAPIHadoopDataset方法 ...

  5. 从零自学Hadoop(20):HBase数据模型相关操作上

    阅读目录 序 介绍 命名空间 表 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 ...

  6. 从零自学Hadoop(21):HBase数据模型相关操作下

    阅读目录 序 变量 数据模型操作 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 ...

  7. 理解CSV文件以及ABAP中的相关操作

    在很多ABAP开发中,我们使用CSV文件,有时候,关于CSV文件本身的一些问题使人迷惑.它仅仅是一种被逗号分割的文本文档吗? 让我们先来看看接下来可能要处理的几个相关组件的词汇的语义. Separat ...

  8. Liunx下的有关于tomcat的相关操作 && Liunx 常用指令

    先记录以下liunx下的有关于tomcat的相关操作 查看tomcat进程: ps-ef|grep java (回车) 停止tomcat进程: kill -9 PID (进程号如77447) (回车) ...

  9. pip的相关操作

    >Python中的pip是什么?能够做些什么? pip是Python中的一个进行包管理的东西,能够下载包.安装包.卸载包......一些列操作 >怎么查看pip的相关信息 在控制台输入: ...

随机推荐

  1. Django 注意知识点(一)

    本篇概述 Django Admin后台显示 多对多字段(如何) Django 模板 显示 多对多字段(如何) Django 将表单中上传的多对多字段存入数据库 (如何)   Django 上传文件 ( ...

  2. springboot项目创建,及运行

    1. File --> new --> spring Initializr(选择jdk,和默认的url)-->next-->通过dubbo调用的服务可以直接下一步,也可以选择w ...

  3. Recover With Until Time fails With RMAN-20207 When Time Is Before Last RESETLOGS (Doc ID 159405.1)

    Recover With Until Time fails With RMAN-20207 When Time Is Before Last RESETLOGS (Doc ID 159405.1) A ...

  4. 实战项目-用例评审-问题总结-Dotest-董浩

    实战项目-用例评审-问题总结 内部班项目用例评审,总结的问题:供大家参考!提升用例最好的方式,可以互相执行下(评审),就会明白自己的差距或者需要避免的点在哪里.(前提是会) 1)覆盖率 原型中提到的一 ...

  5. Java哲学家进餐问题|多线程

    Java实验三 多线程 哲学家进餐问题: 5个哲学家共用一张圆桌,分别坐在周围的5张椅子上, 在圆桌上有5个碗和5只筷子(注意是5只筷子,不是5双), 碗和筷子交替排列.他们的生活方式是交替地进行思考 ...

  6. 7.jenkins 按标签发布

    jenkins 如果要按标签发布,需要安装下, Git Parameter Plug-In   的 插件. 之前我们的jar包项目.  我们运行的时候是以下内容. 现在我们对这个jar进行小范围修改. ...

  7. networkx生成网络

    ER随机网络,WS小世界网络,BA无标度网络的生成 import networkx as nx import matplotlib.pyplot as plt #ER随机网络 #10个节点,连接概率为 ...

  8. 终结 finalize() 和对象引用

    一.finalize() 方法 1. 为什么要有 finalize() 方法? 假定你的对象(并非使用new)获得了一块“特殊”的内存区域,由于垃圾回收器只知道释放那些经由 new 分配的内存,所以他 ...

  9. 纠错:Feign 没用 短连接

    Feign 默认不是 短连接 疯狂创客圈 Java 高并发[ 亿级流量聊天室实战]实战系列 [博客园总入口 ] 疯狂创客圈(笔者尼恩创建的高并发研习社群)Springcloud 高并发系列文章,将为大 ...

  10. MongoDB创建集合和删除集合05-14学习笔记

    MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写,是一个基于分布式文件存储的开源数据库系统.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关 ...