Flume 安装部署

文章目录

  • Flume 概述
  • Flume 安装部署
    • 官方网址
    • 下载安装
    • 配置文件
    • 启动 Flume 进程
    • 启动报错
    • 输出文件乱码问题

Flume 概述

Flume(Apache Flume)是一个开源的分布式日志收集、聚合和传输系统,属于 Apache 软件基金会的项目之一。其主要目标是简化大规模数据处理中日志数据的采集、移动和处理过程。Flume 的设计灵感来自于 Google 的 Chubby 论文和 Facebook 的 Scribe 系统。

以下是 Flume 的主要概述:

  • 架构模型: Flume 采用了分布式、可扩展的架构。它的基本架构包括多个组件,其中关键组件包括代理(Agent)、通道(Channel)和收集器(Collector)等。
  • 代理(Agent): 代理是 Flume 中的基本工作单元,负责从数据源采集数据,并将数据传输到目的地。代理可以部署在数据源和目的地之间,负责数据的传输和整理。
  • 通道(Channel): 通道是代理之间的缓冲区,用于存储传输的数据。通道允许代理之间异步、可靠地传输数据,确保即使在某个环节发生故障时,数据也不会丢失。
  • 收集器(Collector): 收集器是 Flume 的目的地组件,负责接收代理传递的数据,并将数据存储到指定的存储系统中,如 Hadoop HDFS、HBase 等。
  • 事件(Event): Flume 中的基本数据单元被称为事件,代表被传输的数据。事件由代理采集,并通过通道传递到收集器。
  • 拓扑结构: Flume 支持多种拓扑结构,包括单一代理、多代理、多通道等,使其适用于不同规模和需求的数据处理场景。
  • 可插拔性: Flume 具有良好的可插拔性,允许用户根据需要选择适当的组件,如数据源、通道、拦截器等,以定制数据采集和传输过程。
  • 监控和管理: Flume 提供了监控和管理工具,使用户能够实时跟踪数据的流动和性能指标,以及对代理进行配置和管理。

总体而言,Flume 被设计用于解决大规模数据采集和传输的问题,使得数据工程师能够更轻松地搭建可靠的数据流水线,将数据从源头传递到目的地,以支持各种数据分析和处理需求。

Flume 安装部署

官方网址

  • Flume 官网地址:Welcome to Apache Flume — Apache Flume
  • 文档查看地址:Flume 1.9.0 User Guide — Apache Flume
  • 下载地址:Index of /dist/flume (apache.org)

下载安装

apache-flume-1.9.0-bin.tar.gz 上传到 hadoop102 的 /root/software 目录下

tar -zxvf apache-flume-1.9.0-bin.tar.gz -C /opt/

apache-flume-1.9.0-bin 改名为 flume-1.9.0

cd /opt/
mv apache-flume-1.9.0-bin flume-1.9.0

配置文件

flume-1.9.0/conf 下的 flume-env.sh.template 文件修改为 flume-env.sh,并配置 flume-env.sh 文件

mv flume-env.sh.template flume-env.sh
vim flume-env.sh

在末尾添加:

export JAVA_HOME=/usr/java/default

flume-1.9.0/conf 中添加文件 file-flume-log.conf,该文件是一个 Flume 作业的核心文件

vim file-flume-log.conf

文件添加内容如下:

# 定义组件名称
a1.sources = r1
a1.sinks = k1
a1.channels = c1

############ source 部分 ############
a1.sources.r1.type = spooldir
# 配置读取文件的目录(本地目录)
a1.sources.r1.spoolDir = /opt/flume-1.9.0/logs

############ channel 部分 ############
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 1000

############ sink 部分 ############
a1.sinks.k1.type = hdfs
# 使用本地时间戳
a1.sinks.k1.hdfs.useLocalTimeStamp = true
# 配置输出到 HDFS 的路径,根据日期格式分开存储文件
a1.sinks.k1.hdfs.path = hdfs://hadoop102:9000/flume/%Y-%m-%d/%H%M
# 上传文件的前缀
a1.sinks.k1.hdfs.filePrefix = log
# 多少时间单位创建一个新的文件夹
a1.sinks.k1.hdfs.roundValue = 1
# 重新定义时间单位
a1.sinks.k1.hdfs.roundUnit = minute
# 设置文件格式 DataStream 不会压缩输出文件,默认为 SequenceFile
a1.sinks.k1.hdfs.fileType = DataStream

# 把 source 和 sink 绑定到 channel 中
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

启动 Flume 进程

Flume 目录下输入命令:

bin/flume-ng agent -c /opt/flume-1.9.0/conf/ -n a1 -f /opt/flume-1.9.0/conf/file-flume-log.conf -Dflume.root.logger=info,console

令开一个窗口,随便传个文件到 /opt/flume-1.9.0/logs 目录下,蓝色说明 Flume 控制台在滚动打印

可以进入 HDFS Web 页面查看生成的文件

在这里插入图片描述

启动报错

如果出现下述报错内容

flume.sink.hdfs.HDFSEventSink.process(HDFSEventSink.java:459)] process failed
java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V
        at org.apache.hadoop.conf.Configuration.set(Configuration.java:1357)
        at org.apache.hadoop.conf.Configuration.set(Configuration.java:1338)
        at org.apache.hadoop.conf.Configuration.setBoolean(Configuration.java:1679)
        at org.apache.flume.sink.hdfs.BucketWriter.open(BucketWriter.java:221)
        at org.apache.flume.sink.hdfs.BucketWriter.append(BucketWriter.java:572)
        at org.apache.flume.sink.hdfs.HDFSEventSink.process(HDFSEventSink.java:412)
        at org.apache.flume.sink.DefaultSinkProcessor.process(DefaultSinkProcessor.java:67)
        at org.apache.flume.SinkRunner$PollingRunner.run(SinkRunner.java:145)
        at java.lang.Thread.run(Thread.java:748)

原因是 Hadoop 3.3.1 中的 guava 包版本和 Flume 1.9.0 中的版本不一致

用 Hadoop 中高版本的 guava 包覆盖 Flume 中低版本的 guava 包

cp $HADOOP_HOME/share/hadoop/common/lib/guava-27.0-jre.jar /opt/flume-1.9.0/lib/guava-11.0.2.jar

输出文件乱码问题

在 sink 部分添加下述配置

# 设置文件格式 DataStream 不会压缩输出文件,默认为 SequenceFile
a1.sinks.k1.hdfs.fileType = DataStream

查看官方文档 Flume 1.9.0 User Guide — Apache Flume 在 hdfs-sink 部分的配置中写到文件类型默认为 SequenceFile,数据以二进制格式编码,并且将数据压缩了,数据下载下来是二进制格式,不能直接查看,无法可视化。如果想要直接查看输出文件,使用 DataStream,其不会压缩输出文件。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/215660.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

二叉查找树和红黑树

二叉搜索树又叫二叉查找树、二叉排序树,我们先看一下典型的二叉搜索树,这样的二叉树有何规则特点呢? 1.节点的左子树小于节点本身; 2.节点的右子树大于节点本身; 3.左右子树同样为…

SAP_ABAP_内表数据重复问题,解决思路

SAP ABAP 顾问(开发工程师)能力模型_Terry谈企业数字化的博客-CSDN博客文章浏览阅读516次。目标:基于对SAP abap 顾问能力模型的梳理,给一年左右经验的abaper 快速成长为三年经验提供超级燃料!https://blog.csdn.net/j…

【蓝桥杯】二分查找

二分查找 题目描述 输入 n n n 个不超过 1 0 9 10^9 109 的单调不减的(就是后面的数字不小于前面的数字)非负整数 a 1 , a 2 , … , a n a_1,a_2,\dots,a_{n} a1​,a2​,…,an​,然后进行 m m m 次询问。对于每次询问,给出一…

C#中GDI+图形图像技术(Graphics类、Pen类、Brush类)

目录 一、创建Graphics对象 1.创建Pen对象 2.创建Brush对象 (1)SolidBrush类 (2)HatchBrush类 ​​​​​​​(3)LinerGradientBrush类 用户界面上的窗体和控件非常有用,且引人注目&#…

全球与中国工业冰箱市场:增长趋势、竞争格局与前景展望

工业制冷机是用来维持储运容器内低温冷藏环境,以防止食品饮料、药品、化学品等对温度敏感的产品腐败变质的系统。此外,冷冻机、热交换器等冷冻系统也用于在工业机械运作过程中保持冷却。工业冷冻系统的需求成长主要是由食品和饮料产业的成长所推动的。 冷…

成为AI产品经理——回归模型评估(MSE、RMSE、MAE、R方)

分类问题的评估是看实际类别和预测类别是否一致,它的评估指标主要有混淆矩阵、AUC、KS。回归问题的评估是看实际值和预测值是否一致,它的评估指标包括MAE、MSE、RMSE、R方。 如果我们预测第二天某支股票的价格,给一个模型 y1.5x,…

Python+OpenCV实现最强自动扫雷

文章目录 准备实现思路窗体截取雷块分割雷块识别扫雷算法实现关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面试资料六、Python兼职渠道 用…

【C++初阶】六、类和对象(初始化列表、static成员、友元、内部类)

相关代码gitee自取: C语言学习日记: 加油努力 (gitee.com) 接上期: 【C初阶】五、类和对象 (日期类的完善、流运算符重载函数、const成员、“&”取地址运算符重载)-CSDN博客 目录 ​​​​​​​一 . 初始化列表 构造函数…

涵盖多种功能,龙讯旷腾Module第三期:光、磁、力学和极化性质

Module是什么 在PWmat的基础功能上,我们针对用户的使用需求开发了一些顶层模块(Module)。这些Module中的一部分是与已有的优秀工具的接口,一部分是以PWmat的计算结果为基础得到实际需要的物理量,一部分则是为特定的计…

孩子都能学会的FPGA:第二十课——用FPGA实现定点数的开方运算

(原创声明:该文是作者的原创,面向对象是FPGA入门者,后续会有进阶的高级教程。宗旨是让每个想做FPGA的人轻松入门,作者不光让大家知其然,还要让大家知其所以然!每个工程作者都搭建了全自动化的仿…

Cysteine Protease inhibitor半胱氨酸蛋白酶抑制剂

Cysteine Protease inhibitor 半胱氨酸蛋白酶抑制剂 921625-62-9 英文名称:Cysteine Protease inhibitor 中文名称:半胱氨酸蛋白酶抑制剂 化学名称:5-氨基-3-苯基-1,2,4-噻二唑 CAS:921625-62-9 外观:固体粉末 分子…

如何打印社保参保凭证

西安市: 陕西政务服务网: 个人服务 珠海市: 广东政务服务网: 用户登录 | 珠海市人力资源和社会保障网上服务平台 武汉市: 湖北政务服务网: 湖北政务服务网

基于Springboot的秒杀系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的秒杀系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构&#xf…

Cesium 顶点吸附和区域拾取

Cesium 顶点吸附和区域拾取 基于深度实现可以自定义拾取范围大小 // 顶点吸附// const result pickAreaHelper.pickNearest(viewer.scene, movement.endPosition, 32, 32);// 区域拾取const result pickAreaHelper.pickArea(viewer.scene, movement.endPosition, 32, 32);顶…

maven篇---第三篇

系列文章目录 文章目录 系列文章目录前言一、如何解决依赖传递引起的版本冲突?二、说说maven的依赖原则三、说说依赖的解析机制?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享…

硬件基础:MOS管

MOSFET概述 MOSFET由MOS(Metal Oxide Semiconductor金属氧化物半导体)FET(Field Effect Transistor场效应晶体管)这个两个缩写组成,即全称为金属氧化物场效应管,简称MOS管。 即通过给金属层(M-金属铝)的栅极和隔着氧化层(O-绝缘层SiO2)的源极施加电压&am…

【Erlang进阶学习】4、进程与消息传递

在Erlang系统中,进程都是轻量级的,意味着创建进程只需要花费微不足道的时间和极少的内存。 1、进程间不共享内存,而是通过消息传递来通信。 2、消息从发送进程的栈上复制到接收进程的堆上。 3、由于多个进程并发地在独立的内存空间执行&#…

easyrecovery2024最新破解版激活密钥

平时很多人都会把自己工作时,或者生活中的数据存储在我们的电脑上,很多时候,由于我们的误操作或者是其它某些问题,很容易就会误删除一些文件数据了,尤其是一些电脑出现故障,总是会导致数据丢失,…

【flink番外篇】1、flink的23种常用算子介绍及详细示例(1)- map、flatmap和filter

Flink 系列文章 1、Flink 专栏等系列综合文章链接 文章目录 Flink 系列文章一、Flink的23种算子说明及示例1、maven依赖2、java bean3、map4、flatmap5、Filter 本文主要介绍Flink 的3种常用的operator(map、flatmap和filter)及以具体可运行示例进行说明…

kubernetes(k8s)容器内无法连接同所绑定的Service ClusterIP问题记录

kubernetes(k8s)容器内无法连接同所绑定的Service ClusterIP问题记录 1. k8s环境 k8s使用kubernetes-server-linux-amd64_1.19.10.tar.gz 二进制bin 的方式手动部署 k8s 版本: [rootmaster ~]# kubectl version Client Version: version.Info{Major:"1", Minor:&…