zoukankan      html  css  js  c++  java
  • kafka集群安装

    官方文档:http://kafka.apache.org/documentation/

    其他参考:http://blog.csdn.net/code52/article/details/50475511

    http://www.infoq.com/cn/articles/kafka-analysis-part-1

    http://www.orchome.com/kafka/index

    安装环境:

    • master 192.168.255.120
    • slave1 192.168.255.121
    • slave2 192.168.255.122
    • java环境
    • (可选)zookeeper环境

     安装步骤 

    1、下载解压

    wget  http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/1.0.1/kafka_2.12-1.0.1.tgz

    2、修改配置

    vim /usr/local/kafka_2.12-1.0.1/config/server.properties

    broker.id=0        #每个实例不一样
    listeners=PLAINTEXT://192.168.255.120:9092    #改为所在主机的ip
    advertised.host.name=192.168.255.120     #改为改为所在主机的ip
    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=/kafkalogs                                         #需手动创建,kafka并不会根据配置文件自动创建
    num.partitions=1
    num.recovery.threads.per.data.dir=1
    log.retention.hours=168
    log.segment.bytes=1073741824
    log.retention.check.interval.ms=300000
    zookeeper.connect=192.168.255.120:2181,192.168.255.121:2181,192.168.255.122:2181         #修改为zookeeper所在主机ip:port
    zookeeper.connection.timeout.ms=6000
    delete.topic.enable=true
    auto.create.topics.enable=false

    3、启动

    (1)Kafka依赖ZooKeeper,需要先启动zookeeper,如果自己没安装zookeeper,可以使用和kafka包的自带的zookeeper。

    bin/zookeeper-server-start.sh config/zookeeper.properties

    (2)再启动kafka

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

    4、测试

    (1)在master创建一个名为test的topic

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

    查看topic

    bin/kafka-topics.sh --list --zookeeper 192.168.255.120:2181

    (2)slave1和slave2上创建consumer

    bin/kafka-console-consumer.sh --zookeeper 192.168.255.120:2181 --topic test --from-beginning

    (3)master上创建producer

    bin/kafka-console-producer.sh --broker-list 192.168.255.120:9092 --topic test

     如下图

    Using the ConsoleConsumer with old consumer is deprecated and will be removed in a future major release. Consider using the new consumer by passing [bootstrap-server] instead of [zookeeper].

    这句话的意思:

    现在正在使用的ConsoleConsumer已废弃,在未来的版本将会被删除。考虑通过[bootstrap-server]代替[zookeeper]来使用新的consumer,即创建消费者时,用以下命令:

    bin/kafka-console-consumer.sh --bootstrap-server 192.168.255.120:2181 --topic test --from-beginning

    其他常用命令

    停止kafka

    /usr/local/kafka_2.12-1.0.1/bin/kafka-server-stop.sh

    删除topic

    报错排查

    1、启动时报错:failed; error='Cannot allocate memory' (errno=12) 

    原因:内存不够

    解决办法:1、加内存

    2、杀死占用内存高的进程

    3、修改kafka-server-start.sh

     将export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"

     改为 export KAFKA_HEAP_OPTS="-Xmx256M -Xms128M"

    kafka是什么

    Apache kafka是消息中间件的一种,我发现很多人不知道消息中间件是什么,在开始学习之前,我这边就先简单的解释一下什么是消息中间件,只是粗略的讲解,目前kafka已经可以做更多的事情。

    举个例子,生产者消费者,生产者生产鸡蛋,消费者消费鸡蛋,生产者生产一个鸡蛋,消费者就消费一个鸡蛋,假设消费者消费鸡蛋的时候噎住了(系统宕机了),生产者还在生产鸡蛋,那新生产的鸡蛋就丢失了。再比如生产者很强劲(大交易量的情况),生产者1秒钟生产100个鸡蛋,消费者1秒钟只能吃50个鸡蛋,那要不了一会,消费者就吃不消了(消息堵塞,最终导致系统超时),消费者拒绝再吃了,”鸡蛋“又丢失了,这个时候我们放个篮子在它们中间,生产出来的鸡蛋都放到篮子里,消费者去篮子里拿鸡蛋,这样鸡蛋就不会丢失了,都在篮子里,而这个篮子就是”kafka“。
    鸡蛋其实就是“数据流”,系统之间的交互都是通过“数据流”来传输的(就是tcp、http什么的),也称为报文,也叫“消息”。
    消息队列满了,其实就是篮子满了,”鸡蛋“ 放不下了,那赶紧多放几个篮子,其实就是kafka的扩容。
    各位现在知道kafka是干什么的了吧,它就是那个"篮子"。

    http://www.orchome.com/kafka/index

    术语

    Broker  Kafka集群包含一个或多个服务器,这种服务器被称为broker,broker端不维护数据的消费状态,提升了性能。直接使用磁盘进行存储,线性读写,速度快:避免了数据在JVM内存和系统内存之间的复制,减少耗性能的创建对象和垃圾回收。 

    Topic   每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。Topic在逻辑上可以被认为是一个队列queue,每条消费都必须指定它的Topic,可以简单理解为必须指明把这条消息放进哪个queue里(物理上不同Topic的消息分开存储,逻辑上一个Topic的消息虽然保存于一个或多个broker上但用户只需指定消息的Topic即可生产或消费数据而不必关心数据存于何处)

    Partition  Partition是物理上的概念,每个Topic包含一个或多个Partition. 为了使得Kafka的吞吐率可以线性提高,物理上把Topic分成一个或多个Partition,每个Partition在物理上对应一个文件夹,该文件夹下存储这个Partition的所有消息和索引文件。若创建topic1和topic2两个topic,且分别有13个和19个分区,则整个集群上会相应会生成共32个文件夹

    Producer  负责发布消息到Kafka broker

    Consumer  消息消费者,从Kafka broker读取消息的客户端。consumer从broker拉取(pull)数据并进行处理

    Consumer Group  每个Consumer属于一个特定的Consumer Group(可为每个Consumer指定group name,若不指定group name则属于默认的group)。

  • 相关阅读:
    2019-05-29 EL表达式中使用三目运算符
    2019-05-24 创建redis集群
    2019-05-24 Linux命令ps aux|grep XXX
    2019-05-24 编写批处理脚本;给权限;
    2019-05-24 网站"XXX"求把名为"cookie"的文件存放在你的计算机上,此文件可以
    挣值、预测技术
    挣值、预测
    进度网络计算
    NPV净现值
    Arguments
  • 原文地址:https://www.cnblogs.com/fanren224/p/8577866.html
Copyright © 2011-2022 走看看