2、Kafka安装部署

2.1 kafka的环境配置

安装步骤:后面会讲到,此处只是安装和使用

安装kafka,需要先安装Zookeeper

  • 1,下载zookeeper-3.4.5-cdh5.7.0,配置ZK_HOME

  • 2,进入conf目录

    conf目录下默认没有zoo.cfg,需要把zoo_sample.cfg改为zoo.cfg文件

    zk启动的时候会加载zoo.cfg

    修改dataDir=/xxx(默认为系统tmp目录下,重启后数据会丢失)

  • 3,启动zookeeper

    zkServer.sh start #启动zookeeper的服务端

  • 4,利用zkClient连接服务端

    zkCli.sh #启动zookeeper的客户端

安装kafka

注:kafka内置了zookeeper,但是一般使用外面的zookeeper不要使用内置的

  • 1,下载Kafka-2.11-1.10.tgz,解压

  • 2,配置KAFKA_HOME

  • 3,config目录下server.properties

    broker.id=0 在集群中需要设置为唯一的

    zookeeper.connect=localhost:2181

    k1

    k1

  • 4,启动kafka

    kafka-server-start.sh config/server.properties

    看到started,说明启动成功

    1548516605957

2.2 Kafka的单节点单broker的环境部署

  • 5,创建topic

    kafka-topics.sh:创建topic的脚本文件

    kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test

    replication-factor:副本数量

    partitions:分区数量

    出现Created topic "test",说明创建成功

  • 6,显示所有topic

    注:查看topic是通过连接zookeeper得到的信息

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

  • 7,通过生产者发送消息

    kafka-console-producer.sh:控制台生产的脚本,生产的数据可以用于测试topic

    注:生产者生产信息是交给broker进程的

    kafka-console-producer.sh --broker-list localhost:9092 --topic test

  • 8,通过消费者消费消息

    kafka-console-consumer.sh:消费者脚本,为了测试topic

    注:消费者消费信息也是从broker进程中获取的

    kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning

    -from-beginning:从最开始生产队的数据开始消费

  • 9,查看所有topic的详细信息

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

  • 10,查看单个topic的详细信息

    kafka-topics.sh --describe --zookeeper localhost:2181 --topic test

    除了生产者,消费者使用的端口是9092,其余的都是通过连接zookeeper,使用端口2181

2.3 Kafka的单节点多broker的环境部署

  • 1,拷贝server.properties文件

    直接复制一份server.properties,在此基础修改,得到一个新的properties配置文件

    cp config/server.properties config/server-1.properties

    启动多个实例,需要多个properties

  • 2,修改broker.id,为0,1,2

    k1

  • 3,修改listeners端口为9092,9093,9094

    1548517111162

  • 4,修改log.dirs

  • 5,启动kafka

    kafka-server-start.sh -daemon config/serverxxx.properties &

    通过不同的配置文件启动多个kafka

  • 6,创建多副本的topic

    kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 1 --topic my-replicated-topic

  • 7,查看多副本topic的详细信息

    kafka-topics.sh --describe --zookeeper localhost:2181 --topic my-replicated-topic

    由于创建了多副本的topic,数据保存在不同的kafka进程中,那么多个kafka进程存在master和slave关系。

    以下为详细解释:

    Topic: my-replicated-topic Partition: Leader: 1 Replicas: 1,2,0 Isr: 1,2,0

    Leader:主broker

    Replicas:所有的副本

    lsr:保持活动的副本

  • 8,发送消息

    注:对接到三个位置,kafka会记录可能接受信息的三个位置,底层只是leader来接收,其他follower会根据对leader的观察,如果发现数据变动了,我会去leader拷贝。

    kafka-console-producer.sh --broker-list localhost:9092,localhost:9093,localhost:9094 --topic my-replicated-topic

  • 9,消费消息

    kafka-console-consumer.sh --bootstrap-server localhost:9092 --from-beginning --topic my-replicated-topic

2.4 Kafka容错性测试

  • 1,查看单节点多broker主题的详细信息

    kafka-topics.sh --describe --zookeeper localhost:2181 --topic my-replicated-topic

    发现三个broker中有一个主broker,两个从broker

  • 2,杀死其中一个从broker的进程

  • 3,继续观察broker主题的详细信息

    发现主broker没有改变,存活的broker缺少了一个

  • 4,杀死主broker的进程

  • 5,利用生产者发送消息

  • 6,消费者仍然能收到信息

  • 7,查看broker主题的详细信息

    主broker改变为最后存活的那个broker,存活的broker只剩下一个

results matching ""

    No results matching ""