• 大数据项目之电商数仓、日志采集Flume测试、日志采集Flume启停脚本


    4. 用户行为数据采集模块

    4.3 日志采集Flume

    4.3.4 日志采集Flume测试

    4.3.4.1 启动Zookeeper、Kafka集群

    在这里插入图片描述

    4.3.4.2 启动hadoop102的日志采集Flume
    [summer@hadoop102 flume-1.9.0]$ bin/flume-ng agent -n a1 -c conf/ -f job/file_to_kafka.conf -Dflume.root.logger=info,console
    
    • 1

    启动一个agent ,-n(name)名字为a1,-c就是找到后面的目录,找到conf目录,-f指定我们job目录下面的file_to_kafka.conf,-Dflume.root.logger=info,console是logger的打印,只在控制台上打印,info级别的,输出到console控制台

    4.3.4.3 启动一个Kafka的Console-Consumer
    [summer@hadoop102 kafka-3.0.0]$ bin/kafka-console-consumer.sh --bootstrap-server hadoop102:9092 --topic topic_log
    
    • 1

    消费topic_log这个主题

    4.3.4.4 生成模拟数据
    [summer@hadoop102 ~]$ lg.sh 
    ========== hadoop102 ==========
    ========== hadoop103 ==========
    [summer@hadoop102 ~]$ cd /opt/module/applog/log/
    [summer@hadoop102 log]$ ll
    总用量 3352
    -rw-rw-r--. 1 summer summer  808665 10月 23 09:27 app.2022-10-23.log
    -rw-rw-r--. 1 summer summer 2388678 10月 25 17:45 app.2022-10-25.log
    [summer@hadoop102 log]$ echo '{id:1}' >> app.2022-10-25.log 
    [summer@hadoop102 log]$ echo '{id:' >> app.2022-10-25.log 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在这里插入图片描述

    4.3.4.5 观察Kafka消费者是否能消费到数据

    通过

    [summer@hadoop102 log]$ echo '{id:1}' >> app.2022-10-25.log 
    [summer@hadoop102 log]$ echo '{id:' >> app.2022-10-25.log 
    
    • 1
    • 2

    这两行代码,可以检查出我们写的拦截器是成功的

    在这里插入图片描述

    在这里插入图片描述

    4.3.5 日志采集Flume启停脚本

    4.3.5.1 分发日志采集Flume配置文件和拦截器

    若上述测试通过,需将hadoop102节点的Flume的配置文件和拦截器jar包,向另一台日志服务器发送一份。直接使用分发脚本。

    4.3.5.2 方便起见,此处编写一个日志采集Flume进程的启停脚本

    nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。

    当使用ps -ef | grep Application

    [summer@hadoop102 log]$ ps -ef | grep Application
    
    • 1

    在这里插入图片描述会多出来一个grep进程,因此可以使用grep -v grep来过滤掉grep进程

    [summer@hadoop102 log]$ ps -ef | grep Application | grep -v grep
    
    • 1

    在这里插入图片描述
    这样就可以查出来想要的进程了,然后把进程号给提取出来,这里使用awk,
    (awk ‘{[pattern] action}’ {filenames} # 行匹配语句 awk ‘’ 只能用单引号)进行切割

    [summer@hadoop102 log]$ ps -ef | grep Application | grep -v grep |awk '{print $2}'
    
    • 1

    在这里插入图片描述提取到我们想要的进程了,然后进行kill进程

    [summer@hadoop102 log]$ kill -9 ps -ef | grep Application | grep -v grep |awk '{print $2}'
    
    • 1

    在这里插入图片描述
    正常顺序的kill命令不能用,他会将-9后面的整体当做字符串,因此我们可以使用xargs -n 反向输出
    在这里插入图片描述
    将进程号为67857的kill了,但是我们还有一个问题,这样写如果有多个Application的进程,多个Flume的job,也都会同时一起杀死,我们不想这样做,因此可以进行改进,可以根据文件名,一台机器上一个Flume的配置只会启动一次,不会启动多次。
    在这里插入图片描述

    [summer@hadoop102 log]$ ps -ef | grep file_to_kafka | grep -v grep | awk '{print $2}'
    
    
    • 1
    • 2

    在这里插入图片描述因此可以使用这个命令进行查询进程号

    在这里插入图片描述
    这样就达到我们想要的结果了。

    但是要是往脚本里面写的话得在awk '{print $2}‘里面多加一个反斜杠,因为最外层有$1了,如果在写$2会和外层冲突,所以加一个’'比较好awk ‘{print $2}’

    在hadoop102节点的/home/summer/bin目录下创建脚本f1.sh
    完整的脚本代码如下:

    #!/bin/bash
    
    case $1 in
    "start"){
            for i in hadoop102 hadoop103
            do
                    echo " --------启动 $i 采集flume-------"
                    ssh $i "nohup /opt/module/flume-1.9.0/bin/flume-ng agent -n a1 -c /opt/module/flume-1.9.0/conf/ -f /opt/module/flume-1.9.0/job/file_to_kafka.conf >/dev/null 2>&1 &"
            done
    };; 
    "stop"){
            for i in hadoop102 hadoop103
            do
                    echo " --------停止 $i 采集flume-------"
                    ssh $i "ps -ef | grep file_to_kafka | grep -v grep |awk  '{print \$2}' | xargs -n1 kill -9 "
            done
    
    };;
    esac
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    在这里插入图片描述

    [summer@hadoop102 applog]$ cd /home/summer/bin/
    [summer@hadoop102 bin]$ vim f1.sh
    
    • 1
    • 2

    在这里插入图片描述

    4.3.5.3 增加脚本执行权限
    [summer@hadoop102 bin]$ chmod 777 f1.sh
    
    • 1

    在这里插入图片描述

    4.3.5.4 f1启动
    [summer@hadoop102 bin]$ f1.sh start
    
    • 1

    在这里插入图片描述

    4.3.5.5 f2停止
    [summer@hadoop102 bin]$ f1.sh stop
    
    • 1

    在这里插入图片描述

  • 相关阅读:
    MySQL数据库之主从复制及读写分离
    非零基础自学Java (老师:韩顺平) 第13章 常用类 13.5 StringBuffer类
    六要素微气象仪
    Thread中的方法测试(run,yield,sleep,start,join等)
    stu02-初识HTML
    七月论文审稿GPT第2版:从Meta Nougat、GPT4审稿到Mistral、LongLora
    Redis基础
    HTTP协议 学习笔记
    复习十二:广义表
    计算机毕业设计springboot+vue基本微信小程序的乐旋乒乓球课程管理系统 uniapp 小程序
  • 原文地址:https://blog.csdn.net/Redamancy06/article/details/127522551