flume学习

Flume 使用方式 要点

1.*.conf 文件

agent1.sources = source1

agent1.sinks = mysqlSink

agent1.channels = channel1

# Describe/configure source1

agent1.sources.source1.type = exec

agent1.sources.source1.command = ftail.sh  /data/phicomm-oa/tomcat-9999/logs/phicomm-oa.log

agent1.sources.source1.channels = channel1

# Describe mysqlSink

agent1.sinks.mysqlSink.type = org.flume.mysql.sink.MysqlSink

agent1.sinks.mysqlSink.hostname=172.18.191.52

agent1.sinks.mysqlSink.port=3306

agent1.sinks.mysqlSink.databaseName=logdatabase

agent1.sinks.mysqlSink.tableName=tb_oarelease_log

agent1.sinks.mysqlSink.user=test

agent1.sinks.mysqlSink.password=test

agent1.sinks.mysqlSink.channel = channel1

# Use a channel which buffers events in memory

agent1.channels.channel1.type = file

agent1.channels.channel1.checkpointDir=/opt/flume_home/checkpoint

agent1.channels.channel1.dataDirs=/opt/flume_home/tmp

agent1.channels.channel1.capacity = 1000

agent1.channels.channel1.transactionCapactiy = 100

# Bind the source and sink to the channel

agent1.sources.source1.channels = channel1

agent1.sinks.mysqlSink.channel = channel1

2.ftail.sh 文件

#!/bin/sh

# ftail.sh = tail -f 的增强版本,可检查文件是否重建过或删除过

# usage: ftail.sh <file>

# author: [email protected]

# release time: v0.1 2010.11.04/05

# 显示title

echo "+---------------------------------------------------------------------------------------------+"

echo "| ftail.sh v0.1 - a bash script that enhanced ‘tail -f‘, written by [email protected] |" >&2

echo "+---------------------------------------------------------------------------------------------+"

echo

# 判断参数个数

if [ "$#" != "1" ]; then

echo "usage: $0 <file>" >&2

exit 1

fi

# 取文件参数

FILE="$1"

# 取文件的inode

INODE=$(stat -c "%i" "$FILE")

# 启动tail -f进程,并打印信息

# usage: fork_tail

fork_tail()

{

if [ -r "$FILE" ]; then

tail -f "$FILE" &

PID=$!

#echo "##### $0: FILE $FILE INODE=$INODE PID $PID #####" >&2

else

PID=

INODE=

#echo "##### $0: FILE $FILE NOT FOUND #####" >&2

fi

}

# 杀掉tail进程

# usage: kill_tail

kill_tail()

{

if [ "$PID" ]; then

kill $PID

fi

}

# 检查inode是否变化了

# usage: inode_changed

inode_changed()

{

NEW_INODE=$(cat /proc/*/status | grep PPid | grep "$$" | wc -l>/dev/null)

if [ "2" == "$NEW_INODE" ]; then

return 1

else

INODE=$NEW_INODE

fi

}

# 设置陷阱,按Ctrl+C终止或者退出时杀掉tail进程

trap "kill_tail;" SIGINT SIGTERM SIGQUIT

# 首次启动tail -f进程

fork_tail

# 每隔一定时间检查文件的inode是否变化,如果变化就先杀掉原来的tail进程,重新启动tail进程

while :

do

sleep 15

if inode_changed; then

kill_tail

fork_tail

fi

done

# END.

3.启动 Flume

1.运行 cd /opt/flume_home/apache-flume-1.4.0-bin//bin/命令 进入bin目录下

2.运行 sh ./oareleasestart.sh  命令

4.查看flume进程

使用  ps -ef | grep flume命令

5.杀死flume进程

使用 kill -9 端口号

注:

1.使用 命令 ls -l ftail.sh 可以查看 文件 “ftail.sh”的权限

----rwxrwx 1 root root

可读(r/4)  可写(w/2) 可执行(x/1) 无权限(-/0)

第一个字符代表文件类型 d代表目录,-代表非目录。

以后每三个为一组,分别代表:所有者权限、同组用户权限、其它用户权限

2.使用 chmod 057 ftail.sh  设置文件权限

此时文件“ftail.sh”权限是   ----r-xrwx(无权限|可读可执行|可读可写可执行)

时间: 2024-10-21 02:38:01

flume学习的相关文章

flume学习(三):flume将log4j日志数据写入到hdfs(转)

原文链接:flume学习(三):flume将log4j日志数据写入到hdfs 在第一篇文章中我们是将log4j的日志输出到了agent的日志文件当中.配置文件如下: [plain] view plaincopy tier1.sources=source1 tier1.channels=channel1 tier1.sinks=sink1 tier1.sources.source1.type=avro tier1.sources.source1.bind=0.0.0.0 tier1.sources

flume学习安装

最近项目组有需求点击流日志需要自己收集,学习了一下flume并且安装成功了.相关信息记录一下. 1)下载flume1.5版本 wget http://www.apache.org/dyn/closer.cgi/flume/1.5.0.1/apache-flume-1.5.0.1-bin.tar.gz 2) 解压flume1.5 tar -zxvf apache-flume-1.5.0.1-bin.tar.gz 3) 配置环境变量 jdk已装 export FLUME_HOME=/XXX/XX/a

flume学习01-flume介绍

最近学习了下flume的使用,以配合公司将日志系统独立出来的开发,官网用户手册:http://flume.apache.org/FlumeUserGuide.html flume架构 a. 组件 先搬上官网上的架构图 从图上可以看到flume的事件定义成了一个数据流,一个数据流组成了Agent,其实就是JVM实例,每个Agent包含三个组件:Source.Channel.Sink Source:接受Agent之外的日志消息,其实就是Agent内部的Event的生产者,同时他又是外部日志的消费者(

Flume学习笔记

在HDFS中,文件只作为目录项存在,在文件关闭前,其长度一直显示为0.如果在一段时间内将数据写到文件中,但却没有将其关闭,那么一旦客户端出现网络中断,什么都得不到,只有一个空白的文件. Flume的agent由三个部件构成:source.channel.sink. 其结构图如下: 三者之间的关系如下: source将event写到一个或多个channel中. channel作为event从source到sink传输的保留区. sink只从一个channel接收event. agent可能会有多个

Flume学习笔记(二)问题整理

本文环境如下: 操作系统:CentOS 7.2.1511 64位 Flume版本:1.6.0 1. 当Flume与Hadoop不在同一服务器上 当Flume与Hadoop不在同一服务器上时,又配置了写HDFS,则Flume启动时会报找不到类的错误. 需要添加Hadoop相关的包到flume的classpath配置中(或者直接拷贝到flume的lib文件夹中). 具体需要的包,我是在maven项目中配置: <dependency> <groupId>org.apache.hadoop

Flume 学习笔记之 Flume NG+Kafka整合

Flume NG集群+Kafka集群整合: 修改Flume配置文件(flume-kafka-server.conf),让Sink连上Kafka hadoop1: #set Agent name a1.sources = r1 a1.channels = c1 a1.sinks = k1 #set channel a1.channels.c1.type = memory a1.channels.c1.capacity = 1000 a1.channels.c1.transactionCapacit

Flume 学习笔记之 Flume NG高可用集群搭建

Flume NG高可用集群搭建: 架构总图: 架构分配: 角色 Host 端口 agent1 hadoop3 52020 collector1 hadoop1 52020 collector2 hadoop2 52020 agent1配置(flume-client.conf): #agent1 name agent1.channels = c1 agent1.sources = r1 agent1.sinks = k1 k2 #set gruop agent1.sinkgroups = g1 #

flume学习一:flume基础知识

一.Flume使用的前提: Flume使用 java编写,其需要运行在 Java1.6或更高版本之上. 二.Flume的定义: Flume是一个分布式.可靠.高效可用的海量日志采集.聚合和传输系统,支持在系统中定制各类数据发送方,用于搜集数据:同时,flume提供对数据进行加单处理,并写到各种数据接受方(可定制)的能力. 核心一句话:将数据从数据源收集过来,再送到目的地.为了保证输送一定成功,在送到目的地之前,会先缓冲数据,待数据真正到的目的地后,删除自己缓冲的数据. 三.组件及作用: 1.so

Flume 学习笔记之 Flume NG概述及单节点安装

Flume NG概述: Flume NG是一个分布式,高可用,可靠的系统,它能将不同的海量数据收集,移动并存储到一个数据存储系统中.轻量,配置简单,适用于各种日志收集,并支持 Failover和负载均衡.其中Agent包含Source,Channel和 Sink,三者组建了一个Agent.三者的职责如下所示: Source:用来消费(收集)数据源到Channel组件中 Channel:中转临时存储,保存所有Source组件信息 Sink:从Channel中读取,读取成功后会删除Channel中的