zoukankan      html  css  js  c++  java
  • linux 安装kafka

    kafka作用:
        1、降低系统组网复杂度。
        2、降低编程复杂度,各个子系统不在是相互协商接口,各个子系统类似插口插在插座上,Kafka承担高速数据总线的作用。
    Kafka主要特点:
        1、同时为发布和订阅提供高吞吐量。据了解,Kafka每秒可以生产约25万消息(50 MB),每秒处理55万消息(110 MB)。
        2、可进行持久化操作。将消息持久化到磁盘,因此可用于批量消费,例如ETL,以及实时应用程序。通过将数据持久化到硬盘以及replication防止数据丢失。
        3、分布式系统,易于向外扩展。所有的producer、broker和consumer都会有多个,均为分布式的。无需停机即可扩展机器。
        4、消息被处理的状态是在consumer端维护,而不是由server端维护。当失败时能自动平衡。
        5、支持online和offline的场景。
    Kafka的设计要点:
        1、直接使用linux 文件系统的cache,来高效缓存数据。
        2、采用linux Zero-Copy提高发送性能。传统的数据发送需要发送4次上下文切换,采用sendfile系统调用之后,数据直接在内核态交换,系统上下文切换减少 为2次。根据测试结果,可以提高60%的数据发送性能。Zero-Copy详细的技术细节可以参考:https://www.ibm.com /developerworks/linux/library/j-zerocopy/
        3、数据在磁盘上存取代价为O(1)。kafka以topic来进行消息管理,每个topic包含多个part(ition),每个part对应一 个逻辑log,有多个segment组成。每个segment中存储多条消息(见下图),消息id由其逻辑位置决定,即从消息id可直接定位到消息的存储 位置,避免id到位置的额外映射。每个part在内存中对应一个index,记录每个segment中的第一条消息偏移。发布者发到某个topic的消息 会被均匀的分布到多个part上(随机或根据用户指定的回调函数进行分布),broker收到发布消息往对应part的最后一个segment上添加该消 息,当某个segment上的消息条数达到配置值或消息发布时间超过阈值时,segment上的消息会被flush到磁盘,只有flush到磁盘上的消息 订阅者才能订阅到,segment达到一定的大小后将不会再往该segment写数据,broker会创建新的segment。
        4、显式分布式,即所有的producer、broker和consumer都会有多个,均为分布式的。Producer和broker之间没有负 载均衡机制。broker和consumer之间利用zookeeper进行负载均衡。所有broker和consumer都会在zookeeper中进 行注册,且zookeeper会保存他们的一些元数据信息。如果某个broker和consumer发生了变化,所有其他的broker和 consumer都会得到通知。

    linux 安装kafka
        1、确认jdk是否已安装
        2、确认zookeeper是否已安装
            安装步骤:
                1、下载安装zookeeper 官网让我们移步到国内镜像下载
                    http://mirrors.hust.edu.cn/apache/zookeeper/
                    选择带有“bin”的版本,如apache-zookeeper-3.5.8-bin.tar.gz
                2、将下载的压缩包放到usr/local/目录下
                3、cd usr/local,然后解压apache-zookeeper-3.5.8-bin.tar.gz
                    tar -zxvf apache-zookeeper-3.5.8-bin.tar.gz
                4、配置环境变量
                    vi /etc/profile
                5、添加环境变量
                    export zookeeper_home=/usr/local/apache-zookeeper-3.5.8-bin(zookeeper目录路径)
                6、刷新环境变量配置文件 使配置文件生效
                    source /etc/profile
                6、新版的conf目录下没有zoo.cfg配置文件,需要手动添加一个配置文件,根据zoo_sample.cfg新增
                7、cd /usr/local/apache-zookeeper-3.5.8-bin/bin 目录下启动
                    ./zkServer.sh start
                8、由于zookeeper启动默认端口是8080,占用是经常的情况,因此需要修改服务的端口号
                   在zoo.cfg修改或是新增配置:admin.serverPort=8084,端口号根据实际情况而定
                9、最终看到STARTED则启动成功
        3、安装kafka
            1、下载地址:http://kafka.apache.org/downloads
            2、解压压缩包:tar -xzvf kafka_2.13-2.6.1.tgz
            3、修改server.properties文件,修改内容为:
                broker.id=0
                port=8087 #端口号 ,根据需要设置
                host.name=localhost #单机可直接用localhost
                log.dirs=/usr/local/kafka_2.13-2.6.1/log #日志存放路径可修改可不修改
                zookeeper.connect=localhost:2181 #zookeeper地址和端口,单机配置部署,localhost:2181
            4、修改zookeeper.properties文件,修改内容为:
                dataDir=/usr/local/kafka_2.13-2.6.1/zookeeper/data/dataDir  #zookeeper数据目录  (可以修改可以不修改)
                dataLogDir=/usr/local/kafka_2.13-2.6.1/zookeeper/data/dataLogDir #zookeeper日志目录 (可以修改可以不修改)
                clientPort=2181
                maxClientCnxns=100
                tickTime=2000
                initLimit=10
            5、启动kafka,启动前,先启动zookeeper
                cd /usr/local/kafka_2.13-2.6.1/bin
                执行 ./kafka-server-start.sh ../config/server.properties &
            6、创建topic 出现Created topid test 则创建成功
                ./kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test

  • 相关阅读:
    iostream迭代器操作"txt文本文件"无法写入的思考
    Qt 相对路径 绝对路径
    "lambda"和“bind”的初步思考
    "partition"和“stable_partition”的思考
    "accumulate"的思考
    顺序容器“inset”的思考
    C++重载函数 const形参 引用指针 const_cast
    C++ 可变参数的函数
    JDK8流式处理常用例子
    JDK8时间新API
  • 原文地址:https://www.cnblogs.com/vofill/p/14273147.html
Copyright © 2011-2022 走看看