搭建flume-1.9.0

简介: Apache Flume 是一个从可以收集例如日志,事件等数据资源,并将这些数量庞大的数据从各项数据资源中集中起来存储的工具/服务,或者数集中机制。flume具有高可用,分布式,配置工具,其设计的原理也是基于将数据流,如日志数据从各种网站服务器上汇集起来存储到HDFS,HBase等集中存储器中

一、概述

1、what is Flume?

flume是由cloudera软件公司产出的可分布式日志收集系统,后与2009年被捐赠了apache软件基金会,为hadoop相关组件之一。尤其近几年随着flume的不断被完善以及升级版本的逐一推出,特别是flume-ng;同时flume内部的各种组件不断丰富,用户在开发的过程中使用的便利性得到很大的改善,现已成为apache top项目之一.

Apache Flume 是一个从可以收集例如日志,事件等数据资源,并将这些数量庞大的数据从各项数据资源中集中起来存储的工具/服务,或者数集中机制。flume具有高可用,分布式,配置工具,其设计的原理也是基于将数据流,如日志数据从各种网站服务器上汇集起来存储到HDFS,HBase等集中存储器中。

2、Flume特性

  • Flume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统。
  • Flume可以采集文件,socket数据包、文件、文件夹、kafka等各种形式源数据,又可以将采集到的数据(下沉sink)输出到HDFS、hbase、hive、kafka等众多外部存储系统中
  • 一般的采集需求,通过对flume的简单配置即可实现
  • Flume针对特殊场景也具备良好的自定义扩展能力,因此,flume可以适用于大部分的日常数据采集场景

3、Flume架构

数据流模型:

image-20220513104822315.png

对于每一个Agent来说,它就是一共独立的守护进程(JVM),它从客户端接收数据。

  1. Flume分布式系统中最核心的角色是agent,flume采集系统就是由一个个agent所连接起来形成
  2. 每一个agent相当于一个数据(被封装成Event对象)传递员,内部有三个组件:

    1. Source:采集组件,用于跟数据源对接,以获取数据
    1. Channel:传输通道组件,用于从source将数据传递到sink
    1. Sink:下沉组件,用于往下一级agent传递数据或者往最终存储系统传递数据
    
  3. Event定义

    一行文本内容会被反序列化成一个event(序列化是将对象状态转换为可保持或传输的格式的过程,与序列化相对的是反序列化,这两个过程结合起来,可以轻松的存储和传输数据),event默认最大为2048字节(可修改),超过,则会切割,剩下的会被放到下一个event中,默认编码是UTF-8。

  4. Flume采集结构图

    • 简单结构

      image-20220513104822315.png

    • 复杂结构

      多个Agent采集

      image-20220513105410229.png

      同一服务器-多路复用流

      image-20220513105538294.png

二、安装Flume

1、依赖

  1. Flume-1.8.0以上依赖Java-1.8 或更高版本
  2. 需要有足够的内存与磁盘空间
  3. 需要有对操作的目录有相应的权限

2、下载

官网下载地址(apache.org)

这里下载的为最新稳定版:apache-flume-1.9.0-bin.tar.gz

然后通过工具上传到虚拟机上,并解压:

 cd /opt/export/software/
 [hadoop@hadoop01 software]$ ll
总用量 382952
-rw-rw-r-- 1 hadoop hadoop  67938106 3月   4 20:56 apache-flume-1.9.0-bin.tar.gz

# 解压
tar -zxvf apache-flume-1.9.0-bin.tar.gz -C /opt/export/servers/
cd ../servers
# 改名
mv apache-flume-1.9.0-bin flume-1.9.0

3、环境变量

sudo vim /etc/profile
export FLUME_HOME=/opt/export/servers/flume-1.9.0
export PATH=${PATH}:${FLUME_HOME}/bin
source /etc/profile

测试环境

flume-ng version

[hadoop@hadoop01 bin]$ flume-ng version
Error: Could not find or load main class org.apache.flume.tools.GetJavaProperty
Flume 1.9.0
Source code repository: https://git-wip-us.apache.org/repos/asf/flume.git
Revision: d4fcab4f501d41597bc616921329a4339f73585e
Compiled by fszabo on Mon Dec 17 20:45:25 CET 2018
From source with checksum 35db629a3bda49d23e9b3690c80737f9
# 发现有报错,
#  。或者是因为
# 这里暂时分析为是因为 安装了 hbase

发现有报错, 原因可能为:

jdk版本冲突

安装了 hbase 导致的

解决方法一:

cd ${FLUME_HOME}/bin
vim flume-ng
# 开启行数
:set number
# 定位到110行
# 添加 到如下图110行位置
2>/dev/null | grep hbase

image-20220513113647705.png

解决方法二:

cd ${HBASE_HOME}/conf
vim hbase-env.sh
# 1、将hbase的 hbase-env.sh 中 HBASE_CLASSPATH 配置注释掉
# Extra Java CLASSPATH elements. Optional.
#export HBASE_CLASSPATH=/opt/export/servers/hadoop-2.7.7/etc/hadoop
 
# 2、或者将 HBASE_CLASSPATH 改为 JAVA_CLASSPATH ,配置如下
# Extra Java CLASSPATH elements. Optional.
export JAVA_CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

都成功

[hadoop@hadoop01 bin]$ flume-ng version
Flume 1.9.0
Source code repository: https://git-wip-us.apache.org/repos/asf/flume.git
Revision: d4fcab4f501d41597bc616921329a4339f73585e
Compiled by fszabo on Mon Dec 17 20:45:25 CET 2018
From source with checksum 35db629a3bda49d23e9b3690c80737f9

4、配置

  • flume-env.sh

    在conf目录下没有这个文件,需要将模板文件改为正式文件

    cd ${FLUME_HOME}/conf
    cp flume-env.sh.template flume-env.sh

    添加java环境

    vim flume-env.sh
    export JAVA_HOME=/opt/export/servers/jdk1.8.0_321
  • log4j.properties

    修改日志存放目录

    vim log4j.properties
    flume.log.dir=/opt/export/data/flume/logs
    
    # 创建目录
    mkdir -p /opt/export/data/flume/{logs,data}

三、简单使用

1、测试案例一

利用 netcat + telnet 监听端口,传输信息。

sudo yum install -y nc telnet
cd /opt/export/data/flume/data
vim nc-logger.conf
# Name the components on this agent
agent1.sources = nc-source
agent1.sinks = nc-sink
agent1.channels = nc-channel

# Describe/configure the source
agent1.sources.nc-source.type = netcat
agent1.sources.nc-source.bind = hadoop01
agent1.sources.nc-source.port = 44444

# Describe the sink
agent1.sinks.nc-sink.type = logger

# Use a channel which buffers events in memory
agent1.channels.nc-channel.type = memory
agent1.channels.nc-channel.capacity = 1000
agent1.channels.nc-channel.transactionCapacity = 100

# Bind the source and sink to the channel
agent1.sources.nc-source.channels = nc-channel
agent1.sinks.nc-sink.channel = nc-channel
# hadoop02
sudo yum install -y nc telnet
[hadoop@hadoop02 ~]$ telnet 192.168.121.134 44444
Trying 192.168.121.134...
Connected to 192.168.121.134.
Escape character is '^]'.
hello
ok
# hadoop01
[hadoop@hadoop01 data]$ flume-ng agent --conf conf/ --conf-file nc-logger.conf --name agent1 -Dflume.root.logger=INFO,console
.........
22/05/13 16:47:43 INFO instrumentation.MonitoredCounterGroup: Component type: CHANNEL, name: nc-channel started
22/05/13 16:47:43 INFO node.Application: Starting Sink nc-sink
22/05/13 16:47:43 INFO node.Application: Starting Source nc-source
22/05/13 16:47:43 INFO source.NetcatSource: Source starting
22/05/13 16:47:43 INFO source.NetcatSource: Created serverSocket:sun.nio.ch.ServerSocketChannelImpl[/192.168.121.134:44444]
22/05/13 16:47:54 INFO sink.LoggerSink: Event: { headers:{} body: 68 65 6C 6C 6F 0D                               hello. }
相关实践学习
云数据库HBase版使用教程
  相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
21天前
|
消息中间件 存储 分布式计算
【Flume 】Flume 基础概述
【4月更文挑战第4天】【Flume 】Flume 基础概述
|
2月前
|
消息中间件 监控 网络协议
Flume系统
Flume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输系统,起源于Cloudera。【2月更文挑战第8天】
25 4
|
21天前
|
存储 消息中间件 Kafka
【Flume】Flume 核心组件分析
【4月更文挑战第4天】【Flume】Flume 核心组件分析
|
5月前
|
数据采集 分布式计算 Hadoop
62 Flume的安装部署
62 Flume的安装部署
45 0
|
2月前
|
JSON 监控 负载均衡
Flume相关技术汇总
Flume相关技术汇总
|
8月前
|
SQL 分布式计算 监控
Flume学习--1、Flume概述、Flume入门、(一)
Flume学习--1、Flume概述、Flume入门、(一)
|
4月前
|
存储 分布式计算 监控
Flume(一)【Flume 概述】
Flume(一)【Flume 概述】
|
8月前
|
JSON 监控 Unix
Flume学习--1、Flume概述、Flume入门、(二)
Flume学习--1、Flume概述、Flume入门、(二)
|
11月前
|
消息中间件 存储 Java
flume的安装和配置
flume的安装和配置
|
12月前
|
分布式数据库 Hbase
Flume安装及配置
Flume 提供了大量内置的 Source、Channel 和 Sink 类型。而且不同类型的 Source、Channel 和 Sink 可以自由组合—–组合方式基于配置文件的设置,非常灵活。比如:Channel 可以把事件暂存在内存里,也可以持久化到本地硬盘上。Sink 可以把日志写入 HDFS、HBase,甚至是另外一个 Source 等。

相关实验场景

更多