当前位置: 首页 > news >正文

Flume安装部署

Apache Flume 1.9.0 实时采集数据到 HDFS 完整指南

本指南将详细介绍如何安装和配置 Apache Flume 1.9.0,使用 Netcat Source 接收数据,并通过 HDFS Sink 将数据实时写入 HDFS,并提供解决在 Hadoop 集成中常见的 Guava 库版本冲突问题的方法。

Ⅰ. Flume 环境搭建与准备

1. 软件上传、解压与重命名

将 Flume 压缩包上传至指定目录,并进行解压和重命名,保持环境整洁。

# 1. 上传文件 apache-flume-1.9.0-bin.tar.gz 到 /opt/software/ (手动操作)# 2. 解压文件到 /opt/module/ 目录下
tar -zxvf /opt/software/apache-flume-1.9.0-bin.tar.gz -C /opt/module/# 3. 修改解压后的文件夹名,方便后续引用
mv /opt/module/apache-flume-1.9.0-bin /opt/module/flume-1.9.0
2. 配置 Flume 运行环境

a. 配置 flume-env.sh 文件

进入 Flume 配置目录,复制模板文件并编辑,核心是指定正确的 JAVA_HOME 路径

cd /opt/module/flume-1.9.0/conf
cp flume-env.sh.template flume-env.sh
vim flume-env.sh# 在 flume-env.sh 文件中添加或修改以下内容:
export JAVA_HOME=/opt/module/jdk1.8.0_261

b. 配置系统环境变量

为了能在任何目录下运行 flume-ng 命令,将 Flume 的 bin 目录添加到系统的 PATH 中。

# 在 ~/.bashrc 或 /etc/profile 文件中添加以下内容:
export FLUME_HOME=/opt/module/flume-1.9.0
export PATH=$PATH:$FLUME_HOME/bin# 使得配置立即生效
source ~/.bashrc # 或 source /etc/profile

c. 验证安装

flume-ng version
3. 安装 Netcat 工具

我们使用 Netcat (nc) 作为简单的数据发送工具,在测试环节模拟数据流。

# 使用 yum 安装 netcat 工具
yum install -y nc

Ⅱ. Flume Agent 配置(flume.conf

本示例配置了一个 Agent,它通过 Netcat Source (r1) 监听数据,通过 Memory Channel (c1) 传输,最后由 HDFS Sink (hdfs-sink) 将数据写入 Hadoop。

vim /opt/module/flume-1.9.0/conf/flume.conf

配置内容如下:

# --- Agent 核心组件定义 ---
# 配置 Agent 各个组件的名称:Sources (r1), Channels (c1), Sinks (hdfs-sink)
agent.channels = c1
agent.sources = r1
agent.sinks = hdfs-sink# --- 1. 配置内存通道 (c1) ---
agent.channels.c1.type = memory# --- 2. 配置 Netcat Source (r1) ---
# Netcat Source 负责监听特定网络端口接收行文本数据
agent.sources.r1.type = netcat
# 主机名 (请根据您的实际环境修改,这里是 master 节点)
agent.sources.r1.bind = master
# 监听端口号
agent.sources.r1.port = 12345
agent.sources.r1.channels = c1# --- 3. 配置 HDFS Sink (hdfs-sink) ---
# HDFS Sink 负责将数据写入 HDFS
agent.sinks.hdfs-sink.type = hdfs
# HDFS 写入路径 (注意:需要事先启动 HDFS)
agent.sinks.hdfs-sink.hdfs.path = hdfs://master:8020/flume/events
agent.sinks.hdfs-sink.channel = c1

Ⅲ. Flume Agent 启动与测试

1. 准备 HDFS 路径与启动 HDFS

重要: 确保您的 HDFS 集群已启动,并且目标路径已创建。

# 事先要启动 HDFS (start-dfs.sh 等)# 新建 HDFS 路径,用于接收 Flume 写入的数据
hdfs dfs -mkdir -p /flume/events
2. 启动 Flume Agent

在终端执行命令,启动 Agent,并指定配置文件的位置和 Agent 的名称。

flume-ng agent --conf $FLUME_HOME/conf --conf-file $FLUME_HOME/conf/flume.conf --name agent -Dflume.root.logger=INFO,console

成功启动 Flume Agent

3. 发送测试数据

保持 Flume Agent 窗口运行,新建另一个终端窗口,使用 curl 命令向 Flume 监听的端口发送一条简单的 HTTP GET 请求,数据即为 w=helloworld

# 向 master 主机的 12345 端口发送数据
curl -X GET http://master:12345?w=helloworld

通过 curl 命令测试 Flume Source

4. 查看 HDFS 接收数据

Flume Agent 接收到数据后,会通过 HDFS Sink 将其写入 HDFS 路径。

# 查看 HDFS 目标路径下写入的文件内容
hdfs dfs -text /flume/events/FlumeData*

查看 HDFS 中 Flume 写入的数据

Ⅳ. 故障排除:解决 Guava 库冲突(NoSuchMethodError

在 Flume 1.9.0 与较新版本 Hadoop(例如 Hadoop 3.x)集成时,由于两者依赖的 Google Guava 库版本不兼容,可能会出现以下错误:

报错信息:

java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V

这表明 Flume 依赖的旧版本 Guava (如 11.0.2) 缺少 Hadoop 运行所需的特定方法。

解决办法:替换 Guava JAR 包

解决方案是使用 Hadoop 中更高版本的 Guava JAR 包替换 Flume 自身 lib 目录下的旧版本 JAR 包。

  1. 备份 Flume 中自带的 Guava JAR 包。

    cd $FLUME_HOME/lib
    # 备份了 guava-11.0.2.jar 为 guava-11.0.2.jar.bak。 
    mv guava-11.0.2.jar guava-11.0.2.jar.bak
    
  2. 复制 Hadoop 的新版本 Guava JAR 包。

    • 找到 Hadoop 安装目录(通常在 share/hadoop/common/lib/)中的高版本 Guava JAR 包(例如:guava-27.0-jre.jar)。
    • 将 Hadoop 的 guava-27.0-jre.jar 复制到了 Flume 的 lib 目录下。
    # 示例:从 Hadoop 目录复制到 Flume lib 目录
    cp /path/to/hadoop/share/hadoop/common/lib/guava-27.0-jre.jar $FLUME_HOME/lib/
    


3. 重启 Flume Agent:重新运行 Flume Agent 命令。

大功告成!解决 Guava 冲突后,数据就能顺利写入 HDFS。

HDFS 页面中 Flume 成功写入的数据目录

http://www.dtcms.com/a/590448.html

相关文章:

  • 最新版T5友价互站网源码商城PHP源码交易平台 完整带手机版源码网系统源码
  • 化学商城网站建设做网站有底薪吗
  • 树莓派4B使用指南
  • c语言做网站后台建设部中国建造师网查询
  • Overleaf——编译超时(timed out)的解决办法
  • 网站推广如何做的深圳市注册公司需要什么资料
  • 做电子商务网站建设工资多少钱网站站内链接怎么做
  • Java中同步和异步的区别,以及阻塞和非阻塞的区别
  • 电子商务网站建设问题公司网站制作知乎
  • 科研人如何使用ubantu服务器
  • o2o网站建设手机网站大全123456
  • 【Web安全】JeecgBoot框架SRC高频漏洞分析总结
  • 花都微网站建设北京网站制作出名 乐云践新
  • 路径总和(C)
  • 网站模版怎么样网站内容一样影响收录
  • 网站开发怎么接入支付宝中山企业网站的建设
  • 做网站参考文献河北网站建设价格低
  • 天河建设网站报价网页打不开qq可以上qq
  • 郑州网站推广电话wordpress发布文章 自定义栏目
  • 深圳市住房和城乡建设局网站首页静态网站建设背景
  • 做编程的网站有哪些大航母网站建设案例
  • 青岛制作企业网站百度信誉任何在网站展示
  • 深入浅出 Ascend C:新一代算子开发接口 Aclnn 原理解析与实践
  • 山西省洪涝灾害应急物资体系优化研究 - 核心章节建模与算法实施方案
  • 做生物学的网站平板室内装修设计软件
  • 为什么要建设个人网站网站建设优惠活动
  • 八.Docker-compose容器编排-生产环境用Kubernetes替代
  • ComfyUI高级应用之图片放大
  • 编程的网站免费外链网站
  • 网站开发的经费预算免费发布信息网站平台