当前位置: 首页 > article >正文

Kafka-linux环境部署

Kafka在Linux环境下的安装,以及一点点的kafka实战运维优化经验

部署

官网地址:https://kafka.apache.org/

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

注:Kafka是用Scala语言开发的,运行在JVM上,因此需要jdk做为基础环境,使用jdk1.8以上的版本。

找到kafka_2.13-2.8.1.tgz包进行下载。详细的安装步骤如下:

  • 创建目录上传jdk文件

    mkdir /soft
    cd /soft
    
  • 解压kafka压缩文件

    tar -zxvf kafka_2.13-2.8.1.tgz
    
  • 提前创建配置文件中所有的文件夹

    mkdir -p /opt/software/kafka
    # zookeeper数据目录
    mkdir -p /soft/kafka_2.13-2.8.1/zookeeper  
    # kafka日志
    mkdir -p /soft/kafka_2.13-2.8.1/kafka/log        
    # zookeeper日志
    mkdir -p /soft/kafka_2.13-2.8.1/zookeeper/log 
    
  • 修改zookeeper的配置文件zookeeper.properties

    # 切换目录
    cd /soft/kafka_2.13-2.8.1/config
    # 编辑 zookeeper配置文件
    vim zookeeper.properties
    
    # zookeeper数据目录
    dataDir=/soft/kafka_2.13-2.8.1/zookeeper
    # zookeeper日志目录
    dataLogDir=/soft/kafka_2.13-2.8.1/zookeeper/log
    # 更改zookeeper端口
    clientPort=2181
    maxClientCnxns=100
    tickTimes=2000
    initLimit=10
    syncLimit=5
    
    
  • 修改kafka的配置文件server.properties

    # 切换目录
    cd /soft/kafka_2.13-2.8.1/config
    # 编辑 kafka配置文件
    vim server.properties
    ######   server.properties开始     ######
    # 设置ip端口 (阿里云服务器,使用内网ip地址)
    listeners=PLAINTEXT://172.17.123.108:9092
    #日志存放路径,上面创建的目录
    log.dirs=/soft/kafka_2.13-2.8.1/kafka/log
    #zookeeper地址和端口,单机配置部署,localhost:2181
    zookeeper.connect=172.17.123.108:2181
    ######   server.properties结束     ######
    
    # 查看服务器网卡ip 作为kafka 和 zookeeper 的ip
    ip addr
    
  • 启动kafka

    # 切换目录
    cd /soft/kafka_2.13-2.8.1/bin
       
    # 优先启动 zookeeper
    ./zookeeper-server-start.sh /soft/kafka_2.13-2.8.1/config/zookeeper.properties &
    # 再启动 kafka
    ./kafka-server-start.sh /soft/kafka_2.13-2.8.1/config/server.properties &
    

基础指令

以下主要介绍topic的创建、插件,生产者发送消息,消费者消费消息的基础脚本指令的使用

# 查看topic数据
./kafka-topics.sh --bootstrap-server 8.140.224.210:9092 --list
# 创建topic
./kafka-topics.sh --create --topic <your_topic_name> --bootstrap-server localhost:9092 --partitions <num_partitions> --replication-factor <replication_factor>
--topic <your_topic_name>:指定你要创建的 Topic 名称。
--bootstrap-server localhost:9092:Kafka 服务的地址。
--partitions <num_partitions>:为该 Topic 指定的分区数量。
--replication-factor <replication_factor>:副本因子,单机环境下通常设置为 1。
./kafka-topics.sh --create --topic data0912 --bootstrap-server 8.140.224.210:9092 --partitions 1 --replication-factor 1    
# 生产消息
./kafka-console-producer.sh --topic data0912 --bootstrap-server 8.140.224.210:9092    
# 消费消息
./kafka-console-consumer.sh --topic data0912 --bootstrap-server 8.140.224.210:9092 --from-beginning

服务运维

  • 服务器磁盘爆满,导致kafka服务崩溃

    当别人通过kafka给我推送十几亿文本数据时,我正常批量读取数据,且多线程的处理数据,也验证了消费数据是极快的,不会造成kafka数据的挤压。但是还是导致了kafka服务的崩溃,排查后发现云服务器100GB的磁盘已经爆满,便在排查时发现kakfa默认保存近七天的数据,而我一天的数据就超过了100GB。具体的解决方案如下:

    # 1.查看kafka的配置文件  server.properties 中log文件的存放位置 log.dirs=/soft/kafka_2.13-2.8.1/kafka/log
    cd /soft/kafka_2.13-2.8.1/config
    cat server.properties
    # 2.切换到log文件下查看,那个topic目录下的磁盘空间占用过大
    cd /soft/kafka_2.13-2.8.1/kafka/log
    # 查看log文件下占用磁盘严重的目录
    du -sh *
    # 切换到 对应的目录
    cd cd data0912-0
    #3.删除较早的***.log文件
    # 目录下存在众多***.index,***.log文件;***.index中存放的消息物理位置的偏移量;***.log中存放的是消息的实际内容
    # log文件默认存放时间为 7天;7天内所有数据都进行存储,就会导致磁盘爆破的问题
    rm -rf *.log
    #4.更改配置文件
    cd /soft/kafka_2.13-2.8.1/config
    vim server.properties
    # 更改以下配置
    # segment 文件保留时间(默认168小时 7天)
    #log.retention.hours=168
    # segment 文件的保留时间改为 5小时
    log.retention.hours=5
    # 日志文件中 每个segment 文件默认大小 为1g
    log.segment.bytes=1073741824
    # 多久时间扫描一次 日志文件的大小 (单位:毫秒) 五分钟
    log.retention.check.interval.ms=300000
    # kakfa 从0.10.0版本之后不再需要通过以下配置来启动日志清理策略;直接按照 留存时间、文件大小,进行清理
    # 日志清理配置 开始
    # 以segment为基本单位进行定期清理,当前正在使用的segment不会被清理。
    # 日志清理是否打开
    log.cleaner.enable=ture
    # 多线程清理,提高数据清理速度
    log.cleaner.threads=2
    # 采用日志删除策略进行删除
    log.cleanup.policy=delete
    # 日志清理配置 结束
    #5.重启kafka
    

http://www.kler.cn/a/389553.html

相关文章:

  • 树形dp总结
  • 大数据开发面试宝典
  • python: postgreSQL using psycopg2 or psycopg
  • 俏美韵从心出发,与女性一道为健康生活贡献力量
  • 使用Python实现定期从API获取数据并存储到数据库的完整指南
  • 【初阶数据结构与算法】链表刷题之移除链表元素、反转链表、找中间节点、合并有序链表、链表的回文结构
  • ssm077铁岭河医院医患管理系统+vue(论文+源码)_kaic
  • http协议与内外网的划分
  • uni-app资源管理与图标使用全解
  • Android 获取 SHA1 值的详细步骤
  • 【系统架构设计师】2024年下半年真题论文: 论面向服务的架构设计(包括解题思路和参考素材)
  • 【Linux探索学习】第十二弹——初识进程:进程的定义、描述和一些简单的相关操作
  • Spring Boot框架:构建符合工程认证的计算机课程
  • AIGC:人工智能生成内容的未来
  • 【C#】C# .NET中的Func、Predicate和Expression详解
  • 脉脉大数据面试题及参考答案(2万字长文)
  • Latex中给公式加边框
  • 「Qt Widget中文示例指南」如何创建一个窗口标志?(一)
  • SCNU习题 总结与复习
  • Sql面试题(一)求排名top10
  • json即json5新特性,idea使用json5,fastjson、gson、jackson对json5支持
  • 【李白打酒加强版——DP】
  • 【C++刷题】力扣-#706-设计哈希映射
  • 泷羽sec学习打卡-Windows基础virus
  • 使用UDP协议传输视频流!(分片、缓存)
  • Java 基于 SpringBoot+Vue 的社区药房销售系统