Kafka简介和搭建

来源:互联网 发布:2017全国省市区数据库 编辑:程序博客网 时间:2024/04/30 09:04

简介:

Kafka是分布式发布-订阅消息系统。它最初由LinkedIn公司开发,之后成为Apache项目的一部分。Kafka是一个分布式的,可划分的,冗余备份的持久性的日志服务。它主要用于处理活跃的流式数据


Kayka的整体架构:

Kayka的整体架构非常简单,是显式分布式架构,producer、broker(kafka)和consumer都可以有多个。数据从producer发送到broker,broker承担一个中间缓存和分发的作用。broker分发注册到系统中的consumer。broker的作用类似于缓存,即活跃的数据和离线处理系统之间的缓存。

Topic:特指Kafka处理的消息源(feeds of messages)的不同分类。

Partition:Topic物理上的分组,一个topic可以分为多个partition,每个partition是一个有序的队列。partition中的每条消息都会被分配一个有序的id(offset)。

Message:消息,是通信的基本单位,每个producer可以向一个topic(主题)发布一些消息。

Producers:消息和数据生产者,向Kafka的一个topic发布消息的过程叫做producers。

Consumers:消息和数据消费者,订阅topics并处理其发布的消息的过程叫做consumers。

Broker:缓存代理,Kafka集群中的一台或多台服务器统称为broker。



Kayka的设计优点:

1、吞吐量

高吞吐是kafka需要实现的核心目标之一,为此kafka做了以下一些设计:

数据磁盘持久化:消息不在内存中cache,直接写入到磁盘,充分利用磁盘的顺序读写性能,基于kernel态的拷贝技术

2、负载均衡

存在多个partiiton,每个partition有自己的replica,每个replica分布在不同的Broker节点上

多个partition需要选取出lead partition,lead partition负责读写,并由zookeeper负责fail over

通过zookeeper管理broker与consumer的动态加入与离开

3、拉取系统

由于kafka broker会持久化数据,broker没有内存压力,因此,consumer非常适合采取pull的方式消费数据

4、可扩展性

当需要增加broker结点时,新增的broker会向zookeeper注册,而producer及consumer会根据注册在zookeeper上的watcher感知这些变化,并及时作出调整。




kafka的安装部署:

版本:kafka_2.10-0.8.2.1
** 2.10是scala的版本,kafka是用Scala开发的,scale的安装版本应该对应
** 0.8.2.1是kafka的版本


1、安装jdk和zookeeper,并启动
$ sbin/zkServer.sh start    --启动
$ sbin/zkServer.sh status   --查看状态,也可jps查看

2、安装scala
[tom@blue01 cdh]$ tar zxvf /opt/softwares/scala-2.10.4.tgz
$ su - 
# vi /etc/profile
#SCALA_HOME
SCALA_HOME=/opt/modules/cdh/scala-2.10.4
export PATH=$PATH:$SCALA_HOME/bin
$ scala -version


3、安装kafka
$ tar zxvf /opt/softwares/kafka_2.10-0.8.2.1.tgz


4、修改配置文件
a)
server.properties:
# 消息中转站,每个broker id必需唯一
broker.id=0
port=9092
# 主机名,去掉注解
host.name=blue01.mydomain
# kafka存储数据的目录,并非存放日志的目录,$ mkdir data
log.dirs=/opt/modules/cdh/kafka_2.10-0.8.2.1/data
# 指定zookeeper服务器
zookeeper.connect=blue01.mydomain:2181


b)
producer.properties:
# broker列表
metadata.broker.list=blue01.mydomain:9092


c)
consumer.properties:
zookeeper.connect=blue01.mydomain:2181


5、启动kafka
bin/kafka-server-start.sh config/server.properties




kafka初次使用:
1、创建一个topic
# 副本因子通常是奇数,不大于集群服务器台数
# 分区数不能大于集群服务器台数
bin/kafka-topics.sh --create --zookeeper blue01.mydomain:2181 --replication-factor 1 --partitions 1 --topic testTopic


# 查看topic list
bin/kafka-topics.sh --list --zookeeper blue01.mydomain:2181


2、启动生产者
bin/kafka-console-producer.sh --broker-list blue01.mydomain:9092 --topic testTopic


3、启动消费者,再开一个窗口
bin/kafka-console-consumer.sh --zookeeper blue01.mydomain:2181 -
-topic testTopic --from-beginning

原创粉丝点击