Kafka认识实战

Kafka ,是一个分布式、支持分区的(partition)、多副本的(replica),高吞吐量的基于zookeeper协调的分布式消息系统
应用场景:
    1)构建实时的流数据管道,可靠地获取系统和应用程序之间的数据。
    2)构建实时流的应用程序,对数据流进行转换或反应。

kafka四个核心
    1)producer:生产者。
    2)consumer:消费者。
    3)topic: 给消息打一个标签,消息以topic为类别记录,Kafka将消息种子(Feed)分门别类,每一类的消息称之为一个主题(Topic)。
    4)broker:以集群的方式运行,可以由一个或多个服务组成,每个服务叫做一个broker;消费者可以订阅一个或多个主题(topic),并从Broker拉数据,从而消费这些已发布的消息。
每个消息(也叫作record记录,也被称为消息)是由一个key,一个value和时间戳构成。
(一个kafka相当于一个broker,kafka集群即broker集群)

kafka四个核心API介绍
    1)使用producer API发布消息到1个或多个topic中
    2)使用consumer API来订阅一个或者多个topic,并处理产生在其中的消息
    3)使用streams API充当一个流处理器,从1个或多个topic消费输入流,并产生一个输出流到1个或多个topic,有效地将输入流转换到输出流。
    4)使用connector API允许构建或运行可重复使用的生产者或消费者,将topic链接到现有的应用程序或数据系统。

由于kafka基于zookeeper协调,所以需先配置zookeeper环境


--kafka 单节点单broker

配置文件 conf/server.properties
需要修改的地方
broker.id=0 唯一INT
liseners    监听的端口 默认9092
host.name    当前机器
log.dirs    日志路径
zookeeper.connect


创建topic和消费消息是跟zookeeper打交道,生成消息是和broker-list打交道


启动kafka
kafka-server-start.sh $KAFKA_HOME/config/server.properties

创建topic
kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic hello_test
查看当前的zookeeper有多少个topic
kafka-topics.sh --list --zookeeper localhost:2181
查看topic的详细信息
kafka-topics.sh --describe --zookeeper localhost:2181

生产者生产broker发送消息到某个topic中,数据发送到kafka监听的端口
kafka-console-producer.sh --broker-list localhost:9092 --topic hello_test

消费者读取消费zookeeper中topic的消息
kafka-console-consumer.sh --zookeeper localhost:2181 --topic hello_test --from-beginning


--kafka 单节点多broker

配置多个配置文件
server-1.properties
server-2.properties
config/server-1.properties:
    broker.id=1
    listeners=PLAINTEXT://:9093
    log.dir=/tmp/kafka-logs-1
 
config/server-2.properties:
    broker.id=2
    listeners=PLAINTEXT://:9094
    log.dir=/tmp/kafka-logs-2

后台启动(-daemon)kafka
kafka-server-start.sh -daemon $KAFKA_HOME/config/server-1.properties &
kafka-server-start.sh -daemon $KAFKA_HOME/config/server-2.properties     
创建topic
kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 2 --partitions 1 --topic more_repl
发送消息
kafka-console-producer.sh --broker-list localhost:9093,localhost:9094 --topic more_repl
消费消息
kafka-console-consumer.sh --zookeeper localhost:2181 --topic more_repl --from-beginning

 

 

--kafka 整合 flume
配置flume的agent文件
confA:exec source + memory channel + avro sink
confB:avro source + memory channel + kafka sink

confA:exec-memory-avro.conf

#Name the components on this agent
exec-memory-avro.sources = exec-source
exec-memory-avro.sinks = avro-sink
exec-memory-avro.channels = memory-channel

# Describe/configure the source
exec-memory-avro.sources.exec-source.type = exec
exec-memory-avro.sources.exec-source.command = tail -F /home/hadoop/data/data.log
exec-memory-avro.sources.exec-source.channels = /bin/sh -c

# Describe the sink
exec-memory-avro.sinks.avro-sink.type = avro
exec-memory-avro.sinks.avro-sink.hostname = testhdp01
exec-memory-avro.sinks.avro-sink.type = 44444

# Use a channel which buffers events in memory
exec-memory-avro.channels.memory-channel.type = memory

confB: avro-memory-kafka.conf

#Name the components on this agent
avro-memory-kafka.sources = avro-source
avro-memory-kafka.sinks = kafka-sink
avro-memory-kafka.channels = memory-channel

# Describe/configure the source
avro-memory-kafka.sources.avro-source.type = avro
avro-memory-kafka.sources.avro-source.bind = testhdp01
avro-memory-kafka.sources.avro-source.port = 44444

# Describe the sink
avro-memory-kafka.sinks.kafka-sink.type = org.apache.flume.sink.kafka.KafkaSink
#broker的监听端口
avro-memory-kafka.sinks.kafka-sink.brokerList = testhdp01:9092
avro-memory-kafka.sinks.kafka-sink.topic = hello_test
#缓存多少条数据再输出
avro-memory-kafka.sinks.kafka-sink.batchSize = 3
avro-memory-kafka.sinks.kafka-sink.requiredAcks = 1

# Use a channel which buffers events in memory
avro-memory-kafka.channels.memory-channel.type = memory

# Bind the source and sink to the channel
avro-memory-kafka.sources.avro-source.channels = memory-channel
avro-memory-kafka.sinks.kafka-sink.channel = memory-channel

 

启动命令 先启动监听的 avro-memory-kafka.conf
flume-ng agent \
--name avro-memory-kafka \
--conf $FLUME_HOME/conf \
--conf-file $FLUME_HOME/conf/avro-memory-kafka.conf  \
-Dflume.root.logger=INFO,console

再启动 exec-memory-avro.conf
flume-ng agent \
--name exec-memory-avro \
--conf $FLUME_HOME/conf \
--conf-file $FLUME_HOME/conf/exec-memory-avro.conf  \
-Dflume.root.logger=INFO,console

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值