Flume+Hadoop:打造你的大数据处理流水线

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
日志服务 SLS,月写入数据量 50GB 1个月
简介: 本文介绍了如何使用Apache Flume采集日志数据并上传至Hadoop分布式文件系统(HDFS)。Flume是一个高可用、可靠的分布式系统,适用于大规模日志数据的采集和传输。文章详细描述了Flume的安装、配置及启动过程,并通过具体示例展示了如何将本地日志数据实时传输到HDFS中。同时,还提供了验证步骤,确保数据成功上传。最后,补充说明了使用文件模式作为channel以避免数据丢失的方法。

引言

在大数据处理中,日志数据的采集是数据分析的第一步。Apache Flume是一个分布式、可靠且可用的系统,用于有效地收集、聚合和移动大量日志数据到集中式数据存储。本文将详细介绍如何使用Flume采集日志数据,并将其上传到Hadoop分布式文件系统(HDFS)中。

Flume简介

Apache Flume是一个高可用的、高可靠的,分布式的海量日志采集、聚合和传输的系统。它基于流式架构,提供了灵活性和简单性,能够实时读取服务器本地磁盘的数据,并将数据写入到HDFS。

系统要求

  • Hadoop已经搭建并配置好。
  • Flume 1.9.0或更高版本。

安装Flume

  1. 从Flume官网下载所需版本的Flume。
  2. 将下载的tar.gz文件上传到服务器的指定目录。
  3. 解压缩并配置环境变量。

Flume配置

Flume的配置文件定义了数据流的来源和去向。以下是一个基本的配置示例,它定义了一个简单的Flume Agent,该Agent从一个本地端口收集数据,并将其输出到控制台。


添加图片注释,不超过 140 字(可选)


Flume的架构上可以知道,它主要分为三部分source、sink和channel:

在flume/conf目录下创建flume-hdfs.conf文件

vim flume-hdfs.conf

flume-hdfs.conf的内容

# 定义agent的组件名称 a1.sources = r1 a1.sinks = k1 a1.channels = c1 # 配置source a1.sources.r1.type = exec # 设置source类型为exec,表示执行一个命令 a1.sources.r1.command = tail -F /var/log/flume-test.log # 设置要执行的命令,实时读取指定日志文件的最新内容 # 配置sink a1.sinks.k1.type = hdfs # 设置sink类型为hdfs,表示数据将被写入HDFS a1.sinks.k1.hdfs.path = hdfs://localhost:9000/flume/logs/ # 设置HDFS的目标路径 a1.sinks.k1.hdfs.filePrefix = fluem-logs- # 设置写入HDFS的文件前缀 a1.sinks.k1.hdfs.fileType = DataStream # 设置文件类型为DataStream,表示数据将以流的形式写入 # 配置channel a1.channels.c1.type = memory # 设置channel类型为memory,表示使用内存作为中转 a1.channels.c1.capacity = 1000 # 设置channel的容量 a1.channels.c1.transactionCapacity = 100 # 设置每个事务的容量 # 将source和sink绑定到channel a1.sources.r1.channels = c1 # 将source r1绑定到channel c1 a1.sinks.k1.channel = c1 # 将sink k1绑定到channel c1

启动Hadoop

start-dfs.sh

启动Flume Agent

配置文件准备好后,可以使用以下命令启动Flume Agent:

cd /usr/local/flume flume-ng agent --conf ./conf --conf-file flume-hdfs.conf --name a1 -Dflume.root.logger=INFO,console

给fluem-test.log追加一行日志

echo hello world! 2024 >> /var/log/flume-test.log


添加图片注释,不超过 140 字(可选)


回到flume启动窗口会增加日志


添加图片注释,不超过 140 字(可选)


验证

启动Flume Agent后,可以通过查看HDFS上的文件来验证数据是否成功上传。

hdfs dfs -ls /flume/logs/

在hdfs上已经增加了文件了


添加图片注释,不超过 140 字(可选)


我们用网页来看一下


添加图片注释,不超过 140 字(可选)


至此就完成了flume采集日志并上传至hdfs了。


补充:

以上使用的channel是memory的方式,也可以换成file模式,memory的弊端是中断会丢失数据。

# 定义agent的组件名称 a1.sources = r1 # 定义source组件的名称为r1 a1.sinks = k1 # 定义sink组件的名称为k1 a1.channels = c1 # 定义channel组件的名称为c1 # 配置source a1.sources.r1.type = exec # 设置source类型为exec,用于执行指定的命令 a1.sources.r1.command = tail -F /var/log/flume-test.log # 设置要执行的命令,这里使用tail命令实时读取日志文件 # 配置sink a1.sinks.k1.type = hdfs # 设置sink类型为hdfs,用于将数据写入Hadoop分布式文件系统 a1.sinks.k1.hdfs.path = hdfs://localhost:9000/flume/logs/ # 设置HDFS的目标路径,数据将被写入这个路径 a1.sinks.k1.hdfs.filePrefix = flume-logs- # 设置写入HDFS的文件前缀 a1.sinks.k1.hdfs.fileType = DataStream # 设置文件类型为DataStream,数据将以流的形式写入文件 # 配置channel为文件模式 a1.channels.c1.type = file # 设置channel类型为file,表示使用文件系统进行数据缓存 a1.channels.c1.checkpointDir = /var/lib/flume/checkpoint # 设置checkpoint目录,Flume将在这里存储已经处理的数据的状态 a1.channels.c1.dataDirs = /var/lib/flume/data # 设置数据目录,Flume将在这里缓存尚未传输到sink的数据


相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
4月前
|
分布式计算 Kubernetes Hadoop
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
233 6
|
4月前
|
分布式计算 资源调度 Hadoop
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
106 2
|
2月前
|
存储 分布式计算 Java
踏上大数据第一步:flume
Flume 是一个分布式、可靠且高效的系统,用于收集、聚合和移动大量日志数据。它是 Apache 顶级项目,广泛应用于 Hadoop 生态系统中。Flume 支持从多种数据源(如 Web 服务器、应用服务器)收集日志,并将其传输到中央存储(如 HDFS、HBase)。其核心组件包括 Source、Channel 和 Sink,分别负责数据获取、临时存储和最终存储。本文还介绍了在 Ubuntu 20.04 上安装 Flume 1.9.0 的步骤,涵盖 JDK 安装、Flume 下载、解压、配置环境变量及验证安装等详细过程。
70 10
|
3月前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第27天】在大数据时代,数据湖技术凭借其灵活性和成本效益成为企业存储和分析大规模异构数据的首选。Hadoop和Spark作为数据湖技术的核心组件,通过HDFS存储数据和Spark进行高效计算,实现了数据处理的优化。本文探讨了Hadoop与Spark的最佳实践,包括数据存储、处理、安全和可视化等方面,展示了它们在实际应用中的协同效应。
169 2
|
3月前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第26天】本文详细探讨了Hadoop与Spark在大数据处理中的协同作用,通过具体案例展示了两者的最佳实践。Hadoop的HDFS和MapReduce负责数据存储和预处理,确保高可靠性和容错性;Spark则凭借其高性能和丰富的API,进行深度分析和机器学习,实现高效的批处理和实时处理。
161 1
|
4月前
|
分布式计算 Hadoop 大数据
大数据体系知识学习(一):PySpark和Hadoop环境的搭建与测试
这篇文章是关于大数据体系知识学习的,主要介绍了Apache Spark的基本概念、特点、组件,以及如何安装配置Java、PySpark和Hadoop环境。文章还提供了详细的安装步骤和测试代码,帮助读者搭建和测试大数据环境。
113 1
|
4月前
|
SQL 分布式计算 大数据
大数据平台的毕业设计01:Hadoop与离线分析
大数据平台的毕业设计01:Hadoop与离线分析
230 0
|
9月前
|
存储 分布式计算 监控
【Flume】Flume 监听日志文件案例分析
【4月更文挑战第4天】【Flume】Flume 监听日志文件案例分析
|
9月前
|
存储 运维 监控
【Flume】flume 日志管理中的应用
【4月更文挑战第4天】【Flume】flume 日志管理中的应用
|
消息中间件 数据采集 SQL
1、电商数仓(用户行为采集平台)数据仓库概念、用户行为日志、业务数据、模拟数据、用户行为数据采集模块、日志采集Flume(一)
1、电商数仓(用户行为采集平台)数据仓库概念、用户行为日志、业务数据、模拟数据、用户行为数据采集模块、日志采集Flume(一)