Flume
简介
在一个完整的大数据处理系统中,除了hdfs mapreduce hive组成分析系统的核心之外,还需要数据采集、结果数据导出、任务调度等不可或缺的辅助系统,而这些辅助工具在hadoop生态体系中都有便捷的开源框架,如图所示:
设计Flume的宗旨是向Hadoop批量导入基于事件的海量数据。一个典型的例子是利用Flume从一组Web服务器中收集日志文件,然后把这些文件中的日志事件转移到一个新的HDFS汇总文件中以做进一步处理,其终点(sink)通常为HDFS。也可以写到HBASE或Solr等其他系统。
概述
- Flume是Cloudera提供的一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统。
- Flume可以采集文件,socket数据包、文件夹等各种形式源数据,又可以将采集到的数据输出到HDFS、hbase、hive、kafka等众多外部存储系统中
- 一般的采集需求,通过对flume的简单配置即可实现
- Flume针对特殊场景也具备良好的自定义扩展能力,因此,flume可以适用于大部分的日常数据采集场景
当前Flume有两个版本:
- Flume 0.9X版本的统称Flume-og
- Flume1.X版本的统称Flume-ng 由于Flume-ng经过重大重构,与Flume-og有很大不同,使用时请注意区分
运行机制
1、要想使用Flume,就需要运行Flume代理。Flume代理是由持续运行的source(数据源),sink(数据目标)已经channel(用于连接source和sink)构成的Java进程。Flume 是由一组以分布式结构相互连接的代理构成
2、Flume分布式系统中最核心的角色是agent,flume采集系统就是由一个个agent所连接起来形成
3每一个agent相当于一个数据传递员(Source 到 Channel 到 Sink之间传递数据的形式是Event事件;Event事件是一个数据流单元),内部有三个组件:
- Source:采集源,用于跟数据源对接,以获取数据
- Sink:下沉地,采集数据的传送目的,用于往下一级agent传递数据或者往最终存储系统传递数据
- Channel:angent内部的数据传输通道,用于从source将数据传递到sink
Flume采集系统结构图
简单结构
单个agent采集数据
复杂结构
多级agent之间串联
1.第一种:2个agent串联
2.多个agnet的采集的数据进行汇总
3.采集的数据可以下层到不同的系统中
安装Flume
Flume的下载
下载地址https://flume.apache.org/download.html或http://archive.apache.org/dist/flume/
Flume的安装
Flume框架对hadoop和zookeeper的依赖只是在jar包上,并不要求flume启动时必须将hadoop和zookeeper服务也启动。
将安装包上传到服务器并解压
代码语言:javascript复制tar -zxvf apache-flume-1.8.0-bin.tar.gz
修改安装包名称
代码语言:javascript复制mv apache-flume-1.8.0-bin flume-1.8.0
修改配置文件
代码语言:javascript复制cd flume-1.8.0/conf
cp flume-env.sh.template flume-env.sh
chmod 777 flume-env.sh
在flume-env.sh脚本中配置JAVA_HOME
export JAVA_HOME= /usr/jdk1.8.0_131
配置环境变量
代码语言:javascript复制vi /etc/profile
添加如下内容
代码语言:javascript复制末尾追加
#FLUME
export FLUME_HOME=/opt/flume/flume-1.8.0
export PATH=$PATH:$FLUME_HOME/bin
保存后,加载生效
代码语言:javascript复制source /etc/profile
查看版本
代码语言:javascript复制flume-ng version
出现问题
解决方案
1、修改 Flume 的 flume-ng 文件
代码语言:javascript复制vim flume-ng
2、编辑内容
代码语言:javascript复制local HBASE_JAVA_LIBRARY_PATH=$(HBASE_CLASSPATH="$FLUME_CLASSPATH"
${HBASE_IN_PATH} org.apache.flume.tools.GetJavaProperty
java.library.path 2>/dev/null | grep hbase)
修改前
修改后
查看版本