Kafka学习

kafka.apache.org

消息中间件

Flume: 1个进程 source channel sink
Kafka: 3个进程 producer broker consumer
生产者 服务进程 消费者
flume–> kafka(存储) --> spark streaming/flink/结构化流

编程: scala语言

概念: 主题 topic
生产业务:
oms订单系统–mysql–>flume–>kafka( omstopic ) -->ss1

wms仓库系统–mysql–>flume–>kafka( wmstopic ) -->ss2

kafka创建主题 一般根据业务系统数据处理来划分
最终落在磁盘上就是创建文件夹(liunx系统文件夹)
mkdir omstopic
mkdir wmstopic

日志存储在log liunx系统文件

一个主题有三个分区
1亿行 omstopic_0 100W/s log append追加 自身的分区有序的
omstopic_1 200W/s log append追加 自身的分区有序的
omstopic_2 300W/s log append追加 自身的分区有序的

单分区有序 如何做到全局有序?


cdh5.7.0

分布式安装
1.zookeeper cdh5.7.0
[root@yws85 zookeeper-3.4.6]# bin/zkServer.sh status
JMX enabled by default
Using config: /opt/software/zookeeper-3.4.6/bin/…/conf/zoo.cfg
Mode: follower
[root@yws85 zookeeper-3.4.6]#
[root@yws86 zookeeper-3.4.6]# bin/zkServer.sh status
JMX enabled by default
Using config: /opt/software/zookeeper-3.4.6/bin/…/conf/zoo.cfg
Mode: leader
[root@yws86 zookeeper-3.4.6]#
[root@yws87 zookeeper-3.4.6]# bin/zkServer.sh status
JMX enabled by default
Using config: /opt/software/zookeeper-3.4.6/bin/…/conf/zoo.cfg
Mode: follower
[root@yws87 zookeeper-3.4.6]#

2.kafka cdh5.7.0 没有 在CDH当中kafka是独立分支

kafka_2.11 - 0.10.0.1.tgz
scala2.11 版本
0.10.0.1 kafka版本

kafka_2.11 - 2.1.0.tgz

2.1 事先有的zk,不确定zk是否有kafka残留信息
[zk: localhost:2181(CONNECTED) 2] ls /kafka
[controller_epoch, brokers, admin, isr_change_notification, consumers, config]
[zk: localhost:2181(CONNECTED) 3] rmr /kafka
[zk: localhost:2181(CONNECTED) 4]

2.2 JDK部署

2.3 scala部署
scala-2.11.8.tgz
tar -xzvf scala-2.11.8.tgz
chown -R scala-2.11.8
ln -s scala-2.11.8 scala

export SCALA_HOME=/opt/software/scala-2.11.8
export PATH= S C A L A H O M E / b i n : SCALA_HOME/bin: SCALAHOME/bin:JAVA_HOME/bin: H A D O O P H O M E / b i n : HADOOP_HOME/bin: HADOOPHOME/bin:FLINK_HOME/bin:$PATH

2.4 Kafka部署
[root@yws87 kafka]# mkdir logs

[root@yws87 config]# vi server.properties

The id of the broker. This must be set to a unique integer for each broker.

broker.id=3
port=9092
host.name=192.168.0.87

A comma seperated list of directories under which to store log files

log.dirs=/opt/software/kafka/logs
zookeeper.connect=192.168.0.85:2181,192.168.0.86:2181,192.168.0.87:2181/kafka

[root@yws87 kafka]# nohup bin/kafka-server-start.sh config/server.properties &
[1] 19455
[root@yws87 kafka]# nohup: ignoring input and appending output to ‘nohup.out’

[root@yws87 kafka]#
[root@yws87 kafka]# tail -F nohup.out
[root@yws87 config]# jps
21234 Jps
10590 QuorumPeerMain
19455 Kafka

kafka0.10
kafka2.1

快捷文件夹 原始文件夹
kafka --> kafka0.10
–> kafak2.1
kafka
shell脚本等等 就不需要修改了

常用命令:
.topic相关的操作
a.创建topic,如能成功创建topic则表示集群安装完成,
也可以用jps命令查看kafka进程是否存在。
bin/kafka-topics.sh
–create
–zookeeper 192.168.0.85:2181,192.168.0.86:2181,192.168.0.87:2181/kafka
–replication-factor 3
–partitions 3
–topic test

bin/kafka-topics.sh
–create
–zookeeper 192.168.0.85:2181,192.168.0.86:2181,192.168.0.87:2181/kafka
–replication-factor 1
–partitions 1
–topic g5

b.通过list命令查看创建的topic:
bin/kafka-topics.sh
–list
–zookeeper 192.168.0.85:2181,192.168.0.86:2181,192.168.0.87:2181/kafka

c.查看创建的Topic
bin/kafka-topics.sh
–describe
–zookeeper 192.168.0.85:2181,192.168.0.86:2181,192.168.0.87:2181/kafka
–topic test

Topic:test PartitionCount:3 ReplicationFactor:3 Configs:
Topic: test Partition: 0 Leader(读写): brokerid 3 Replicas: 3,1,2 Isr: 3,1,2
Topic: test Partition: 1 Leader: 1 Replicas: 1,2,3 Isr: 1,2,3
Topic: test Partition: 2 Leader: 2 Replicas: 2,3,1 Isr: 2,3,1
[root@yws85 kafka]#

第一行列出了这个topic的总体情况,如topic名称,分区数量,副本数量等。
第二行开始,每一行列出了一个分区的信息,如它是第几个分区,这个分区的leader是哪个broker,副本位于哪些broker,有哪些副本处理同步状态。

Partition: 分区
Leader : 负责读写指定分区的节点
Replicas : 复制该分区log的节点列表
Isr : “in-sync” replicas,当前活跃的副本列表(是一个子集),并且可能成为Leader
我们可以通过Kafka自带的bin/kafka-console-producer.sh和bin/kafka-console-consumer.sh脚本,来验证演示如果发布消息、消费消息。

d.删除topic
bin/kafka-topics.sh --delete
–zookeeper 192.168.0.85:2181,192.168.0.86:2181,192.168.0.87:2181/kafka
–topic test
假如删除不干净:1.linux磁盘文件夹 2.zk的/kafka的
ls /kafka/brokers/topics
ls /kafka/config/topics

bin/kafka-topics.sh --delete
–zookeeper 192.168.0.85:2181,192.168.0.86:2181,192.168.0.87:2181/kafka
–topic g5

整理:
1.生产上命名不要有标点符号的字符,就英文 可以带数字 默认小写
2.假如已经在运行的kafka 只有1个topic 你可以删除 风险0
3. 多个topic 忍

e.修改topic
使用—-alert原则上可以修改任何配置,以下列出了一些常用的修改选项:
(1)改变分区数量
bin/kafka-topics.sh
–alter
–zookeeper 192.168.0.85:2181,192.168.0.86:2181,192.168.0.87:2181/kafka
–topic g5 --partitions 3

bin/kafka-topics.sh --describe
–zookeeper 192.168.0.85:2181,192.168.0.86:2181,192.168.0.87:2181/kafka
–topic g5

[root@yws85 kafka]# bin/kafka-topics.sh --describe \

–zookeeper 192.168.0.85:2181,192.168.0.86:2181,192.168.0.87:2181/kafka
–topic g5
Topic:g5 PartitionCount:3 ReplicationFactor:1 Configs:
Topic: g5 Partition: 0 Leader: 3 Replicas: 3 Isr: 3
Topic: g5 Partition: 1 Leader: 1 Replicas: 1 Isr: 1
Topic: g5 Partition: 2 Leader: 2 Replicas: 2 Isr: 2
[root@yws85 kafka]#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值