zoukankan      html  css  js  c++  java
  • 大数据实时存储平台构建

    1.下载kafka安装包并解压

    # wget https://dlcdn.apache.org/kafka/2.6.2/kafka_2.13-2.6.2.tgz
    # tar -zxvf kafka_2.13-2.6.2.tgz -C /home/hadoop/app/
    # ln -s /home/hadoop/app/kafka_2.13-2.6.2 /home/hadoop/app/kafka
    

    2.修改配置文件/home/hadoop/app/kafka/config

    # cd /home/hadoop/app/kafka/config
    # vim server.properties
    broker.id=1
    log.dirs=/home/hadoop/data/kafka/kafka-logs
    zookeeper.connect=dba-01:2181,dba-02:2181,dba-03:2181,dba-04:2181,dba-05:2181/kafka
    listeners=PLAINTEXT://dba-01:9092 --集群模式必须配置,否则以后的操作会报找不到leader的错误
    
    
    参数说明:
    【broker.id】:每个broker都必须自己设置的一个唯一id,可以在0~255之间
    【log.dirs】:这个极为重要,kafka的所有数据就是写入这个目录下的磁盘文件中的,如果说机器上有多块物理硬盘,那么可以把多个目录挂载到不同的物理硬盘上,然后这里可以设置多个目录,这样kafka可以数据分散到多块物理硬盘,多个硬盘的磁头可以并行写,这样可以提升吞吐量。ps:多个目录用英文逗号分隔
    【zookeeper.connect】:连接kafka底层的zookeeper集群的
    【Listeners】:broker监听客户端发起请求的端口号,默认是9092
    【num.network.threads】默认值为3
    【num.io.threads】默认值为8,细心的朋友们应该已经发现了,这就是上一篇我们在网络架构上提到的processor和处理线程池的线程数目。所以说掌握Kafka网络架构显得尤为重要。现在你看到这两个参数,就知道这就是Kafka集群性能的关键参数了【unclean.leader.election.enable】 默认是false,意思就是只能选举ISR列表里的follower成为新的leader,1.0版本后才设为false,之前都是true,允许非ISR列表的follower选举为新的leader
    【delete.topic.enable】 默认true,允许删除topic
    【log.retention.hours】可以设置一下,要保留数据多少个小时,这个就是底层的磁盘文件,默认保留7天的数据,根据自己的需求来就行了
    【min.insync.replicas】acks=-1(一条数据必须写入ISR里所有副本才算成功),你写一条数据只要写入leader就算成功了,不需要等待同步到follower才算写成功。但是此时如果一个follower宕机了,你写一条数据到leader之后,leader也宕机,会导致数据的丢失。
    

    3.配置环境变量(broker节点都要配置)

    # vim ~/.bash_profile
    #KAFKA_HOME 
    export KAFKA_HOME=/home/hadoop/app/kafka 
    export PATH=$PATH:$KAFKA_HOME/bin
    
    #source ~/.bash_profile
    

    4.启动集群

    # kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties
    

    5.关闭集群

    # kafka-server-stop.sh
    

    6.集群测试

    # 测试生产数据
    # kafka-producer-perf-test.sh --topic test-topic --num-records 500000 --record-size 200 --throughput -1 --producer-props bootstrap.servers=dba-03:9092,dba-04:9092,dba-05:9092 acks=-1
    # 测试消费数据
    # kafka-consumer-perf-test.sh --broker-list dba-03:9092,dba-04:9092,dba-05:9092 --fetch-size 2000 --messages 500000 --topic test-topic 
    
    6.1.生产者
    6.1.1 batch.size(所处理的数据批次大小)
    ./bin/kafka-producer-perf-test.sh  --topic kf_perfromance_test --num-records 1000000 --record-size 687 --producer-props bootstrap.servers=dba-01:9092,dba-02:9092,dba-03:9092 batch.size=5000 --throughput 30000
    
    ./bin/kafka-producer-perf-test.sh  --topic kf_perfromance_test --num-records 1000000 --record-size 687 --producer-props bootstrap.servers=dba-01:9092,dba-02:9092,dba-03:9092 batch.size=10000  --throughput 30000
    
    ./bin/kafka-producer-perf-test.sh  --topic kf_perfromance_test --num-records 1000000 --record-size 687 --producer-props bootstrap.servers=dba-01:9092,dba-02:9092,dba-03:9092 batch.size=20000  --throughput 30000
    
    ./bin/kafka-producer-perf-test.sh  --topic kf_perfromance_test --num-records 1000000 --record-size 687 --producer-props bootstrap.servers=dba-01:9092,dba-02:9092,dba-03:9092 batch.size=40000  --throughput 30000
    
    ./bin/kafka-producer-perf-test.sh  --topic kf_perfromance_test --num-records 1000000 --record-size 687 --producer-props bootstrap.servers=dba-01:9092,dba-02:9092,dba-03:9092 batch.size=60000  --throughput 30000
    
    ./bin/kafka-producer-perf-test.sh  --topic kf_perfromance_test --num-records 1000000 --record-size 687 --producer-props bootstrap.servers=dba-01:9092,dba-02:9092,dba-03:9092 batch.size=80000  --throughput 30000
    
    结论:批次越大,处理时间延迟越小。批次为5000时,吞吐能力最强,整体吞吐能力相差不大。
    
    6.1.2 throughput(吞吐量,单位时间内处理消息的数量)
    ./bin/kafka-producer-perf-test.sh  --topic kf_perfromance_test --num-records 10000000 --record-size 687 --producer-props  bootstrap.servers=dba-01:9092,dba-02:9092,dba-03:9092 batch.size=40000 --throughput 100000
    
    ./bin/kafka-producer-perf-test.sh  --topic kf_perfromance_test --num-records 10000000 --record-size 687 --producer-props  bootstrap.servers=dba-01:9092,dba-02:9092,dba-03:9092 batch.size=40000 --throughput 250000
    
    ./bin/kafka-producer-perf-test.sh  --topic kf_perfromance_test --num-records 10000000 --record-size 687 --producer-props  bootstrap.servers=dba-01:9092,dba-02:9092,dba-03:9092 batch.size=40000 --throughput 350000
    
    ./bin/kafka-producer-perf-test.sh  --topic kf_perfromance_test --num-records 10000000 --record-size 687 --producer-props  bootstrap.servers=dba-01:9092,dba-02:9092,dba-03:9092 batch.size=40000 --throughput 400000
    
    ./bin/kafka-producer-perf-test.sh  --topic kf_perfromance_test --num-records 10000000 --record-size 687 --producer-props  bootstrap.servers=dba-01:9092,dba-02:9092,dba-03:9092 batch.size=40000 --throughput 500000
    
    ./bin/kafka-producer-perf-test.sh  --topic kf_perfromance_test --num-records 10000000 --record-size 687 --producer-props  bootstrap.servers=dba-01:9092,dba-02:9092,dba-03:9092 batch.size=40000 --throughput 600000
    

    7.kafka集群监控(待续)

  • 相关阅读:
    第 1 章 代码无错便是优?——简单工厂模式
    [转载]由浅入深探究mysql索引结构原理、性能分析与优化
    jquery中 $.expr使用实例介绍
    jQuery UI Widget(1.8.1)工作原理
    asp.net url重写
    CJL.0.1.js
    React Context 的用法
    小程序组件使用
    深入理解es5中Object.defineProperty()
    React合成事件
  • 原文地址:https://www.cnblogs.com/slqdba/p/15702860.html
Copyright © 2011-2022 走看看