消息中间件
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]#
3915

被折叠的 条评论
为什么被折叠?



