SparkStreaming部分:kafka的总结【文字说明+图片展示+各种命令】

Kafka的架构:分布式消息系统,默认将消息存入磁盘,存储时间是7天。

Producer:消息的生产者,自己决定消息写往哪个partition,两种:1.hash,2.轮询

Broker:组建kafka集群的节点,broker之间没有主从关系,broker由zookeeper来协调,broker负责消息的读写,存储。每个broker可以管理多个partition。

Topic:一类消息的总称/消息队列/分类,由partition组成,有多少,创建可以指定

Partition:实际存储数据的地方,每个partition有副本,有多少?创建topic时可以指定,partition是直接接触磁盘,append追加消息,每个partition都有一个broker来管理。这个broker叫做这个partition的leader

Consumer:消息的消费者。每个consumer都有自己的消费者组。组与组之间消费同一个topic时,互不影响。同一个消费者组内的消费者同一个topic时,这个topic中同一条数据只能被消费一次。Consumer自己通过zookeeper来维护消费者的offset

Zookeeper:协调数据,存储元数据,broker,partition等

————————————————————————————————————————————————————————

Kafka和sparkstreaming整合:

用flume也可以接sparkstreaming

问题:

Flume------->sparkStreaming,sparkStreaming由于峰值的影响,之间有数据丢失,数据卡了,kafka起到了解耦和压力缓冲

是一个分布式的消息队列系统。

Kafka是零拷贝,就是不经过内存,直接写到磁盘的。,直接存起来.kafka有三种作用:解耦,缓冲,异步通信

生产者不丢数据,消费者不丢数据,永久保存

一般情况下没有峰值

Kafka的吞吐量很大,可以达到百兆每秒

Kafka后期可以给sparkstreaming提供很稳定的流输出,做了一个解耦

同时起到了压力峰值的缓冲

存消息队列的系统

Kafka是一个生产者,消费者队列系统,会保证自己不丢失数据,而且是一个分布式的,也有集群

Hash:基于(K,V)格式

轮询:先在一个partition中写,写一会儿,再去切换另一个部分。

Partition内部是强有序的。

Offset是生产者的偏移量

kafka会源源不断的提供数据

Kafka的架构:分布式消息系统,默认将消息存入磁盘,存储时间是7天。是一个分布式的,也就是有很多节点,保证自己不丢数据,消费者也不丢数据。

——————————————————————————————————————————————————————+

kafka启动时需要修改权限:

chmod +x startkafka.sh

启动:

./startkafka.sh

创建topic:

 ./kafka-topics.sh --zookeeper node01:2181,node02:2181,node03:2181 --create --topic t0730 2 --partitions 2 --replic
ation-factor 2

查看创建的节点:

./kafka-topics.sh --zookeeper node01:2181,node02:2191,node03:2181 --list

kafka集群的搭建:

  1. kafka集群搭建
  1. 上传kafka_2.10-0.8.2.2.tgz包到三个不同节点上,解压。
  2. 配置../ kafka_2.10-0.8.2.2/config/server.properties文件

节点编号:(不同节点按0,1,2,3整数来配置)

真实数据存储位置:

zookeeper的节点:

  1. 启动zookeeper集群。
  2. 三个节点上,启动kafka:

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

最好使用自己写的脚本启动,将启动命令写入到一个文件:

nohup bin/kafka-server-start.sh   config/server.properties > kafka.log 2>&1 &

 

脚本附件:

(放在与bin同一级别下,注意创建后要修改权限:chmod 755 startkafka.sh)

  1. 相关命令:

创建topic:

./kafka-topics.sh --zookeeper node3:2181,node4:2181,node5:2181  --create --topic topic2017 --partitions 3 --replication-factor 3

用一台节点控制台来当kafka的生产者:

./kafka-console-producer.sh  --topic  topic2017

--broker-list node1:9092,node2:9092,node3:9092

用另一台节点控制台来当kafka的消费者:

./kafka-console-consumer.sh --zookeeper node3:2181,node4:2181,node5:2181 --topic topic2017

查看kafka中topic列表:

./kafka-topics.sh  --list --zookeeper node3:2181,node4:2181,node5:2181

查看kafka中topic的描述:

./kafka-topics.sh --describe --zookeeper node3:2181,node4:2181,node5:2181  --topic topic2017

 

注意:ISR是检查数据的完整性有哪些个节点。

查看zookeeper中topic相关信息:

启动zookeeper客户端:

./zkCli.sh

查看topic相关信息:

ls /brokers/topics/

查看消费者相关信息:

ls /consumers

  1. 删除kafka中的数据。
    • :在kafka集群中删除topic,当前topic被标记成删除。

./kafka-topics.sh --zookeeper node3:2181,node4:2181,node5:2181 --delete --topic t1205

在每台broker节点上删除当前这个topic对应的真实数据。

读取写入的信息:

./kafka-console-consumer.sh --zookeeper node01:2181,no
de02:2181,node03:2181 --topic t0730 --from-beginning

分别去每台节点目录日志下删除日志文件:

[root@node02 kafka-logs]# rm -rf t0730-*
 

    • :进入zookeeper客户端,删除topic信息

rmr /brokers/topics/t1205

    • :删除zookeeper中被标记为删除的topic信息

rmr /admin/delete_topics/t1205

 

查看描述:

./kafka-topics.sh --zookeeper node01:2181,node02:2181,
node03:2181 --describe --topic t0730

 

————————————————————————————————————————————————————————

删除topic里面的数据

这里没有单独的清空数据的命令,这里要达到清空数据的目的只需要以下步骤:

一、如果当前topic没有使用过即没有传输过信息:可以彻底删除。

二、 如果当前topic有使用过即有过传输过信息:并没有真正删除topic只是把这个topic标记为删除(marked for deletion)。想要彻底删除topic数据要经过下面两个步骤:

①:删除topic,重新用创建topic语句进行创建topic

②:删除zookeeper中的consumer中的路径。    

这里假设要删除的topic是test,kafka的zookeeper root为/kafka

删除kafka相关的数据目录

数据目录请参考目标机器上的kafka配置:server.properties -> log.dirs=/var/kafka/log/tmp

rm -r /var/kafka/log/tmp/test*

 

删除kafka topic

./kafka-topics.sh --zookeeper node3:2181,node4:2181,node5:2181 --delete --topic kfk

 

删除zookeeper相关的路径

(1)登录zookeeper客户端:命令:./bin/zookeeper-client

(2)找到topic所在的目录:ls /brokers/topics

(3)找到要删除的topic,执行命令:rmr /brokers/topics/【topic name】即可,此时topic被彻底删除。

 

另外被标记为marked for deletion的topic你可以在zookeeper客户端中通过命令获得:ls /admin/delete_topics/【topic name】,如果你删除了此处的topic,那么marked for deletion 标记消失

完成

重启zookeeper和kafka可以用下面命令查看相关的topic还在不在:

/home/kafka/bin/kafka-topics.sh --list --zookeeper HadoopMaster:2181/kafka

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值