赞
踩
目录
三、利用安装 zookeeper 的三台服务器做 KAFKA 集群
什么是 kafka 呢,他是 LinkedIn 开发的一个分布式消息系统,用 scala 编写的,可以水平扩展和高吞吐率。
原本开发自 LinkedIn,用作他们的活动流和运营数据处理管道的基础,之后被多家公司使用,慢慢发展壮大起来。
kafka 是分布式的,基于发布/订阅的消息系统。
1、 即使对 TB 级以上数据也能保证常数时间复杂度的访问性能。
2、 高吞吐率:即使在非常廉价的商用机器上也能做到单机支持每秒 100k 条以上消息的传输。
3、 支持分区,消息分布式消费,但是只能保证每个 partition 内的消息顺序传输。并且支持在线水平扩展。
为何使用消息中间件呢,大家肯定接触过 rabbitmq、activemq、redis 等,估计有很多感触。我就不详细描述了,这
个只能亲身参加过大的技术架构,自己身在其中,并且感受到不用消息中间件和用的区别。
了解架构之前,我们先了解一下基本名词。
Broker:安装了 kafka 的服务器就是一个 broker。
Topic:消息的类比,最好一类数据定一个 topic 去存储传输。
Partition:分区,topic 可以定分到几个分区中。
Producer:发送消息,发送者。
Consumer:消费消息,消费者。
Consumer Group:每个 Consumer 属于一个特定的 Consumer Group。
从图中来看,kafka 集群包含若干个 producer 和 consumer 以及 broker,还有一个 zk 集群。Producer 通过 push 模式将数据发送到 broker,Consumer 通过 pull 模式拉取数据。
Producer 发送消息到 broker 时,根据 partition 机制选择分不到哪一个 partition,设置合理的情况下,所有消息可以均匀分不到不同的 partition 里,实现了负载均衡。
下载地址:https://archive.apache.org/dist/kafka/0.8.1/kafka_2.9.2-0.8.1.tgz
分别在三台服务器创建kafka目录并且下载kafka压缩包
- mkdir /usr/local/kafka
- tar –zxvf kafka_2.9.2-0.8.1.tar.gz
mkdir /usr/local/kafka/kafkalogs
- cd /usr/local/kafka/kafka_2.9.2-0.8.1/config
-
- # vi server.properties 修改项如下:
-
- broker.id=0 //当前机器在集群中的唯一标识
- port=9092 //kafka对外提供服务的tcp端口
- host.name=10.211.55.7 //主机IP地址
- log.dirs=/usr/local/kafka/kafkalogs //log存放目录
- message.max.byte=5048576 //kafka一条消息容纳的消息最大为多少
- default.replication.factor=2 //每个分区默认副本数量
- replica.fetch.max.bytes=5048576
- zookeeper.connect=10.211.55.7:2181, 10.211.55.8:2181, 10.211.55.9:2181
./kafka-server-start.sh -daemon ../config/server.properties //后台启动运行
root@master ~]# /export/kafka/bin/kafka-console-producer.sh --broker-list
10.14.2.201:9092,10.14.2.202:9092,10.14.2.203:9092,10.14.2.204:9092 --topic test
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
# /export/kafka/bin/kafka-console-consumer.sh --zookeeper
10.14.2.201:2181,10.14.2.202:2181,10.14.2.203:2181,10.14.2.204:2181 --topic test --from-beginning
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
解决方法:
- # 下载slf4j-1.7.6.zip
- # http://www.slf4j.org/dist/slf4j-1.7.6.zip
- # 解压
- unzip slf4j-1.7.6.zip
- # 把slf4j-nop-1.7.6.jar 包复制到kafka libs目录下面
- cd slf4j-1.7.6
- cp slf4j-nop-1.7.6.jar /export/kafka/libs/
./kafka-topics.sh --create --zookeeper 10.211.55.7:2181 --replication-factor 1 --partitions 1 --topic test
./kafka-topics.sh --list --zookeeper 10.211.55.7:2181
./kafka-console-producer.sh --broker-list 10.211.55.7:9092 --topic test
./kafka-console-consumer.sh --zookeeper 10.211.55.8:2181 --topic test --from-beginning
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。