大数据常用shell脚本之fl脚本

一、前置准备

CentOS7、jdk1.8、zookeeper-3.5.7、kafka-2.4.1、flume-1.9.0

想要完成本期视频中所有操作,需要以下准备大数据杀熟

二、简hadoop生态系统单了解

​nohup​​​可以在你退出帐户/关闭终端之后继续运相应的进程。nohup就是不挂起的意思, 不挂断地运命令。​​awk​​​ 默认分隔符shellfish为空格,​​xargs​示取出前面命令运行的结果, 作为后面命令的输入参数

大家对kill -系统运维包括哪些内容9 肯定非常熟悉,-后面的数字代信号编号

系统运维面试题及答案kkafkaill 进程号​​​ 相当于执行了​​kill -15 进程号​​,15代表SIGTERM信号后,大部分程序会先释放自己的资源,然后再停止,也就是说,SIGTERM多半是会被阻塞、忽略的。

​kill系统运维包括哪些内容 -9 进程号​​,9代表SIGKILL信号,即杀死信号。该信号不会被系统阻塞,所以能顺利杀掉进程。

Taildlinux必学的60个命令ir Source 相比 Exec Source、 Spooling Directory Source 的优势

​TailDir Source​​: 断点续传目录

​Exec Source​​:可以实时搜集数据, 但是在 Flume 不运行或者 She大数据杀熟ll 命大数据专业学什么令出错的情况系统运维工资一般多少下, 数据将会丢失。

​Spoolilinuxng Directory Source​​:监控目录, 不支持断点续传。

​Kafka Channel​hadoop​省去了 Sink, 提高了效率。​​KafkaChannel​​数据存储在 K系统运维工资一般多少afkahadoop 里面,所以数数据查询据是存储在磁盘中的。

    flume采集流程:

    三、脚本源码



    USAGE="使用方法:sh fl.sh start/stop/status"
    if [ $# -ne 1 ];then
    echo $USAGE
    exit 1
    fi
    SHELL_CALL=/home/xiaokang/bin/call-cluster.sh
    FLUME_HOME=/opt/software/flume-1.9.0
    AGENT_NAME=a1
    CONF_FILE=/home/xiaokang/file-flume-kafka.properties
    NODES=("hadoop01")
    case $1 in
    "start")
    #启动flume
    for NODE in ${NODES[*]};do
    echo "--------$NODE启动flume--------"
    #ssh $NODE "nohup $FLUME_HOME/bin/flume-ng agent -n $AGENT_NAME -c $FLUME_HOME/conf -f $CONF_FILE -Dflume.root.logger=INFO,LOGFILE >$FLUME_HOME/flume-run.log 2>&1 &"
    ssh $NODE "nohup $FLUME_HOME/bin/flume-ng agent -n $AGENT_NAME -c $FLUME_HOME/conf -f $CONF_FILE >/dev/null 2>&1 &"
    done
    ;;
    "stop")
    #停止flume
    for NODE in ${NODES[*]};do
    echo "--------$NODE停止flume,不要着急查看状态,停止较慢--------"
    ssh $NODE "ps -ef | grep $CONF_FILE | grep -v grep | awk '{print \$2}' | xargs kill"
    done
    ;;
    "status")
    echo "--------查看flume状态--------"
    $SHELL_CALL jps -l
    ;;
    *)
    echo $USAGE
    ;;
    esac
    echo "----------------------------------------------------------------------------------------"
    echo "--------fl.sh脚本执行完成!--------"
    echo -e "----
    echo "----------------------------------------------------------------------------------------"

    四、测试使用

    # 修改脚本权限
    [xiaokang@hadoop01 bin]$ chmod 777 fl.sh

    执行方式

    # 方式
    [xiaokang@hadoop01 bin]$ ./fl.sh start
    # 方式二
    [xiaokang@hadoop01 bin]$ sh fl.sh start
    # 方式三
    # 1.将shell脚本所在目录配置为环境变量(/etc/profile),记得source生效
    export SHELL_HOME=/home/xiaokang/bin
    export PATH=${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${ZOOKEEPER_HOME}/bin:${HIVE_HOME}/bin:${HBASE_HOME}/bin:${KYLIN_HOME}/bin:${KAFKA_HOME}/bin:${SCALA_HOME}/bin:${SCALA_HOME}/sbin:${SPARK_HOME}/bin:${SHELL_HOME}/:$PATH
    # 2.在任意目录都可以使用自己编写的shell脚本
    [xiaokang@hadoop01 ~]$ fl.sh start

    五、采集通道测试

    官方文档参考文档kafka

    模拟数据脚本​​makeDashell是什么意思中文ta.sh​​:

    #!/bin/bash



    for ((i=0;i<1124;i++));do
    echo "微信公众号:小康新鲜事儿----$i" >> /home/xiaokang/log/app-familyaccount-20200524.log
    sleep 2
    done
    exit 0

    ​file-flume-kafka.propelinuxrties​​文件内kafka集群容如下:

    a1.sources=r1
    a1.channels=c1
    # configure source
    a1.sources.r1.type = TAILDIR
    a1.sources.r1.positionFile =/opt/software/flume-1.9.0/log_position.json
    a1.sources.r1.filegroups = f1
    a1.sources.r1.filegroups.f1 = /home/xiaokang/app-familyaccount-20200524.log
    a1.sources.r1.fileHeader = true
    a1.sources.r1.channels = c1
    # configure channel
    a1.channels.c1.type =org.apache.flume.channel.kafka.KafkaChannel
    a1.channels.c1.kafka.bootstrap.servers =hadoop01:9092,hadoop02:9092,hadoop03:9092
    a1.channels.c1.kafka.topic = topic-log
    a1.channels.c1.parseAsFlumeEvent = false
    a1.channels.c1.kafka.consumer.group.id = flume-consumer

    采集测试系统运维工程开始:

    # 启动flume
    [xiaokang@hadoop01 ~]$ fl.sh start
    # 启动kafka集群,并创建主题topic-log
    [xiaokang@hadoop01 ~]$ kf.sh start
    [xiaokang@hadoop01 ~]$ kafka-topics.sh --create --zookeeper hadoop01:2181 --partitions 1 --replication-factor 1 --topic topic-log
    # 启动一个kafka消费者,等待消费
    [xiaokang@hadoop01 ~]$ kafka-console-consumer.sh --bootstrap-server hadoop01:9092 --topic topic-log --from-beginning
    # 执行模拟数据脚本
    [xiaokang@hadoop01 ~]$ sh makeData.sh

    通道打通后如下图所示:

    
                                            大数据常用shell脚本之fl脚本
                                            大数据常用shell脚本之fl脚本