Flume配置与运行(前台、后台)

本文详细介绍了Apache Flume 1.9.0的安装部署过程,包括配置文件修改、启动参数解析以及如何在后台运行Flume。此外,还提供了一个自定义脚本示例,用于便捷地管理Flume的启动、停止和重启操作。日志配置和输出级别调整也在文中提及。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、引言

该文档的flume版本是1.9.0。同时为了快速上手使用flume,该文将着重讲解一些安装部署配置、后台启动及日志查看,对于Flume组件不做讲解。

二、安装部署

1、配置文件修改

建议将conf/目录下的带.template的文件,拷贝生成对应没有.template的文件(该案例没有修改配置文件的任何内容,这样修改只是为了flume的可读性与后期维护)

cp flume-conf.properties.template flume-conf.properties
cp flume-env.sh.template flume-env.sh
cp flume-env.ps1.template  flume-env.ps1

2、flune启动及常用参数

# 启动 
bin/flume-ng agent -n $agent_name -c conf -f conf/flume-conf.properties.template 

commands: 
    help 显示本帮助信息 
    agent 启动一个agent进程 
    avro-client 启动一个用于测试
    avro source的客户端(能够发送avro序列化 流)
    version 显示当前flume的版本信息 
global options: 全局通用选项 
    --conf,-c <conf> 指定flume的系统配置文件所在目录 
    --classpath,-C <cp> 添加额外的jar路径 
    --dryrun,-d 不去真实启动flume agent,而是打印当前命令 
    --plugins-path <dirs> 指定插件(jar)所在路径
    -Dproperty=value 传入java环境参数 
    -Xproperty=value 传入所需的JVM配置参数 
agent options: 
    --name,-n <name> agent的别名(在用户采集方案配置文件中) 
    --conf-file,-f <file> 指定用户采集方案配置文件的路径 
    --zkConnString,-z <str> 指定zookeeper的连接地址 
    --zkBasePath,-p <path> 指定用户配置文件所在的zookeeper path,比 如:/flume/config 
    --no-reload-conf 关闭配置文件动态加载 
    --help,-h display help text 
avro-client options: 
    --rpcProps,-P <file> RPC client properties file with server connection 
params 
    --host,-H <host> avro序列化数据所要发往的目标主机(avro source所在机器) 
    --port,-p <port> avro序列化数据所要发往的目标主机的端口号 
    --dirname <dir> 需要被序列化发走的数据所在目录(提前准备好测试数据放在一个文件中) 
    --filename,-F <file> 需要被序列化发走的数据所在文件(default: std input) 
    --headerFile,-R <file> 存储header key-value的文件 --help,-h 帮助信息 
Either 
    --rpcProps or both 
    --host and 
    --port must be specified. 
Note that if <conf> directory is specified, then it is always included first in the classpath.

三、运行方式

1、普通运行方式:

  其中-Dflume.root.logger=INFO,console 就表示将运行日志输出到控制台

 
#该命令是在flume安装目录下与conf同级的目录,建的脚本命令目录执行的

../bin/flume-ng agent -n a1 -c ../conf -f “agent脚本” -Dflume.root.logger=INFO,console

2、常见后台运行

(1)网上常见执行。nohup加在原命令头,&加在原命令尾部

nohup ../bin/flume-ng agent -n a1 -c ../conf -f “agent脚本” -Dflume.root.logger=INFO,console &
  • 若是只加 & 也可以后台启动,只是不能生成日志文件了
  • 若在原命令头添加上nohup,就可以把原本在console输出的运行日志输出在nohup.out中。

(2)推荐后台运行命令(☆)

../flume-ng agent -c ../conf -f “agent脚本文件” --name a1 &
  • 由于在flume在conf 目录中已经有了日志配置文件log4j.properties,里面已经配置了flume启动日志输出位置、日志文件名称、日志级别等输出的日志信息。所以,我们大可不必在通过nohup来输出flume的日志。日志输出的文本的配置在log4j.properties中的下图配置(默认日志的输出路径是在conf/logs中,由于个人习惯将日志修改到与conf同级的目录中,即../logs)。

  • 我们可以通过直接修改log4j.properties中的flume.root.logger=INFO,LOGFILE来指定打印日志的输出级别如修改为flume.root.logger=DEBUG,LOGFILE 
  • 有时候为了方便,也可以直接在启动命令中直接指定输出的日志级别,(注意:设置-Dflume.root.logger的参数与普通运行输出到控制台不同,应是INFO,LOGFILE,而非INFO,console)代码如下:
../bin/flume-ng agent -c ../conf/ -f “Agent脚本文件” --name a1 -Dflume.root.logger=DEBUG,LOGFILE &

四、自定义脚本

1、脚本编写与执行(借鉴该文

为了执行方便,我们也可以通过自定义脚本实现flume后台的运行(实际上,该脚本就是执行的命令../flume-ng agent -c ../conf -f “agent脚本文件” --name a1 &)。同时方便flume脚本自启动等功能的修改。

#!/bin/bash
#echo "begin start flume..."
#flume的安装根目录(根据自己情况,修改为自己的安装目录)
path=/home/software/apache-flume-1.9.0-bin
echo "flume home is :$path"
#flume的进程名称,固定值(不用修改)
JAR="flume"
#flume的配置文件名称(根据自己的情况,修改为自己的flume配置文件名称)
Flumeconf="Agent"
#定义的soure名称
agentname="a1"
function start(){
	echo "begin start flume process ...."
	#查找flume运行的进程数
	num=`ps -ef|grep java|grep $JAR|wc -l` 
	#判断是否有flume进程运行,如果有则运行执行nohup命令
	if [ "$num" = "0" ] ;then
		$path/bin/flume-ng agent -c $path/conf -f $path/data/$Flumeconf --name $agentname  &
		echo "start success...."
		echo "日志路径: $path/logs/flume.log"
	else
		echo "进程已经存在,启动失败,请检查....."
		exit 0
	fi
}
function stop(){
	echo "begin stop flume process.."
	num=`ps -ef|grep java|grep $JAR|wc -l`
	#echo "$num...."
	if [ "$num" != "0" ];then
		#正常停止flume
		ps -ef|grep java|grep $JAR|awk '{print $2;}'|xargs kill
		echo "进程已经关闭..."
	else
		echo "服务未启动,无须停止..."
	fi
}
function restart(){
	#echo "begin stop flume process .."
	#执行stop函数
	stop
	#判断程序是否彻底停止
	num='ps -ef|grep java|grep $JAR|wc -l'
	#stop完成之后,查找flume的进程数,判断进程数是否为0,如果不为0,则休眠5秒,再次查看,直到进程数为0
	while [ $num -gt 0 ];do
		sleep 5
		num='ps -ef|grep java|grep $JAR|wc -l'
	done
	echo "flume process stoped,and starting..."
	#执行start
	start
	echo "started...."
}
#case 命令获取输入的参数,如果参数为start,执行start函数,如果参数为stop执行stop函数,如果参数为restart,执行restart函数
case "$1" in
	"start")
		start
		;;
	"stop")
		stop
		;;
	"restart")
		restart
		;;
	*)
		;;
esac

以上脚本命名成.sh文件,例如我命名为 flume.sh  ,存放路径为 /sysware。同时注意修改脚本权限,建议修改chmod -R 755 flume.sh

  • 调用start 函数:
 sh /sysware/flume.sh start
  • 调用 stop命令
sh /sysware/flume.sh stop
  • 调用重启命名
sh /sysware/flume.sh restart

以上脚本即可完成flume的start,stop,restart,并且在后台运行的需求。

2、其他

(1)对于执行sh ./xxx.sh出现:“Syntax error: “(” unexpected”的解决方法(☆)

  • 代码对于标准bash而言没有错,因为Ubuntu/Debian为了加快开机速度,用dash代替了传统的bash,是dash在捣鬼,解决方法就是取消dash。
sudo dpkg-reconfigure dash

#在选择项中选No,搞定了!
  • 或者不添加sh直接执行./xxx.sh也可以执行shell脚本
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值