大数据入门之分布式消息队列Kafka(1) -- Kafka介绍以及环境搭建

1.Kafka概述

Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。对于像Hadoop的一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息。

2.Kafka架构

大数据入门之分布式消息队列Kafka(1) -- Kafka介绍以及环境搭建_第1张图片

producer:生产者,就是生产馒头(老妈)

consumer:消费者,吃馒头的(你)

broker(kafka):放馒头的篮子

topic:主题,给馒头带一个标签,topicA的馒头是给你吃的,topicB的馒头是给别人吃的

3.Kafka安装及部署【单节点单broker】

安装

首先我们要先部署好我们的Zookeeper,具体请移步大数据入门之Hadoop生态系统(12) -- HBase环境搭建和简单使用。

然后,下载安装Kafka,https://archive.apache.org/dist/kafka/0.9.0.0/kafka_2.11-0.9.0.0.tgz。

解压之后,配置到环境变量中。然后我们进入config目录下,执行“vi server.properties”,修改如下。

broker.id=0
host.name=hadoop000
log.dirs=/home/Kiku/app/tmp/kafka-logs
zookeeper.connect=hadoop000:2181

broker.id:每个kafka的id都应该不一样。

host.name:kafka主机名

log.dirs:kafka日志信息,这里目录写成自己的即可

zookeeper.connect:zookeeper地址

启动Kafka

执行

kafka-server-start.sh -daemon /home/Kiku/app/kafka_2.11-0.9.0.0/config/server.properties

查看一下进程。如下即可。

创建topic

kafka-topics.sh --create --zookeeper hadoop000:2181 --replication-factor 1 --partitions 1 --topic hello_topic

这里是创建一个topic,副本系数是1,分区数也是1,名字是:hello_topic,而且还要指定zookeeper的地址。

创建完了,我们来查看一下,是否创建成功了。

kafka-topics.sh --list --zookeeper hadoop000:2181

发送、接受消息

接下来,我们来用控制台发送消息。(生产者生产消息),hadoop000:9092是kafka配置的监听端口信息。

kafka-console-producer.sh --broker-list hadoop000:9092 --topic hello_topic

然后再启动一个终端,采用控制台消费消息,hadoop000:2181是zookeeper的地址。

kafka-console-consumer.sh --zookeeper hadoop000:2181 --topic hello_topic

注意:kafka-console-consumer.sh --zookeeper hadoop000:2181 --topic hello_topic --from-beginning  表示每次从头开始消费,也会消费以前的数据。

此时,我们在生产者终端中,输入一些字符串,“hello”,“world”

发现在消费者终端中,我们是可以接受到的。

查看所有topic状态

kafka-topics.sh --describe --zookeeper hadoop000:2181

查看指定topic状态

kafka-topics.sh --describe --zookeeper hadoop000:2181 --topic xxxxxxx

4.多节点多broker

将server.propertis复制为三份

server-1.properties

    log.dirs=/home/Kiku/app/tmp/kafka-logs-1

    listeners=PLAINTEXT://:9093

    broker.id=1

    。。。。。。。

-daemon 后台启动
kafka-server-start.sh -daemon $KAFKA_HOME/config/server-1.properties &
kafka-server-start.sh -daemon $KAFKA_HOME/config/server-2.properties &
kafka-server-start.sh -daemon $KAFKA_HOME/config/server-3.properties &
创建topic    --replication-factor: 3  创建3个副本    --partitions 1:创建1个分区
kafka-topics.sh --create --zookeeper hadoop000:2181 --replication-factor 3 --partitions 1 --topic my-replicated-topic
发送消息
kafka-console-producer.sh --broker-list hadoop000:9093,hadoop000:9094,hadoop000:9095 --topic my-replicated-topic
消费信息
kafka-console-consumer.sh --zookeeper hadoop000:2181 --topic my-replicated-topic

5.Kafka容错性测试

以刚刚多broker为例,有三个broker副本。

Replicas:3,1,2  Isr:3,1,2   // 副本id为3,1,2 ;存活的是3,1,2

如果杀掉id=2的Kafka进程 => Replicas:3,1,2  Isr:3,1   // 副本id为3,1,2 ;存活的是3,1

如果杀掉id=3的Kafka进程 => Replicas:1  Isr:1   // 副本id为3,1,2 ;存活的是1    // 这个时候leader转成1

 

你可能感兴趣的:(大数据,Kafka)