大数据学习之——kafka安装部署

来源:互联网 发布:双十一淘宝退货率 编辑:程序博客网 时间:2024/05/07 20:06

kafka介绍

Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。

  1. 消息的发布(publish)称作producer,消息的订阅(subscribe)称作consumer,中间的存储阵列称作broker。

  2. 多个broker协同合作,producer、consumer和broker三者之间通过zookeeper来协调请求和转发。

  3. producer产生和推送(push)数据到broker,consumer从broker拉取(pull)数据并进行处理。

  4. broker端不维护数据的消费状态,提升了性能。

  5. 直接使用磁盘进行存储,线性读写,速度快:避免了数据在JVM内存和系统内存之间的复制,减少耗性能的创建对象和垃圾回收。

  6. Kafka使用scala编写,可以运行在JVM上。

重要名词:

Producer(生产者):消息产生者,产生消息,将其发送到Broker;

Consumer(消费者)
使用数据的客户端,从Broker得到消息;

Broker(中间人,消息中转站)
即kafka的Server;集群(cluster)由一堆Broker组成

Zookeeper

管理连接信息,包括各个节点的IP,端口等;Producer和Consumer需要到Zookeeper请求Broker的信息,从而进行消息的收发;

一个新的Broker的启动也需要到Zookeeper注册; zookeeper也可以配集群。目的是防止某一台挂了。
producer和consumer通过zookeeper去发现topic,并且通过zookeeper来协调生产和消费的过程。

Topic

Topic,是kafka对消息分类的依据;一条消息,必须有一个与之对应的Topic;
比如现在又两个Topic,分别是Love和Hate,Producer向Love发送一个消息苹果,然后向Hate发送一个消息土豆;那么,订阅Love的Consumer就会收到消息苹果,订阅Hate的Consumer就会收到消息土豆;
每个Consumer可以同时订阅多个Topic,也即是说,同时订阅Love和Hate的Consumer可以同时收到苹果和土豆。

Message

Message就是我们所说的消息,是KAfKA操作的对象,消息是按照Topic存储的;
KAFKA中按照一定的期限保存着所有发布过的Message,不管这些Message是否被消费过。kafka默认存储7天。

安装

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

    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=0port=9092# 主机名,去掉注解host.name=hadoop1# kafka存储数据的目录,并非存放日志的目录,$ mkdir datalog.dirs=/opt/modules/cdh/kafka_2.10-0.8.2.1/data   # 指定zookeeper服务器zookeeper.connect=hadoop1:2181,hadoop2:2181,hadoop3:2181

5、启动kafka

./kafka_2.10-0.8.2.1/bin/kafka-server-start.sh  -daemon ./kafka_2.10-0.8.2.1/config/server.properties

kafka初次使用:

1、创建一个topic

# 副本因子通常是奇数,不大于集群服务器台数# 分区数不能大于集群服务器台数./kafka_2.10-0.8.2.1/bin/kafka-topics.sh --create  --zookeeper hadoop1:2181 --replication-factor 3  --partitions 2 --topic testTopic# 查看topic list./kafka_2.10-0.8.2.1/bin/kafka-topics.sh  --describe --zookeeper hadoop1:2181Topic:testTopic PartitionCount:2        ReplicationFactor:3     Configs:        Topic: testTopic        Partition: 0    Leader: 1       Replicas: 1,2,3 Isr: 1,2,3        Topic: testTopic        Partition: 1    Leader: 2       Replicas: 2,3,1 Isr: 2,3,1

2、启动生产者

./kafka_2.10-0.8.2.1/bin/kafka-console-producer.sh  --broker-list hadoop1:9092 --topic testTopic

3、启动消费者,再开一个窗口

./kafka_2.10-0.8.2.1/bin/kafka-console-consumer.sh --zookeeper hadoop1:2181 --topic testTopic --from-beginning
  • 生产者:flume、程序
  • 消费者:spark、storm、imapla