未记录事实核验 · 状态:维护中

记录仅说明核验时间与维护状态,不保证适用于所有环境;使用前请留意正文中的版本、适用条件与风险提示。

warning 适用范围与待维护事项

本文用于 Linux 单机教学环境的 Flume 安装与本地冒烟测试,不是生产部署基线。正文安装 1.11.0,但 Java 兼容性说明针对 1.9.x,Java 17 可运行及官方支持范围尚未核实;硬件表、堆内存和端口配置均需按实际负载与安全策略复核。CentOS 7/8 不宜用于新建生产环境;修改 /opt 下文件需写权限,JAVA_HOME 应替换为本机路径。进阶 GC 参数须匹配所选 JDK,并确认日志目录可写;启动日志不能替代实际事件收发验证。

warning 关联材料边界

以下原引用目标缺失或无法唯一确认,已取消跳转并保留提及:01-Flume概述与核心概念。相关素材/延伸说明暂不可用,不能据此声称已经提供配套材料。

Flume 环境搭建

info 前置知识

  • Flume 概述与核心概念(原引用“01-Flume概述与核心概念”未能确定有效目标,暂不可跳转):了解 Source、Channel、Sink 的基本含义
  • Java 8+ 已安装并配置好 JAVA_HOME 环境变量
  • 具备基础的 Linux 命令行操作能力

Flume 是一个纯 Java 应用,安装方式是解压即用,不需要编译。整个过程分三步:下载解压、配置环境变量、验证安装。


环境要求

硬件参考配置

配置项 最低要求 推荐配置 生产环境
CPU 2 核 4 核 8 核+
内存 4 GB 8 GB 16 GB+
硬盘 50 GB 100 GB 500 GB+(含 File Channel 存储)
网络 100 Mbps 1 Gbps 10 Gbps+

支持的操作系统

  • CentOS 7/8:仅作为历史环境参考,已结束常规维护,不建议用于新建生产环境
  • Ubuntu 18.04/20.04:开发测试常用
  • Amazon Linux 2:云环境部署
  • macOS:本地开发可用(不推荐生产)

Java 版本要求

Flume 1.9.x 要求 Java 8 或 Java 11。Java 17 可运行但官方未正式支持。

# 确认 Java 版本
java -version
# 输出示例:openjdk version "1.8.0_382"

# 确认 JAVA_HOME 已配置
echo $JAVA_HOME
# 输出示例:/usr/lib/jvm/java-8-openjdk-amd64

下载与安装

第一步:下载安装包

从 Apache 官方镜像下载二进制包,推荐使用国内镜像加速:

# 从清华大学镜像站下载(以 1.11.0 为例)
wget https://mirrors.tuna.tsinghua.edu.cn/apache/flume/1.11.0/apache-flume-1.11.0-bin.tar.gz

# 下载对应的校验文件(可选但推荐)
wget https://downloads.apache.org/flume/1.11.0/apache-flume-1.11.0-bin.tar.gz.sha512

第二步:解压安装

# 解压到 /opt 目录(需要 root 权限或对应目录写权限)
sudo tar -zxvf apache-flume-1.11.0-bin.tar.gz -C /opt/

# 重命名,去掉版本号,方便后续引用
sudo mv /opt/apache-flume-1.11.0-bin /opt/flume

# 查看目录结构
ls /opt/flume/
# 输出:bin  conf  docs  lib  LICENSE  NOTICE  README  tools

Flume 安装目录的关键子目录:

目录 作用
bin/ 启动脚本,核心是 flume-ng
conf/ 配置文件目录,存放 .conf 文件和 flume-env.sh
lib/ 所有 JAR 依赖,包括核心框架和内置组件
tools/ 辅助工具(如 flume-ng-log4jappender)

第三步:配置环境变量

将 FLUME_HOME 加入系统环境变量,并将 bin 目录加入 PATH:

# 编辑环境变量文件(以 bash 为例)
sudo vim /etc/profile.d/flume.sh

# 写入以下内容
export FLUME_HOME=/opt/flume
export PATH=$PATH:$FLUME_HOME/bin

使配置立即生效:

source /etc/profile.d/flume.sh

# 验证环境变量
echo $FLUME_HOME
# 输出:/opt/flume

配置 flume-env.sh

conf/flume-env.sh 是 Flume 的 JVM 启动参数配置文件,默认不存在,需要从模板复制:

cd /opt/flume/conf
cp flume-env.sh.template flume-env.sh
vim flume-env.sh

核心配置项说明:

# JVM 堆内存设置
# 建议 Xms 和 Xmx 设置为相同值,避免运行时频繁扩容
# 生产环境推荐 4-8GB,具体取决于 Channel 类型和数据量
export JAVA_OPTS="-Xms2g -Xmx2g -XX:+UseG1GC -XX:MaxGCPauseMillis=200"

# 显式指定 JAVA_HOME(推荐,避免多 Java 版本冲突)
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

# Flume 配置目录(可选,默认为 $FLUME_HOME/conf)
export FLUME_CONF_DIR=$FLUME_HOME/conf

# Flume 日志目录(可选,默认输出到控制台)
export FLUME_LOG_DIR=/var/log/flume

note 内存设置原则

Memory Channel 的数据存在 JVM 堆内存中,堆内存设太小会频繁 GC,导致采集延迟甚至 OOM。File Channel 数据写磁盘,堆内存需求相对小,但依然建议至少 1GB。


系统基础配置(可选)

在多节点部署前,做以下系统级配置:

# 开放常用 Flume 端口
sudo firewall-cmd --permanent --add-port=41414/tcp  # Avro Source/Sink 通信端口
sudo firewall-cmd --permanent --add-port=44444/tcp  # Netcat Source 测试端口
sudo firewall-cmd --reload

# 创建 Flume 专用运行用户(生产环境建议)
sudo useradd -m -s /bin/bash flume
sudo chown -R flume:flume /opt/flume

# 创建日志目录
sudo mkdir -p /var/log/flume
sudo chown flume:flume /var/log/flume

验证安装

查看版本信息

flume-ng version

正常输出类似:

Flume 1.11.0
Source code repository: https://github.com/apache/flume.git
Revision: ...
Compiled by ...
From source with checksum ...

如果报 command not found,检查 PATH 是否包含 $FLUME_HOME/bin。

验证 Java 依赖

# 检查 Flume 能否正确找到 Java
flume-ng version 2>&1 | head -5

# 逐项确认关键文件
ls -la $FLUME_HOME/bin/flume-ng   # 启动脚本存在
ls -la $FLUME_HOME/conf/          # conf 目录存在
echo $JAVA_HOME                   # JAVA_HOME 已设置
java -version                     # Java 版本正确

运行内置示例(快速冒烟测试)

创建一个最简单的配置文件来测试 Flume 能否正常启动:

# 创建测试配置文件
cat > /tmp/flume-test.conf << 'EOF'
agent.sources = r1
agent.channels = c1
agent.sinks = k1

agent.sources.r1.type = netcat
agent.sources.r1.bind = localhost
agent.sources.r1.port = 44444
agent.sources.r1.channels = c1

agent.channels.c1.type = memory
agent.channels.c1.capacity = 1000
agent.channels.c1.transactionCapacity = 100

agent.sinks.k1.type = logger
agent.sinks.k1.channel = c1
EOF

# 启动 Agent(前台运行,查看启动日志;仍需按下文验证事件收发)
flume-ng agent \
  --conf $FLUME_HOME/conf \
  --conf-file /tmp/flume-test.conf \
  --name agent \
  -Dflume.root.logger=INFO,console

启动后看到 Source starting 和 Sink starting 等日志仅说明组件进入启动流程,还需确认没有后续错误。另开终端,在已安装 nc 的情况下运行 nc localhost 44444,输入一行测试文本并回车,确认收到响应且 Agent 的 logger 输出中出现对应事件,才完成本地采集链路的冒烟验证。测试结束后用 Ctrl+C 停止。


常见安装问题

问题 1:JAVA_HOME is not set

# 定位 Java 安装路径
which java
readlink -f $(which java)
# 将路径设置到 flume-env.sh 的 JAVA_HOME

问题 2:启动时 OutOfMemoryError

可能与 flume-env.sh 中 JAVA_OPTS 的 -Xmx 设置、Channel 容量或可用内存有关,也可能涉及非堆内存、直接内存等限制。应先查看异常的具体类型和日志,再检查对应内存配置,不能仅凭 OutOfMemoryError 判定堆上限过小或物理内存不足。

问题 3:端口被占用

# 查看端口占用
netstat -tlnp | grep 44444
# 更换配置文件中的端口号,或停止占用该端口的进程

掌握检查

  • [ ] 能说出 Flume 的 bin、conf、lib 三个目录各自的用途
  • [ ] 知道 FLUME_HOME 和 JAVA_HOME 两个环境变量需要在哪里配置
  • [ ] 能解释 flume-env.sh 中 -Xms 和 -Xmx 的含义及建议设置方式
  • [ ] 能独立运行 flume-ng version 并解读输出

实践练习

基础题:在本机完成 Flume 安装,跑通上面的冒烟测试,截图保存 flume-ng version 的输出。

进阶题:修改 flume-env.sh,将 JVM 堆内存改为 1GB,并添加 GC 日志输出参数(-Xloggc:/var/log/flume/gc.log),重新启动验证配置生效。

下一步