实时流处理学习(三)-Kafka
kafka特性: 发布与订阅 + 数据流高效处理 + 多副本方式存储
kafka架构
kafka中的每一条记录都有:key + value + timestamp
(1)zookeeper,配置系统环境变量 (默认端口2181)
wget archive.cloudera.com/cdh5/cdh/5/zookeeper-3.4.5-cdh5.7.0.tar.gz
(2)cp zoo_sample.cfg zoo.cfg,并在zoo.fg中修改dataDir(数据路径)
(4)kafka0.9.0.0 下载解压,并配置/.bash_profile
wget http://mirrors.shu.edu.cn/apache/kafka/2.0.0/kafka_2.11-2.0.0.tgz
- broker.id=0//篮子编号
- listeners=PLAINTEXT://:9092
- host.name=localhost
- log.dirs=/tmp/kafka-logs
- zookeeper.connect=localhost:2181
sh kafka-server-start.sh $KAFKA_HOME/config/server.properties
sh kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic hellotopic
可用--describe 查看topic的详细信息,指定topic的详细信息
kafka-console-producer.sh --broker-list localhost:9092 --topic hellotopic
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic hellotopic --from-beginning(从头开始消费)
不同配置文件对应不同kafka,就相当于多broke,注意改掉broker.id、端口值、日志位置
kafka中存在leader、replicas副本以及ISR 活节点的概念。ReplicationFactor为副本系数
0:这意味着生产者producer不等待来自broker同步完成的确认继续发送下一条(批)消息。此选项提供最低的延迟但最弱的耐久性保证(当服务器发生故障时某些数据会丢失,如leader已死,但producer并不知情,发出去的信息broker就收不到)。
1:这意味着producer在leader已成功收到的数据并得到确认后发送下一条message。此选项提供了更好的耐久性为客户等待服务器确认请求成功(被写入死亡leader但尚未复制将失去了唯一的消息)。
-1:这意味着producer在follower副本确认接收到数据后才算一次发送完成。