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

news2024/11/26 4:53:44

引言

在大数据处理中,日志数据的采集是数据分析的第一步。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从一个本地端口收集数据,并将其输出到控制台。

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

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

验证

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

hdfs dfs -ls /flume/logs/

在hdfs上已经增加了文件了

我们用网页来看一下

至此就完成了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的数据

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

视频剪辑图文实例:一键操作,轻松实现视频批量片头片尾减时

视频剪辑是现代媒体制作中不可或缺的一环,而批量处理视频更是许多专业人士和爱好者的常见需求。在剪辑过程中,调整视频的片头片尾时长可以显著提升视频的质量和观感。本文将通过图文实例的方式,向您展示如何一键操作,轻松实现视频…

面试集中营—Redis面试题

一、Redis的线程模型 Redis是基于非阻塞的IO复用模型,内部使用文件事件处理器(file event handler),这个文件事件处理器是单线程的,所以Redis才叫做单线程的模型,它采用IO多路复用机制同时监听多个socket&a…

Ubuntu24.04安装中文输入法

Ubuntu24.04安装中文输入法 为了更好的体验,请访问个人博客 www.huerpu.cc:7000 一、添加中文语言支持 在安装中文输入法之前,首选要添加中文语言支持。选择System,点击Region & Language。 点击Manage Install Languages。 点击Insta…

Ansible自动化运维工具 - playbook 剧本编写

一. inventory 主机清单 Inventory 支持对主机进行分组,每个组内可以定义多个主机,每个主机都可以定义在任何一个或多个主机组内。 1.1 inventory 中的变量含义 Inventory 变量名 含义ansible_hostansible连接节点时的IP地址ansible_port连接对方…

vue组件传参数

在使用vue3进行开发的时候,我们一定绕不开的一个技术栈,就是组件传参。接下来我将介绍在vue3中如何运用这项技术。 在组件传参数中,分为两类,父传子参,或子传父参。需要了解的两个方法就是defineProps和defineEmits。…

5、google优化seo流程

源地址:https://www.ctvol.com/googleseoer/1421327.html 在googleseo中,我们都知道一个企业或者个人或者政府单位做优化时候,事先都会建站然后进行优化。在google优化中也分建站前,建站中,建站后的优化。 1、googles…

Python爬虫--Urllib基础

1. urlretrieve Urllib 库也是类似 request 库,用来解析html的 首先讲 urlretrieve 子模块 这个模块的作用是将网页下载到本地 语法: urlretrieve(网址,本地地址) 例如: 这样就可以了,他会将百度网页下载到本地D盘下&#x…

Vue + Element-plus 快速入门

1. 构建项目 npm init vuelatest # 可选项一路回车,使用默认NO,按提示执行3条命令 cd 项目名 npm install npm run dev 2. 下载element-plus npm install element-plus --save 3.替换main.js import { createApp } from vue import ElementPlus from element-plu…

【LAMMPS学习】八、基础知识(5.11)磁自旋

8. 基础知识 此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语,以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各…

2024年第九届数维杯数学建模A题思路分享

文章目录 1 赛题思路2 比赛日期和时间3 竞赛信息4 建模常见问题类型4.1 分类问题4.2 优化问题4.3 预测问题4.4 评价问题 5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 比赛日期和时间 报名截止时间:2024…

解决Node.js mysql客户端不支持认证协议引发的“ER_NOT_SUPPORTED_AUTH_MODE”问题

这是一个版本问题 我用koa2和mysql2链接就没有问题 不知道这个老项目运行为啥有这个问题 解决方案 打开mysql运行这个两个命令: ALTER USER rootlocalhost IDENTIFIED WITH mysql_native_password BY 123321; FLUSH PRIVILEGES; 须知(给小白看的!) …

【CTF Web】XCTF GFSJ0477 backup Writeup(备份文件+源码泄漏+目录扫描)

backup X老师忘记删除备份文件,他派小宁同学去把备份文件找出来,一起来帮小宁同学吧! 解法 使用 dirsearch 扫描目录。 dirsearch -u http://61.147.171.105:49361/下载: http://61.147.171.105:64289/index.php.bak打开 index.php.bak&am…

apollo资料整理

Application X: Application X Apollo: Apollo 自动驾驶开放平台 Cyber RT API tutorial — Cyber RT Documents documentation Cyber RT API tutorial — Cyber RT Documents documentation GitHub - daohu527/dig-into-apollo: Apollo notes (Apollo学习笔记) - Apollo l…

专业软件测试会议

全国软件测试会议:这是一个系列性的专业会议,由中国的学术机构或专业组织主办,例如中国计算机学会的容错计算专业委员会。此会议自2005年起开始举办,历届会议地点包括北京、昆明和武汉等地。会议内容覆盖软件测试理论、实践、工具…

基于SpringBoot+Vue快递业务管理系统设计和实现(源码+LW+部署讲解)

🌹作者简介:✌全网粉丝10W,前大厂员工,多篇互联网电商推荐系统专利,现有多家创业公司,致力于建站、运营、SEO、网赚等赛道。也是csdn特邀作者、博客专家、Java领域优质创作者,博客之星、掘金/华…

超声波测距传感器--第七天

1.超声波测距 型号:HC-SR04 接线参考:模块除了两个电源引脚外,还有TRIG,ECHO引脚,这两个引脚分别接我们开发板的P1.5和P1.6端 超声波模块是用来测量距离的一种产品,通过发送超声波,利用时间差和声音传播速度,计算模块到前方障碍物的距离。 2. 如何让它发送波: Tri…

头歌C语言课程实验(选择结构程序设计)

第1关:排序 任务描述 本关任务:下面的程序是从键盘输入三个整数按从小到大的顺序输出。 为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。 相关知识 输入格式 输入格式如下: printf("…

DB-GPT: Empowering Database Interactions with Private Large Language Models 导读

本文介绍了一种名为DB-GPT的新技术,它将大型语言模型(LLM)与传统数据库系统相结合,提高了用户使用数据库的体验和便利性。DB-GPT可以理解自然语言查询、提供上下文感知的回答,并生成高准确度的复杂SQL查询,…

人工智能|推荐系统——工业界的推荐系统之交叉

Factorized Machine 线性模型预测是特征的加权和。(只有加,没有乘。) 二阶特征交叉 可以通过矩阵分解减少模型参数量 深度交叉网络(DCN) 之前提到过的召回、排序模型中的神经网络可以用任意网络结构;常见的…

人工智能|机器学习——强大的 Scikit-learn 可视化让模型说话

一、显示 API 简介 使用 utils.discovery.all_displays 查找可用的 API。 Sklearn 的utils.discovery.all_displays可以让你看到哪些类可以使用。 from sklearn.utils.discovery import all_displays displays all_displays() displays Scikit-learn (sklearn) 总是会在新版本…