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

引言

在大数据处理中,日志数据的采集是数据分析的第一步。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.mzph.cn/bicheng/7575.shtml

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

相关文章

3个电脑录制视频技巧,新手也能轻松上手

在当今信息化时代,电脑录制视频已经成为人们日常工作和学习中的一项重要技能。无论是录制在线会议、教程讲解还是游戏直播,一款合适的录屏软件都至关重要。本文将介绍三种常见的电脑录制视频方法,为广大用户提供详细的操作步骤,满…

【日志记录】---编译器内存对齐优化导致结构体指针引用成员出现地址错位

一:问题现象 在一个跨线程数据处理消息的时候出现了以下内存错位现象,在结构体指针引用的时候出现了成员数据异常 1.【数据源】线程A消息里面赋值的数据 //字节流 message.data[0] (unsigned char)model_brake_disable_type_read(); message.data[1]…

C++ primer笔记

1 类 p229 类的基本思想是 数据抽象 和 封装。 数据抽象:是依赖于接口和实现分离的编程技术。 类的实现包括 类的数据成员、负责接口实现的函数、定义类所需的各种私有函数。 2 引入this 成员函数通过this的额外隐式函数访问调用它的那个对象,this形参是…

【C++】C++11--- 类的新功能

目录 类的新功能 默认成员函数 示例 类成员变量初始化 强制生成默认函数的关键字default 禁止生成默认函数的关键字delete 类的新功能 默认成员函数 构造函数析构函数拷贝构造函数拷贝赋值重载取地址重载const取地址重载 C11在原先的6个默认成员函数的基础上&#xff0c…

OceanBase学习1:分布式数据库与集中式数据库的差异

目录 1. 传统集中式数据库 2. 数据库中间件的分库分表 3. 分布式数据库的基本特点及对比分析 4. OceanBase和传统数据库的对比 5. 小结 1. 传统集中式数据库 优点 成熟稳定:经过近40年的发展,应用到各行各业,产品技术非常成熟稳定行业适配性强:适配…

RabbitMQ的介绍和使用

1.同步通讯和异步通讯 举个例子,同步通讯就像是在打电话,因此它时效性较强,可以立即得到结果,但如果你正在和一个MM打电话,其他MM找你的话,你们之间是不能进行消息的传递和响应的 异步通讯就像是微信&#…

echarts tooltip过长被截断的解决方式

目录 溢出盒子显示弹框不溢出盒子显示弹框溢出盒子显示弹框 tooltip: {appendToBody: true, // 设置tooltip是否跟随鼠标移动position: function (point: any, params: any, dom

流畅的python-学习笔记_一等函数

函数对象 函数也是对象,操作可像对象一般操作 高阶函数 高阶函数指接受参数为函数,或返回函数的函数 不少高阶函数在py3已经有了替代品。map, filter可通过生成式实现,reduce(在functools里)可通过sum实…

解决 git克隆拉取代码报SSL certificate problem错误

问题:拉取代码时报错,SSL证书问题:证书链中的自签名证书问题 解决:只需要关闭证书验证,执行下面代码即可: git config --global http.sslVerify "false" 再次拉取代码就可以了

使用代理IP时,如何预防未知的风险?

在使用代理IP时,预防未知的风险是至关重要的。代理IP虽然提供了诸多便利,如匿名浏览、访问控制和内容过滤等,但如果不加以妥善管理和使用,可能会面临数据泄露、隐私暴露、恶意活动关联等风险。以下是一些建议,以帮助您…

在vue中的class增加事件监控

目录 1、代码如下&#xff1a; 2、代码说明&#xff1a; 1、代码如下&#xff1a; <div class "addClassLister" ></div>mounted () {this.$nextTick().then(() > {const firstNode document.querySelector(.addClassLister)console.log(firstNod…

使用mxnet中的img2rec.py制作rec数据集

源码链接&#xff1a;mxnet/tools/im2rec.py at master apache/mxnet GitHub 重点关注入参函数即可&#xff0c; def parse_args():"""Defines all arguments.Returns-------args object that contains all the params"""parser argparse.A…

如何配置 OpenAI 环境变量

配置 OpenAI 环境变量 操作步骤 本地创建一个新文件夹&#xff08;文件夹命名最好是英文、文件夹内无其他文件&#xff09;打开编辑器&#xff08;VScode&#xff09;→打开刚才创建的「文件夹」在项目文件夹里&#xff0c;创建一个名为 .env 的文件 不是 .env.py不是 xxx.env…

一键实现在VS Code中绘制流程图

VS Code是一款常用的IDE&#xff0c;受到许多用户的欢迎和喜爱。而其较为出众的一点&#xff0c;就是较好的可拓展性&#xff0c;即丰富的插件应用&#xff0c;这些应用可以极大地提高生产效率&#xff0c;并优化日常使用。 流程图是一种直观的图示方法&#xff0c;可以用简明…

BIGRU、CNN-BIGRU、CNN-BIGRU-ATTENTION、TCN-BIGRU、TCN-BIGRU-ATTENTION合集

&#xff08;BIGRU、CNN-BIGRU、CNN-BIGRU-ATTENTION、TCN-BIGRU、TCN-BIGRU-ATTENTION&#xff09;时&#xff0c;我们可以从它们的基本结构、工作原理、应用场景以及优缺点等方面进行详细介绍和分析。 BIGRU、CNN-BIGRU、CNN-BIGRU-ATTENTION、TCN-BIGRU等&#xff08;matlab…

LabVIEW如何通过子VI更改主VI控件属性?

在LabVIEW中&#xff0c;可以通过使用Local Variable或Property Node来实现主VI控件属性的更改。这些方法可以在主VI和子VI之间传递数据和控件属性。 Local Variable: 使用Local Variable可以在子VI中直接访问并修改主VI中的控件属性。在子VI中创建Local Variable&#xff0c;并…

层级实例化静态网格体组件:开启大量模型处理之门

前言 在数字孪生的世界里&#xff0c;我们常常需要构建大量的模型来呈现真实而丰富的场景。然而&#xff0c;当使用静态网格体 &#xff08;StaticMesh &#xff09;构建大量模型时&#xff0c;可能会遇到卡顿的问题&#xff0c;这给我们带来了不小的困扰&#x1f623;。那么&…

MySQL几种引擎的差别和应用场景汇总

MySQL 提供了多种存储引擎&#xff0c;每种引擎都有其特定的设计目的和适用场景。 下面是几种常见存储引擎的简要对比和应用场景&#xff0c; 存储引擎对比与应用场景 InnoDB 特点: 支持事务处理&#xff0c;行级锁&#xff0c;外键约束&#xff0c;崩溃恢复能力&#xff08;A…

Spring Data JPA自定义Id生成策略、复合主键配置、Auditing使用

前言 在Spring Data JPA系列的第一篇文章 SpringBoot集成JPA及基本使用-CSDN博客 中讲解了实体类的Id生成策略可以通过GeneratedValue注解进行配置&#xff0c;该注解的strategy为GenerationType类型&#xff0c;GenerationType为枚举类&#xff0c;支持四种Id的生成策略&…

STM32F407VET6 学习笔记2:定时器、串口、自定义串口打印函数

今日继续学习使用嘉立创购买的 立创梁山派天空星&#xff0c;芯片是 STM32F407VET6 因为已经有学习基础了&#xff0c;所以学习进度十分快&#xff0c;这次也是直接一块学习配置定时器与串口了&#xff0c;文章也愈来愈对基础的解释越来越少了...... 文章提供测试代码讲解、完…