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++】C++11--- 类的新功能

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

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

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

RabbitMQ的介绍和使用

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

【如此简单!数据库入门系列】之思想地图 -- 系列目录

文章目录 1 前言2 基本概念3 基本原理4 数据库历史5 数据模型6 数据库规范化7 数据存储8 总结 1 前言 目录是思想地图,指引我们穿越文字的森林。 为了方便系统性阅读,将【如此简单!数据库入门系列】按照模块划分了目录结构。 2 基本概念 【…

Jetpack Compose(一

Intellij IDEA构建Android开发环境 IntelliJ IDEA 2023.2.1 Android开发变化 IDEA配置使用Gradle 新建Compose工程,取名ComposeStudy 可以看到的是IDEA为项目初始化了部分代码 使用Compose开发不再需要使用xml文件来设计布局了 Compose中的Text也不同于Android V…

ogv转mp4怎么转?只需3个步骤~

OGV(Ogg Video)是一种开源的视频文件格式,起源于对数字媒体领域的开放标准的需求。作为Ogg多媒体容器的一部分,OGV的设计初衷是提供一种自由、高质量的视频编码方案,以满足多样化的应用需求。 支持打开MP4文件格式的软…

119. 再谈接口幂等性

文章目录 0. 前言1. insert前先select2. 加悲观锁3. 加乐观锁5. 加唯一索引【配合 (1. insert前先select )最常用 】6. 建防重表6. 根据状态机7. 加分布式锁8. 获取token 0. 前言 在 93. 通用防重幂等设计 一文中,已经介绍过幂等的使用。该文…

【一看就懂】UART、IIC、SPI、CAN四种通讯协议对比介绍

UART、IIC、SPI、CAN四种通信协议对比 通信方式传输线通讯方式标准传输速度使用场景UARTTX(发送数据线)、RX(接收数据线)串行、异步、全双工115.2 kbit/s(常用)计算机和外部设备通信(打印机)IICSCL(时钟线)、SDA(数据线)串行、同步、半双工100 kbit/s(标…

一种由RSOA和PIC集成的宽可调激光器

----翻译自Nouman Zia, Samu-Pekka Ojanen, Jukka Viheriala, Eero Koivusalo, Joonas Hilska, Heidi Tuorila, and Mircea Guina在optics letter上发的文章vol.48, Issue 5, pp. 1319-1322(2023) 摘要:通过光子集成方式实现的2-3μm波长的可调激光器,在…