共计 2644 个字符,预计需要花费 7 分钟才能阅读完成。
kafka 概念:
kafka 是一个高吞吐量的流式分布式消息系统,用来处理活动流数据,比如网页的访问量 pm, 日志等,既能够实时处理大数据信息也能离线处理。
特点:
1. 高吞吐量
2. 是一种显式的分布式系统,它假设,数据生产者(producer), 代理(brokers)和数据使用者(consumer)分散在多台机器上。
3. 有关哪些数据已经被使用了的状态信息保存为数据使用着(consumer)的一部分,而不是保存在服务秋上。
关于队列的基础知识:
消息:指的是通信的基本单位,由消息生产者(producer)发布关于某个胡全体(topic)的消息,这句话的意思是消息以一种物理方式被发送给了作为代理(broker)的服务器,若干的消费者(consumer)订阅(subscribe)某个话题,然后生产者发布的消息都会被发送给所有的使用者。
kafka 是一个显式的分布式系统,指的是生产者,消费者,和代理者都可以运行在作为一个逻辑单位的,相互协调的集群的不同机器上。
消费者组:每个消费者进程都隶属于一个消费者组,每条消息只会发送到这个消费者组中的一个消费者进程,消费者组将多个消费者进程或多台机器在逻辑上看做为了一个消费者。消费者组的意义就是,每条消息都只会发送到这个消费者组中的一个进程,但是在同一个组中的消费者进程都能使用这个消息,所以无论消费者组中有多少个订阅者,每条信息值在组中存储一份!
在 kafka 中,使用者(consumer)负责维护反应哪些消息已经被使用的状态(偏移量),在 kafka 中会将状态数据保存到 zookeeper 中,在 Hadoop 的加载作业从 kafka 并行加载作业时,每个 mapper 在 map 任务结束之前会将状态偏移量,存储到 hdfs 中。通过这种机制还可以回退数据读。
分发机制;
kafka 通常情况下是运行在集群中的服务器上。没有中央的“主”节点。代理彼此之间是对等的,不需要任何手动配置即可可随时添加和删除。同样,生产者和消费者可以在任何时候开启。每个代理都可以在 zookeeper(分布式协调系统) 中注册的一些元数据(例如,可用的主题)。生产者和消费者可以使用 zookeeper 发现主题和相互协调。关于生产者和消费者的细节将在下面描述。
消费者和生产者通过分区实现负载均衡。
主题:用来区分不同种类的数据信息
分区 partition: 有主有从,将数据写到不同的文件上,分区的编号默认是从 0 开始,0,1,2,3…
leader 负责读写数据,follower 负责同步数据,高吞吐量,负载均衡 producer 来可以去不同的分区上去写数据,consumer 也是同样原理,这样就可以将读写负载均衡到不同的分区中消费之 consumer,消费数据从主分区上(leader)读
消费组:共享消费信息,在同一个消费组中的消费者,读取同一份数据只要一次就行了,因为同一个组中消费者之间共享数据
#########################################################################################################
安装 kafka:
1. 上传 kafka_2.9.2-0.8.1.1.tgz 到服务器
2. 单节点 kafka,
a. 先启动 zookeeper 集群
执行 bin/kafka-server-start.sh config/server.properties
会报:
Unrecognized VM option ‘UseCompressedOops’
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
原因是 jdk 的版本不匹配,需要修改一下配置文件
修改文件:
去掉这个配置
-XX:+UseCompressedOops
b. 启动一个服务端
bin/kafka-server-start.sh config/server.properties
c. 查看 topic
bin/kafka-topics.sh –list –zookeeper localhost:2181
创建 topic
bin/kafka-topics.sh –create –zookeeper localhost:2181 –replication-factor 1 –partitions 1 –topic test
查看 topic 描述
bin/kafka-topics.sh –describe –zookeeper localhost:2181 –topic my-replicated-topic
d. 测试
启动一个生产者
bin/kafka-console-producer.sh –broker-list localhost:9092 –topic test
开启一个消费者
bin/kafka-console-consumer.sh –zookeeper localhost:2181 –topic test –from-beginning
3. 集群搭建
修改配置文件
vim config/server-1.properties
最后的 zookeeper 集群的配置
zookeeper.connect=storm01:2181,storm02:2181,storm03:2181
再将 kafka 的配置拷贝到其他的服务器
scp -r /usr/itcast/kafka root@storm02:/usr/itcast/
scp -r /usr/itcast/kafka root@storm03:/usr/itcast/
修改配置文件
vim config/server-1.properties
broker.id=1,broker.id=2
启动测试
分布式发布订阅消息系统 Kafka 架构设计 http://www.linuxidc.com/Linux/2013-11/92751.htm
Apache Kafka 代码实例 http://www.linuxidc.com/Linux/2013-11/92754.htm
Apache Kafka 教程笔记 http://www.linuxidc.com/Linux/2014-01/94682.htm
Kafka 使用入门教程 http://www.linuxidc.com/Linux/2014-07/104470.htm
Kafka 的详细介绍 :请点这里
Kafka 的下载地址 :请点这里