flume数据采集_大数据常用shell脚本之fl脚本编写视频教程

713d560001129be38e6f9726af2d1717.gif09fe229b9ff848d1b6b0d37c7df0f346.gif

 你再主动一点点 8898060fb765bc2dfac461d8f196a61b.gif  我们就有故事了

视频教程

图文教程

一、前置准备

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

想要完成本期视频中所有操作,需要以下准备:

Flume安装及基本使用-视频教程

Kafka集群环境搭建-视频教程

大数据常用shell脚本之分发脚本编写-视频教程

大数据常用shell脚本之zk脚本编写-视频教程

大数据常用shell脚本之ha-hadoop脚本编写-视频教程

大数据常用shell脚本之kf脚本编写-视频教程

二、简单了解

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

  • 大家对kill -9 肯定非常熟悉,-后面的数字代表信号编号

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

    kill -9 进程号,9代表SIGKILL信号,即杀死信号。该信号不会被系统阻塞,所以能顺利杀掉进程。

  • Taildir Source 相比 Exec Source、 Spooling Directory Source 的优势TailDir Source断点续传多目录Exec Source:可以实时搜集数据, 但是在 Flume 不运行或者 Shell 命令出错的情况下, 数据将会丢失。Spooling Directory Source:监控目录, 不支持断点续传。

  • Kafka Channel省去了 Sink, 提高了效率。KafkaChannel数据存储在 Kafka 里面,所以数据是存储在磁盘中的。

flume采集流程:

becd8c717ac66d4fa67a01821910ad43.png

三、脚本源码

#!/bin/bash

#作者:小康
#描述: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 "--------微信公众号:\033[5;31m 小康新鲜事儿 \033[0m--------"
echo "--------小康老师微信:k1583223--------"
echo "--------公众号内回复【大数据】,获取系列教程及随堂文档--------"
echo "----------------------------------------------------------------------------------------"

脚本下载地址:https://github.com/xiaokangxxs/notebook/blob/master/docs/Shell/fl.sh

四、测试使用

# 修改脚本权限
[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

五、采集通道测试

官方文档参考文档:

TailDir Source:http://flume.apache.org/releases/content/1.9.0/FlumeUserGuide.html#taildir-source

Kafka Channel:http://flume.apache.org/releases/content/1.9.0/FlumeUserGuide.html#kafka-channel

模拟数据脚本makeData.sh

#!/bin/bash

#作者:小康
#描述:模拟数据,每2秒向app-familyaccount-20200524.log文件追加一行内容
#微信公众号:小康新鲜事儿

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

file-flume-kafka.properties文件内容如下:

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.filegroups.f1 = /home/xiaokang/app-familyaccount-*.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

通道打通后如下图所示:

e13f232f0708496815d87168768fcea4.png

5895b7860af8aced26d1e4b68401afdf.png

99a1ad782154dc5f1b1e8ada716f7244.png

如果这篇文章对你有帮助的话,就顺手点个在看,支持一下叭0ca0b567628c72ef81b017edce21dd30.png0ca0b567628c72ef81b017edce21dd30.png感谢各位!


点击下面“王卡免流”查看黑科技

af95f2cb8f9f6cdd9980721d0a062763.png

王卡免流

0f53530aebbf9295d8799219d7dcf7ac.png

自己动手,丰衣足食

点击下方“留言墙”给小康留言
af95f2cb8f9f6cdd9980721d0a062763.png

留言墙

0f53530aebbf9295d8799219d7dcf7ac.png

256fd3954b7d6f54d4532d3f75b90f15.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值