flume的部署及简单测试

Flume 的一些核心概念:

组件 功能
Agent 使用JVM 运行Flume。每台机器运行一个agent,但是可以在一个agent中包含多个sources和sinks。
Client 生产数据,运行在一个独立的线程。
Source 从Client收集数据,传递给Channel。
Sink 从Channel收集数据,运行在一个独立线程。
Channel 连接 sources 和 sinks ,这个有点像一个队列。
Events 可以是日志记录、 avro 对象等。

配置flume

第一步:

下载最新的flume-ng

http://flume.apache.org/download.html

第二步:

配置conf
创建:flume-source-conf.properties
source:

#Describe  source
source.sources.src1.type = exec    //类型
source.sources.src1.command = tail  -n +0 -F /home/hduser/logs/debug.log //监控的日志文件


#Describe channel      //配置channel
source.channels.ch1.type = file
source.channels.ch1.checkpointDir = tmp/channels/ch1/checkpoint
source.channels.ch1.dataDirs = tmp/channels/ch1/data


#Describe sink     //配置sink
source.sinks.sink2.type = file_roll
source.sinks.sink2.sink.directory=store
source.sinks.sink2.sink.serializer = text
source.sinks.sink2.sink.serializer.appendNewline = true
source.sinks.sink2.sink.rollInterval = 43200


//配置变量:

vim ~/.bash_profile
#export FLUME_HOME
export FLUME_HOME=/home/hduser/softsare/flume-1.6.0
export PATH=$PATH:$FLUME_HOME/sbin


. ~/.bash_profile   //一定执行者一步让变量生效


启动命令:flume strart source

停止命令:flume stop source


//到此简单的flume配置完成,,可以用下面的日志生成程序产生日志。

package main;


import java.io.IOException;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;

import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;

import thread.DebugLogThread;
import thread.ErrorLogThread;
import thread.InfoLogThread;
import util.JFile;

public class LogFactory {

static Logger  logger = Logger.getLogger(LogFactory.class);
/**
*   绾跨▼瀹瑰櫒锛屼綔涓虹瓑寰呮墍鏈夌嚎绋嬮�鍑轰箣鐢ㄣ�
*/
private static ArrayList<Thread> threads = new ArrayList<Thread>();


/**
* 鍚姩鏍稿績鍔熻兘鐩稿叧鐨勬墍鏈夋敞鍐岀嚎绋�
*/
public static void setpid() {

String processName = java.lang.management.ManagementFactory.getRuntimeMXBean().getName();
 
   String processID = processName.substring(0,processName.indexOf('@'));


    
   try {
JFile.write("pid.log", processID);
logger.debug("pid="+processID);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}


/**
* 鍚姩鏍稿績鍔熻兘鐩稿叧鐨勬墍鏈夋敞鍐岀嚎绋�
*/
public static void start() {
// 鍚姩绾跨▼
for (int i = 0; i < 2; i++) 
{

DebugLogThread log = new DebugLogThread();
Thread thread = new Thread(log);
thread.start();
threads.add(thread);
}//for

// 鍚姩绾跨▼
for (int i = 0; i < 2; i++) 
{

ErrorLogThread log = new ErrorLogThread();
Thread thread = new Thread(log);
thread.start();
threads.add(thread);
}//for

// 鍚姩绾跨▼
for (int i = 0; i < 2; i++) 
{

InfoLogThread log = new InfoLogThread();
Thread thread = new Thread(log);
thread.start();
threads.add(thread);
}//for

/**
*   绛夊緟鎵�湁绾跨▼閫�嚭
*/
for (int i = 0; i < threads.size(); i++)
{
try 
{
// threads.get(i).join();
Thread.sleep(1);
} catch (Exception e) {
e.printStackTrace();
}
}
 
}

public static void main(String[] args) throws ClassNotFoundException {
/**
* 閰嶇疆log4j鐨勯厤缃枃浠讹紝娉ㄦ剰杩欐槸xml鏍煎紡銆�
*/
DOMConfigurator.configure("etc/log4j.xml" );

/**
* 鍙傛暟鍒ゆ柇
*/
if (args.length < 1) {
System.out.println("args error, args="+Arrays.toString(args));
System.exit(-1);
}  
System.out.println("args="+Arrays.toString(args));

/**
* 璁板綍杩涚▼鍙�
*/
setpid();

start();

logger.debug("process exit.");
}
}


//使用tail -f XXXX(你监控的文件)  来跟踪日志生成情况;




  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,针对您的问题,我可以给出以下的回答: Flume是一个分布式的、可靠的、高可用的海量日志采集、聚合和传输的系统。它可以将多种数据源的数据采集到集中式的数据存储系统中,例如Hadoop HDFS、HBase、Kafka等。下面是Flume部署及数据采集准备的步骤: 1. 安装Flume 首先需要从Apache Flume官网(http://flume.apache.org/)下载Flume的二进制安装包,根据所需的版本进行下载。下载完成后,解压缩到指定目录,然后进行配置。 2. 配置Flume Flume的配置文件是一个properties文件,需要根据具体的需求进行配置。主要包括数据源、数据通道和数据存储三部分的配置。其中,数据源可以是多种类型的数据源,例如日志文件、网络数据等;数据通道可以是多种类型的数据通道,例如内存通道、文件通道、Kafka通道等;数据存储可以是多种类型的数据存储,例如HDFS、HBase等。 3. 启动Flume 启动Flume可以使用以下命令: ``` bin/flume-ng agent --conf-file conf/flume.conf --name a1 -Dflume.root.logger=INFO,console ``` 其中,--conf-file指定Flume的配置文件,--name指定Flume的名称,-Dflume.root.logger指定日志输出级别。 4. 配置数据源 针对不同的数据源,Flume有不同的采集方式。例如,针对日志文件,可以使用tail源来实时采集;针对网络数据,可以使用Avro源来采集;针对消息队列,可以使用Kafka源来采集。 5. 配置数据通道 针对不同的数据通道,Flume有不同的配置方式。例如,针对内存通道,可以指定通道的容量和事务大小;针对文件通道,可以指定文件的最大大小和最大文件数;针对Kafka通道,可以指定Kafka的Topic和Broker列表等。 6. 配置数据存储 针对不同的数据存储,Flume有不同的配置方式。例如,针对HDFS存储,可以指定HDFS的NameNode和路径;针对HBase存储,可以指定HBase的Zookeeper地址和表名等。 7. 测试数据采集 完成以上步骤后,可以测试Flume的数据采集功能。可以使用nc命令向Flume发送数据,也可以直接写入日志文件进行测试测试成功后,即可正式开始使用Flume进行数据采集。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值