kafka学习之(一)基础知识和环境搭建

kafka官网

kafka系统教程

Apache Kafka是分布式发布-订阅消息系统。它最初由LinkedIn公司开发,之后成为Apache项目的一部分。Kafka是一种快速、可扩展的、设计内在就是分布式的,分区的和可复制的提交日志服务。

Apache Kafka与传统消息系统相比,有以下不同:

      • 它被设计为一个分布式系统,易于向外扩展;

      • 它同时为发布和订阅提供高吞吐量;

      • 它支持多订阅者,当失败时能自动平衡消费者;

      • 它将消息持久化到磁盘,因此可用于批量消费,例如ETL,以及实时应用程序。

         
         

优缺点

1.优点

        • 高性能和高吞吐率
        • 支持消息无限堆积,消息存储在磁盘上,存取复杂度为O(1)
        • 支持多分区,同一个partition内保证消息顺序
        • 分布式,易于扩展

2.缺点

      • Kafka不保证严格的消息顺序。
      • 消息可能有丢失,broker没有副本机制,一旦broker宕机,该broker的消息将都不可用。
      • 没有消息确认机制,哪些消息已消费需由consumer维护

 1,安装kafka前先安装zoo keeper

 

 安装 kafka

下载地址:https://kafka.apache.org/downloads

wget http://mirrors.shuosc.org/apache/kafka/1.0.0/kafka_2.11-1.0.0.tgz

windows注意下载binary版本
下载时注意kafka版本和是否支持jdk版本

解压:

tar -zxvf kafka_2.11-1.0.0.tgz
cd /usr/local/kafka_2.11-1.0.0/

修改 kafka-server 的配置文件
vim /usr/local/kafka/config/server.properties


修改其中的:修改  config/server.properties文件(多节点的话,每个节点都修改一下)

broker.id=1
log.dir=/data/kafka/logs-1

上面的端口必须放开,并且写你的真实IP地址






1、启动 zk

使用安装包中的脚本启动单节点 Zookeeper 实例:

bin/zkServer.sh -daemon config/zookeeper.properties

2.查看zookeeper状态
  ./zkServer.sh status

3.使用 kafka-server-start.sh 启动 kafka 服务:

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

 

表示kafka启动成功

 5,bin目录创建test

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

6,查看有哪些topic bin目录下

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

 

7,查看某一个topic数据:

./kafka-console-producer.sh --broker 192.168.1.32:9092 --topic test

8,使用 kafka-console-producer.sh 发送消息:

9,使用 kafka-console-consumer.sh 接收消息并在终端打印:

 

 10、查看描述 topics 信息

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

 

第一行给出了所有分区的摘要,每个附加行给出了关于一个分区的信息。 由于我们只有一个分区,所以只有一行。

“Leader”: 是负责给定分区的所有读取和写入的节点。 每个节点将成为分区随机选择部分的领导者。

“Replicas”: 是复制此分区日志的节点列表,无论它们是否是领导者,或者即使他们当前处于活动状态。

“Isr”: 是一组“同步”副本。这是复制品列表的子集,当前活着并被引导到领导者。

 

kafka自启动:

cd /etc/rc.d/init.d

touch kafka 

chmod +x kafka 

chkconfig --add kafka   添加到服务器中

chkconfig kafka on 设置开机自动启动

#!/bin/bash  
#chkconfig:2345 30 80  
#description:kafka  
#processname:kafka  
case $1 in  
 start) su root /usr/local/kafka_2.11-0.9.0.1/bin/kafka-server-start.sh  /usr/local/kafka_2.11-0.9.0.1/config/server.properties;;  
 stop) su root /usr/local/kafka_2.11-0.9.0.1/bin/kafka-server-stop.sh  /usr/local/kafka_2.11-0.9.0.1/config/server.properties;;  
 *)  echo "require start|stop"  ;;  
esac

 

 

常用命令

 
启动kafka:

/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties&

 

关闭kafka(关闭机器以前,一定要使用此命令来关闭kafka以后再进行关闭,否则启动时,有丢失队列中数据的风险)

/usr/local/kafka/bin/kafka-server-stop.sh

 

创建topic
 
/usr/local/kafka/bin/kafka-topics.sh --create--zookeeper hd1:2222,hd2:2222,hd3:2222,hd4:2222,hd5:2222 --replication-factor 3 --partitions 2 --topic nginx_total1
 
--replication-factor  副本数量
--partitions  分区数量,调用的时候,编号从0开始
--topic       主题的名称
 
重启kafka: bin/kafka-server-start.sh config/server.properties &

Windows平台kafka环境的搭建

 

ZooKeeper服务命令: ZooKeeper学习总结

     在准备好相应的配置之后,可以直接通过zkServer.sh 这个脚本进行服务的相关操作

    • 1. 启动ZK服务:       sh bin/zkServer.sh start
    • 2. 查看ZK服务状态: sh bin/zkServer.sh status
    • 3. 停止ZK服务:       sh bin/zkServer.sh stop
    • 4. 重启ZK服务:       sh bin/zkServer.sh restart

      检测zookeeper是否启动:echo ruok | nc localhost 2181

       

windows kafka安装及问题解决

 

Kafka集群配置---Windows版

查看某一个topic数据:
./kafka-list-topic.sh-zookeeper 127.0.0.1:2181,127.0.0.1:2181-topic ThirdCaptureAccess

./kafka-console-producer.sh --broker 192.168.1.32:9092 --topic ThirdCaptureAccess


 ./kafka-topics.sh --create --zookeeper 192.168.1.32:2181 --replication-factor 1 --partitions 1 --topic ThirdCaptureAccess


./kafka-console-consumer.sh --zookeeper 192.168.1.32:2181 --topic ThirdCaptureAccess


./kafka-console-consumer.sh --zookeeper 192.168.1.32:2181 --topic Capture

 

 

  • 查看topic分布情况kafka-list-topic.sh:

    bin/kafka-list-topic.sh-zookeeper 192.168.197.170:2181,192.168.197.171:2181 (列出所有topic的分区情况)

    bin/kafka-list-topic.sh-zookeeper 192.168.197.170:2181,192.168.197.171:2181-topic test (查看test的分区情况)

  • 创建topickafka-create-topic.sh:

    bin/kafka-create-topic.sh-replica 2-partition 8-topic test-zookeeper 192.168.197.170:2181,192.168.197.171:2181

    创建名为test的topic,8个分区分别存放数据,数据备份总共2份。

posted on 2018-01-09 11:03  让代码飞  阅读(173)  评论(0)    收藏  举报

导航

一款免费在线思维导图工具推荐:https://www.processon.com/i/593e9a29e4b0898669edaf7f?full_name=python