搭建flume-1.9.0

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 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. }
相关文章
|
12月前
|
存储 分布式计算 大数据
Flume+Hadoop:打造你的大数据处理流水线
本文介绍了如何使用Apache Flume采集日志数据并上传至Hadoop分布式文件系统(HDFS)。Flume是一个高可用、可靠的分布式系统,适用于大规模日志数据的采集和传输。文章详细描述了Flume的安装、配置及启动过程,并通过具体示例展示了如何将本地日志数据实时传输到HDFS中。同时,还提供了验证步骤,确保数据成功上传。最后,补充说明了使用文件模式作为channel以避免数据丢失的方法。
565 4
|
3月前
|
存储 自然语言处理 分布式计算
Apache Doris 3.1 正式发布:半结构化分析全面升级,湖仓一体能力再跃新高
Apache Doris 3.1 正式发布!全面升级半结构化分析,支持 VARIANT 稀疏列与模板化 Schema,提升湖仓一体能力,增强 Iceberg/Paimon 集成,优化存储引擎与查询性能,助力高效数据分析。
491 4
Apache Doris 3.1 正式发布:半结构化分析全面升级,湖仓一体能力再跃新高
|
5月前
|
存储 安全 固态存储
蓝屏代码太多看不懂?这里有解决方案
在使用 Windows 系统时,蓝屏是常见问题。蓝屏代码如“CRITICAL_PROCESS_DIED”或“0x0000007E”等,提示错误类型与原因。本文详解常见蓝屏代码含义及修复方法,帮助用户快速定位问题根源,避免盲目重装系统,提升排查效率。
|
11月前
|
API Python
京东拍立淘图片搜索商品接口系列(京东 API)
简介:本文介绍了如何使用拍立淘图片搜索 API 在京东平台上查找相似商品。首先需安装 Python 库 `requests`,并通过内置库 `hashlib` 生成签名。API 支持通过图片 URL 或 Base64 编码的图片进行搜索,返回商品名称、价格等信息。示例代码展示了如何构建请求并处理响应。应用场景包括电商购物助手和竞品分析,帮助用户和商家提高购物效率和市场竞争力。
|
Java Linux
Flume【环境搭建 01】CentOS Linux release 7.5 安装配置 apache-flume-1.9.0 并验证
【2月更文挑战第16天】Flume【环境搭建 01】CentOS Linux release 7.5 安装配置 apache-flume-1.9.0 并验证
288 0
|
存储 自然语言处理 API
HarmonyOS SDK使用:熟悉HarmonyOS提供的开发工具和API
【10月更文挑战第21天】随着智能设备的普及,操作系统的重要性日益凸显。华为推出的HarmonyOS凭借其跨平台、分布式特性受到广泛关注。本文将从开发工具、API使用、SDK更新维护及社区支持等方面,探讨HarmonyOS SDK的使用,旨在帮助开发者高效利用这一强大平台,开启鸿蒙应用开发之旅。
1097 5
|
机器学习/深度学习 存储 算法
Optuna发布 4.0 重大更新:多目标TPESampler自动化超参数优化速度提升显著
Optuna,广受欢迎的超参数优化框架,近日发布了其第四个主要版本。自2018年问世以来,Optuna迅速成为机器学习领域的关键工具,目前拥有10,000+ GitHub星标、每月300万+下载量、16,000+代码库使用、5,000+论文引用及18,000+ Kaggle使用。Optuna 4.0引入了OptunaHub平台,支持功能共享;正式推出Artifact Store管理生成文件;稳定支持NFS的JournalStorage实现分布式优化;显著加速多目标TPESampler,并引入新Terminator算法。
679 9
Optuna发布 4.0 重大更新:多目标TPESampler自动化超参数优化速度提升显著
|
SQL 存储 Java
Hive 中的 SerDe 详解
【8月更文挑战第31天】
1057 1
|
存储 监控 数据可视化
在Linux中,有哪些日志管理和分析工具?
在Linux中,有哪些日志管理和分析工具?
|
XML 数据格式
Flume【付诸实践 01】flume1.9.0版 配置格式说明+常用案例分享(ExecSource+SpoolingDirectorySource+HDFSSink+AvroSourceSink)
【2月更文挑战第19天】Flume【付诸实践 01】flume1.9.0版 配置格式说明+常用案例分享(ExecSource+SpoolingDirectorySource+HDFSSink+AvroSourceSink)
334 1