Flume 从入门到精通

news2024/11/20 18:40:32

Flume

Flume 是一种分布式、可靠且可用的服务 高效收集、聚合和移动大量日志 数据。

它具有基于流媒体的简单灵活的架构 数据流。它坚固耐用,容错,可靠性可调 机制以及许多故障转移和恢复机制。

它 使用允许在线分析的简单可扩展数据模型 应用。

flume

系统要求

  1. Java 运行时环境 - Java 1.8 或更高版本
  2. 内存 - 为源、通道或接收器使用的配置提供足够的内存
  3. 磁盘空间 - 为通道或接收器使用的配置提供足够的磁盘空间
  4. 目录权限 - 代理使用的目录的读/写权限

数据流模型

flume

创建软件存放目录

mkdir -p /opt/soft
cd /opt/soft

下载安装包

wgt https://www.apache.org/dyn/closer.lua/flume/1.11.0/apache-flume-1.11.0-bin.tar.gz

解压安装包并改名

tar -zxvf apache-flume-1.11.0-bin.tar.gz
mv apache-flume-1.11.0-bin.tar.gz flume

配置系统环境变量

vim /etc/profile
export FLUME_HOME=/opt/soft/flume
export PATH=$PATH:$FLUME_HOME/bin
source /etc/profile
printenv

创建配置文件目录

mkdir -p /opt/soft/flume-conf
cd /opt/soft/flume-conf

采集网络数据

编写配置文件

vim netcat.conf
# netcat.conf: 这是一个单节点flume配置

# 定义这个 agent 各个组件的名字
a1.sources = r1
a1.sinks = k1
a1.channels = c1

# 描述和配置 source 组件 r1
a1.sources.r1.type = netcat
a1.sources.r1.bind = 0.0.0.0
a1.sources.r1.port = 44444

# 描述和配置 sink 组件 k1
# logger 控制台打印
a1.sinks.k1.type = logger

# 描述和配置 channel 组件 c1 缓存事件在内存中
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

# 绑定 source 和 sink 到 channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

启动 agent

flume-ng agent --name a1 --conf conf -conf-file netcat.conf
flume-ng agent -n a1 -c conf -f netcat.conf

flume-ng agent --conf conf --conf-file /opt/soft/flume-conf/netcat.conf --name a1 -Dflume.root.logger=INFO,console
flume-ng agent -c conf -f /opt/soft/flume-conf/netcat.conf -n a1 -Dflume.root.logger=INFO,console

在线安装网络工具 netcat

yum -y install nc

netcat 发送 socket 数据

nc spark03 44444

file-to-hdfs

创建HDFS目录

hdfs dfs -mkdir -p /region
hdfs dfs -ls /

编写配置文件

vim file2hdfs.conf
a1.sources = r1
a1.sinks = k1
a1.channels = c1

a1.sources.r1.type = spooldir
a1.sources.r1.spoolDir = /root/region

a1.sinks.k1.type = hdfs
a1.sinks.k1.hdfs.path = hdfs://lihaozhe/region
a1.sinks.k1.hdfs.filePrefix = region-
a1.sinks.k1.hdfs.fileType = DataStream
a1.sinks.k1.hdfs.writeFormat = Text
a1.sinks.k1.hdfs.rollInterval = 3600
a1.sinks.k1.hdfs.rollSize = 134217728
a1.sinks.k1.hdfs.rollCount = 0

a1.channels.c1.type = file
a1.channels.c1.dataDirs = /opt/cache/data/region/data
a1.channels.c1.checkpointDir = /opt/cache/data/region/checkpoint

a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
mkdir -p /opt/cache/data/region/data
mkdir -p /opt/cache/data/region/checkpoint

启动 agent

flume-ng agent -n a1 -c conf -f file2hdfs.conf

exec-to-hdfs

运行web应用实时生成log日志

编写配置文件

vim exec2hdfs.conf
a1.sources = r1
a1.sinks = k1
a1.channels = c1

a1.sources.r1.type = exec
a1.sources.r1.command = tail -F /root/logs/info.log

a1.sinks.k1.type = hdfs
a1.sinks.k1.hdfs.path = hdfs://lihaozhe/logs/%Y-%m-%d/%H%M/
a1.sinks.k1.hdfs.useLocalTimeStamp = true
a1.sinks.k1.hdfs.filePrefix = info-
a1.sinks.k1.hdfs.fileSuffix = .log
a1.sinks.k1.hdfs.fileType = DataStream
a1.sinks.k1.hdfs.writeFormat = Text
a1.sinks.k1.hdfs.rollInterval = 3600
a1.sinks.k1.hdfs.rollSize = 134217728
a1.sinks.k1.hdfs.rollCount = 0

a1.sinks.k2.type = logger

a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

启动 agent

flume-ng agent -n a1 -c conf -f exec2hdfs.conf

exec-to-avro-to-hdfs

flume-avro-01 spark01

flume-avro-02 spark02

flume-hdfs spark03

avro

avro

flume-avro-01.conf

a1.sources = r1
a1.sinks = k1
a1.channels = c1

a1.sources.r1.type = exec
a1.sources.r1.command = tail -F /root/logs/info.log

a1.sinks.k1.type = avro
a1.sinks.k1.hostname = spark03
a1.sinks.k1.port = 44444

a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

flume-avro-02.conf

a1.sources = r1
a1.sinks = k1
a1.channels = c1

a1.sources.r1.type = exec
a1.sources.r1.command = tail -F /root/logs/info.log

a1.sinks.k1.type = avro
a1.sinks.k1.hostname = spark03
a1.sinks.k1.port = 44444

a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

avro-to-hdfs.conf

a1.sources = r1
a1.sinks = k1
a1.channels = c1

a1.sources.r1.type = avro
a1.sources.r1.bind = 0.0.0.0
a1.sources.r1.port = 44444

a1.sinks.k1.type = hdfs
a1.sinks.k1.hdfs.path = hdfs://lihaozhe/logs/%Y-%m-%d/%H
a1.sinks.k1.hdfs.useLocalTimeStamp = true
a1.sinks.k1.hdfs.filePrefix = info-
a1.sinks.k1.hdfs.fileSuffix = .log
a1.sinks.k1.hdfs.fileType = DataStream
a1.sinks.k1.hdfs.writeFormat = Text
a1.sinks.k1.hdfs.rollInterval = 3600
a1.sinks.k1.hdfs.rollSize = 134217728
a1.sinks.k1.hdfs.rollCount = 0

a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

启动 agent

flume-ng agent -n a1 -c conf -f avro-to-hdfs.conf
flume-ng agent -n a1 -c conf -f flume-avro-01.conf
flume-ng agent -n a1 -c conf -f flume-avro-02.conf

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

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

相关文章

Java程序设计入门教程---循环结构(while)

目录 思考 概念 语法 案例:求1到100的整数和? 案例分析 思考 1. 让你输出10000000000000000句“Hello,world!”,你怎么写代码? 2. 求1到100的整数和? 概念 循环结构程序多次循环执行相同或相近的任务。 while循环…

Nacos注册中心一些配置说明

未安装Nacos的可以参考以下的安装教程 Nacos 安装教程(史上最详细保姆级教程)_nacos安装_大三的土狗的博客-CSDN博客 注意: Nacos默认是集群部署,如果想单机启动需要在对应Nacos的bin目录执行下面的命令 因为以后不可能只有一个Nacos注册中心,所以就默认…

BERT+TextCNN实现医疗意图识别项目

BERTTextCNN实现医疗意图识别项目 一、说明 本项目采用医疗意图识别数据集CMID传送门 数据集示例: {"originalText": "间质性肺炎的症状?", "entities": [{"label_type": "疾病和诊断", "start_pos&quo…

Qt-数据库开发-用户登录、后台管理用户

Qt-数据库开发-用户登录、后台管理用户 [1] Qt-数据库开发-用户登录、后台管理用户1、概述2、实现效果 [2] Qt使用SqlLite实现权限管理初始化数据库创建数据表插入数据可使用结构体对数据信息进行封装数据库查询函数为数据库更新数据函数为删除数据函数为 [3] 测试效果 [1] Qt-…

最详细的静态路由的原理和配置

第四章:静态路由 转发数据包是路由器的最主要功能。路由器转发数据包时需要查找路由表,管理员可以通过手工的方法在路由器中直接配置路由表,这就是静态路由。虽然静态路由不适合于在大的网络中使用,但是由于静态路由简单、路由器…

亚马逊云科技让数十亿的数据清洗、转移和查询只需要10分钟

随着数字经济对经济社会的发展贡献愈渐增多,数字金融作为数字经济的有机组成部分和重要支撑,也正成为金融领域竞争与合作的制高点。但在数据要素推动数字金融高速发展的同时,逐渐复杂的互联网环境与日益增强的金融监管力度,对数字…

FL Studio21最新中文版本下载及详细安装教程

FL Studio21最新中文版本是一款专业的音乐制作软件,软件支持录音、音频剪辑、混音、编曲等众多实用功能,可以让你的电脑化身为专业的录音室,进行音乐的录制和剪辑工作,帮助用户轻松创作出各种优秀的音乐作品。 FL Studio21中文版…

亚马逊云科技携手普华永道,推出健康及生命科学行业出海合规指南

自2022年起,国内医疗健康行业的投融资热度略有降低。但医疗行业投资结构正面临转型,投资逐步呈现全球化布局的趋势,在跨境合作领域仍持续释放活力。同时,随着药品集采、医保谈判持续推进,越来越多的中国健康及生命科学…

基于RK3588+TensorFlow的人工智能跨模态行人重识别方法及应用

摘要: 跨模态行人重识别技术(cm-ReID)旨在可见光、红外等不同模态图像中识别出同一个人,其在人 机协同、万物互联、跨界融合、万物智能的智能系统与装备中有重要应用。提出一种数据增强的跨模态行人 重识别方法,在波长…

【Vue 基础】尚品汇项目-10-Search模块中商品分类与过渡动画

一、商品导航的显示与隐藏 打开“src/componetnts/TypeNav/index.vue”,让商品导航默认为显示 在TypeNav组件挂载完毕时,判断当前的路由是否是“/home”,如果不是“/home”,就将分类导航隐藏 当鼠标移入时 移入时让商品导航显示 …

如何在Windows上轻松安全的将数据从HDD迁移到SSD?

当你打算升级硬盘时,如何将数据从HDD迁移到SSD?你可以使用一款免费的软件将所有数据从一个硬盘克隆到另一个硬盘。 为什么要将数据从HDD迁移到SSD? HDD(机械硬盘)和SSD(固态硬盘)是目前常用…

java 学习日记

今天先搞题目 给你一个points 数组,表示 2D 平面上的一些点,其中 points[i] [xi, yi] 。 连接点 [xi, yi] 和点 [xj, yj] 的费用为它们之间的 曼哈顿距离 :|xi - xj| |yi - yj| ,其中 |val| 表示 val 的绝对值。 请你返回将所…

DS1302芯片介绍

低功耗时钟芯片DS1302可以对年、月、日、时、分、秒进行计时,且具有闰年补偿等多种功能。 DS1302的性能特性: 实时时钟,可对秒、分、时、日、周、月以及带闰年补偿的年进行计数; 用于高速数据暂存的318位RAM; 最少引脚…

Redis --- 持久化、主从

一、Redis持久化 Redis有两种持久化方案: RDB持久化 AOF持久化 1.1、RDB持久化 RDB全称Redis Database Backup file(Redis数据备份文件),也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故…

第 5 章 HBase 优化

5.1 RowKey 设计 一条数据的唯一标识就是 rowkey,那么这条数据存储于哪个分区,取决于 rowkey 处于 哪个一个预分区的区间内,设计 rowkey的主要目的 ,就是让数据均匀的分布于所有的 region 中,在一定程度上防止数据倾斜…

年前无情被裁,我面试大厂的这3个月....

春招接近尾声,即将远去的“金三银四”今年也变成了“铜三铁四”。 大厂不断缩招,不容忽视的疫情影响,加上不断攀升的毕业生人数,各种需要应对的现实问题让整个求职季难上加难。 在这个异常残酷的求职季,很多人的困惑…

阿里系App抓包详细分析

InnerMtopInitTask OpenMtopInitTask ProductMtopInitTask 三个实现分别对应的instanceId为:OPEN、INNER、PRODUCT,咱们主要看InnerMtopInitTask这个实现,分析里面重要的初始化步骤,最后再使用Charles完成抓包。 IMtopInitTas…

发帖引蜘蛛:让你的网站在搜索引擎中的曝光率翻倍!

在当今的数字时代,SEO已成为提高网站曝光率和流量的重要手段。发帖引蜘蛛是一种有效的SEO技术,它可以让您的网站在搜索引擎中的曝光率翻倍,从而为您的业务带来更多的流量和潜在客户。 发帖引蜘蛛是一种简单易学的技术,它需要您在…

SPSS如何进行信度分析之案例实训?

文章目录 0.引言1.信度分析2.多维刻度分析 0.引言 因科研等多场景需要进行绘图处理,笔者对SPSS进行了学习,本文通过《SPSS统计分析从入门到精通》及其配套素材结合网上相关资料进行学习笔记总结,本文对信度分析进行阐述。 1.信度分析 &#…

【ROS】如何让ROS中节点实现数据交换Ⅰ--ROS话题通信

Halo,这里是Ppeua。平时主要更新C语言,C,数据结构算法…感兴趣就关注我吧!你定不会失望。 目录 0.ROS文件系统及常用指令1.话题通信概念2.利用标准消息类型实现话题通信实现(python)2.1发布方实现2.2订阅方实现 3.利用自定义消息类…