网站需要多大宽带,seo外包公司如何优化,龙岩seo招聘,wordpress rss代码文章目录 Flume 概述Flume 安装部署官方网址下载安装配置文件启动 Flume 进程启动报错输出文件乱码问题 Flume 概述
Flume#xff08;Apache Flume#xff09;是一个开源的分布式日志收集、聚合和传输系统#xff0c;属于 Apache 软件基金会的项目之一。其主要目标是简化大… 文章目录 Flume 概述Flume 安装部署官方网址下载安装配置文件启动 Flume 进程启动报错输出文件乱码问题 Flume 概述
FlumeApache 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.loggerinfo,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;)Vat 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其不会压缩输出文件。