• Kafka 简介及Centos 6.5环境下的安装


    kafka简介
    官网:它是一个分布式的流处理平台

    Apache Kafka是一个开源消息系统,由Scala写成。是由Apache软件基金会开发的一个开源消息系统项目。
    Kafka最初是由LinkedIn开发,并于2011年初开源。2012年10月从Apache Incubator毕业。该项目的目标是为处理实时数据提供一个统一、高通量、低等待的平台。
    Kafka是一个分布式消息队列。Kafka对消息保存时根据Topic进行归类,发送消息者称为Producer,消息接受者称为Consumer,此外kafka集群有多个kafka实例组成,每个实例(server)成为broker。
    无论是kafka集群,还是producer和consumer都依赖于zookeeper集群保存一些meta信息,来保证系统可用性。


    什么kafka:
    它其实一个消息中间件,以类似于消息队列方式进行流数据读写操作,
    主要用于流式数据管道处理,处理数据具体分布式、副本、容错性特征

     Kafka为什么会诞生

    无论是kafka集群,还是producer和consumer都依赖于zookeeper集群保存一些meta信息,来保证系统可用性。
    能统一管理所有的消息队列,不是特殊需求不需要开发者自己去维护;
    高效率的存储消息;
    消费者能快速的找到想要消费的消息;

     

    单机吞吐量
    10万级别,这是kafka最大的优势,就是他的吞吐量高,一般配合大数据类的系统来进行实施数据计算,日志采集等场景

    topic数据对吞吐量的影响
    topic从几十个到上百个不等,但是topic越多,会很大程度的影响吞吐量,所以在同等机器下,kafka经量保证topic数量不要过度。如果要支撑大规模的topic的话,需要增加更多的集群资源。
    时效性
    负载均衡
    可用性
    非常高,kafka是分布是的,一个数据多个副本,少数机器的宕机,不会丢数据,不会导致不可用
    消息可靠

    概述:
    1、它读写数据是类似于一个消息系统

    消息系统作用:
    1、解耦

     

    Kafka架构模型

    Producer:生产者
    Consumer:消费者
    Broker:kafka服务器(盘子)
    Topic:数据抽象的集合

    Producer :消息生产者,就是向kafka broker发消息的客户端。
    Consumer :消息消费者,向kafka broker取消息的客户端。
    topic:主题,里面是一类消息的抽象的集合,说白了这下面就是用来装各种数据的
    Broker :一台kafka服务器就是一个broker。一个集群由多个broker组成。一个broker可以容纳多个topic。
    Partition:为了实现扩展性,一个非常大的topic可以分布到多个broker(即服务器)上,一个topic可以分为多个partition,每个partition是一个有序的队列。partition中的每条消息都会被分配一个有序的id(offset)。kafka只保证按一个partition中的顺序将消息发给consumer,不保证一个topic的整体(多个partition间)的顺序。
    Offset:kafka的存储文件都是按照offset.kafka来命名,用offset做名字的好处是方便查找。例如你想找位于2049的位置,只要找到2048.kafka的文件即可。当然the first offset就是00000000000.kafka

    Kafka模型组件

    Consumer Group (CG):这是kafka用来实现一个topic消息的广播(发给所有的consumer)和单播(发给任意一个consumer)的手段。一个topic可以有多个CG。topic的消息会复制(不是真的复制,是概念上的)到所有的CG,但每个partion只会把消息发给该CG中的一个consumer。如果需要实现广播,只要每个consumer有一个独立的CG就可以了。要实现单播只要所有的consumer在同一个CG。用CG还可以将consumer进行自由的分组而不需要多次发送消息到不同的topic。

    kafka集群安装配置

    kafka的安装

    三台机器安装zookeeper

    注意:安装zookeeper之前一定要确保三台机器时钟同步

    */1 * * * * /usr/sbin/ntpdate us.pool.ntp.org;

    三台机器配置文件修改


    tickTime=2000

    initLimit=10

    syncLimit=5

    dataDir=/home/hadoop/bigdatasoftware/zookeeper-3.4.13/zkdata

    dataLogDir=/home/hadoop/bigdatasoftware/zookeeper-3.4.13/zkdata

    clientPort=2181

    autopurge.purgeInterval=1

    autopurge.snapRetainCount=3

    server.1=hadoop-001:2888:3888

    server.2=hadoop-002:2888:3888

    server.3=hadoop-003:2888:3888


     

    三台机器分别在/export/servers/zookeeper-3.4.9/zkData/data 目录下添加文件myid,并编辑每个文件中的内容


    hadoop-001 机器myid内容为20

    hadoop-002机器myid内容为21

    hadoop-003机器myid内容为22


    三台机器启动zookeeper


    bin/zkServer.sh  start


     

    三台机器安装kafka集群

     下载kafka安装压缩包

    http://archive.apache.org/dist/kafka/

    上传压缩包并解压

    这里统一使用  kafka_2.11-1.0.0.tgz 这个版本

     修改kafka配置文件

    第一台机器修改kafka配置文件server.properties


    broker.id=0

    num.network.threads=3

    num.io.threads=8

    socket.send.buffer.bytes=102400

    socket.receive.buffer.bytes=102400

    socket.request.max.bytes=104857600

    log.dirs=/home/hadoop/bigdatasoftware/kafka_2.11-1.0.0/logs

    num.partitions=2

    num.recovery.threads.per.data.dir=1

    offsets.topic.replication.factor=1

    transaction.state.log.replication.factor=1

    transaction.state.log.min.isr=1

    log.flush.interval.messages=10000

    log.flush.interval.ms=1000

    log.retention.hours=168

    log.segment.bytes=1073741824

    log.retention.check.interval.ms=300000

    zookeeper.connect=hadoop-001:2181,hadoop-002:2181,hadoop-003:2181

    zookeeper.connection.timeout.ms=6000

    group.initial.rebalance.delay.ms=0

    delete.topic.enable=true

    host.name=hadoop-001


     

    第二台机器修改kafka配置文件server.properties


    broker.id=1

    num.network.threads=3

    num.io.threads=8

    socket.send.buffer.bytes=102400

    socket.receive.buffer.bytes=102400

    socket.request.max.bytes=104857600

    log.dirs=/home/hadoop/bigdatasoftware/kafka_2.11-1.0.0/logs

    num.partitions=2

    num.recovery.threads.per.data.dir=1

    offsets.topic.replication.factor=1

    transaction.state.log.replication.factor=1

    transaction.state.log.min.isr=1

    log.flush.interval.messages=10000

    log.flush.interval.ms=1000

    log.retention.hours=168

    log.segment.bytes=1073741824

    log.retention.check.interval.ms=300000

    zookeeper.connect=hadoop-001:2181,hadoop-002:2181,hadoop-003:2181

    zookeeper.connection.timeout.ms=6000

    group.initial.rebalance.delay.ms=0

    delete.topic.enable=true

    host.name=hadoop-002


     

    第三台机器修改kafka配置文件server.properties


    broker.id=2

    num.network.threads=3

    num.io.threads=8

    socket.send.buffer.bytes=102400

    socket.receive.buffer.bytes=102400

    socket.request.max.bytes=104857600

    log.dirs=/home/hadoop/bigdatasoftware/kafka_2.11-1.0.0/logs

    num.partitions=2

    num.recovery.threads.per.data.dir=1

    offsets.topic.replication.factor=1

    transaction.state.log.replication.factor=1

    transaction.state.log.min.isr=1

    log.flush.interval.messages=10000

    log.flush.interval.ms=1000

    log.retention.hours=168

    log.segment.bytes=1073741824

    log.retention.check.interval.ms=300000

    zookeeper.connect=hadoop-001:2181,hadoop-002:2181,hadoop-003:2181

    zookeeper.connection.timeout.ms=6000

    group.initial.rebalance.delay.ms=0

    delete.topic.enable=true

    host.name=hadoop-003


     

    启动kafka集群

    三台机器启动kafka服务


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

    nohup bin/kafka-server-start.sh config/server.properties > /dev/null 2>&1 &    后台启动命令


     

  • 相关阅读:
    選定下拉列表的方法
    JAVA学习路线
    封装
    重写(Overriding)
    java内存泄露
    学习实例.文章管理.文章类.Article.java
    方法重载
    学习实例.文章管理.分页查询类.Page.java
    学习实例.文章管理.目标与经验总结
    Java多线程1
  • 原文地址:https://www.cnblogs.com/Transkai/p/10873135.html
Copyright © 2020-2023  润新知