Flume(一)【Flume 概述】

前言

        今天实在不知道学点什么好了,早上学了3个多小时的 Flink ,整天只学一门技术是很容易丧失兴趣的。那就学点新的东西 Flume,虽然 Kafka 还没学完,但是大数据生态圈的基础组件也基本就剩这倆了。

Flume 概述

        生产环境中的数据一般都是用户在客户端的一些行为操作形成的日志,一般操作日志都会先存到服务器,而不是直接就存到 HDFS 当中去。那么如何把服务器中的日志数据传输到 HDFS 中呢?这就需要一个采集功能。

        大数据主要解决的三大问题:采集、存储和计算。我们大数据框架也正是围绕着这这三大问题,此外还有一些工具框架,比如 Azkaban ,它是一个任务调度框架。类似我们 linux 中 crontab 命令,可以帮我们定时地执行任务。但是 Linux 中的 crontab 不能完全胜任生产中的需求,比如依赖管理,crontab无法处理任务之间的依赖关系。如果你有一系列的任务需要按照一定的顺序执行,crontab可能不是最好的选择。此外 Azkaban 提供了更多专业的功能,比如工作流管理、可视化界面以及故障处理和告警等。

        Flume 官方文档地址:Flume 1.11.0 User Guide — Apache Flume

1、Flume 定义

        Flume 是 Cloudera 提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。Flume 基于流式架构,灵活简单。

        这里的分布式的概念不同于 hadoop ,这里的分布式指的是它可以从分布式的各个节点的日志数据收集起来,而不是说 Flume 需要搭建一个分布式的集群环境。

        这里的日志指的是文本数据,而视频、音频、ppt这种数据是不能够传输的。

        Flume 是动态地传输数据(实时),你上传一条它就传输一条。

对于服务器本地磁盘中的数据,既然我们可以使用 hadoop fs -put 命令来直接上传到 HDFS 为什么还要使用 Flume 呢?

因为 Flume 是实时的!

2、Flume 基础架构

这里 flume 官网的一个架构图:

2.1、Agent

Flume agent 是一个 JVM(Java 虚拟机)进程,它以事件的形式将数据从一个外部源传递到下一个目的地(hop)。

Agent 由 3个部分组成,Source、Channel、Sink。

2.2、Source

Source是负责接收数据到Flume Agent的组件。Source组件可以处理各种类型、各种格式的日志数据,包括avro、thrift、exec、jms、spooling directory、netcat、 taildir 、sequence generator、syslog、http、legacy。

2.3、Sink

Sink不断地轮询Channel中的事件且批量地移除它们,并将这些事件批量写入到存储或索引系统、或者被发送到另一个Flume Agent。
Sink组件目的地包括hdfs、logger、avro、thrift、ipc、file、HBase、solr、自定义。

2.4、Channel

Channel是位于Source和Sink之间的缓冲区。因此,Channel允许Source和Sink运作在不同的速率上。Channel是线程安全的,可以同时处理几个Source的写入操作和几个Sink的读取操作。

比如我们的 Source 接受日志数据的速度和 Sink 往下游发送数据的速度不对等,那么这就需要一个缓冲区来暂时存储我们的数据。

        Flume自带两种Channel:Memory Channel (内存,速度快但不安全)和 File Channel(磁盘,速度慢但安全)。
        Memory Channel 是内存中的队列。Memory Channel在不需要关心数据丢失的情景下适用。如果需要关心数据丢失,那么Memory Channel就不应该使用,因为程序死亡、机器宕机或者重启都会导致数据丢失。
        File Channel 将所有事件写到磁盘。因此在程序关闭或机器宕机的情况下不会丢失数据。

2.5、Event

        Event 是Flume 的传输单元,Flume数据传输的基本单元,以Event的形式将数据从源头送至目的地。

        Event 由 Header 和 Body 两部分组成,Header 用来存放该event的一些属性,为K-V结构;Body 用来存放该条数据,形式为字节数组。


Flume 入门案例

1、监控端口数据打印到控制台

这是 flume 官网的一个案例。

1、案例需求:

使用Flume监听一个端口,收集该端口数据,并打印到控制台。

2、需求分析:

  1. 通过 netcat 工具向本机的 4444 端口发送数据
  2. Flume 监听本机的 4444 端口,并使用 Source 收集数据
  3. Flume 通过 Sink(这里用 logSink只做打印,如果要上传HDFS 可以使用 hdfsSink) 直接打印到控制台

3、实现步骤

(1)安装 netcat

yum -y install nc

(2)判断端口是否被占用

sudo netstat -nlp | grep 44444

(3)创建Flume Agent配置文件flume-netcat-logger.conf

我们先在 flume 目录下创建 job目录 

touch netcat-flume-logger.conf
# Name the components on this agent
a1.sources = r1
a1.sinks = k1
a1.channels = c1# source 配置
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 44444# sink 配置
a1.sinks.k1.type = logger    # 输出到控制台# channel 配置: 这里使用是 memory channel
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000    # 事件容量
a1.channels.c1.transactionCapacity = 100    # 事务容量(单个事务最大的发送容量,收集到100个事件再去提交事务,事务容量必须<事件容量,事务的作用是保证数据不丢失,回滚)# 绑定 source 和 sink 到 channel 
a1.sources.r1.channels = c1    # 将source 和 channel绑定起来(一个source可以绑定多个channel)
a1.sinks.k1.channel = c1    #将 sink 和 channel 绑定起来(一个sink只能绑定一个channel)

(4) 开启 flume 监听端口

bin/flume-ng agent -n a1 -c conf/ -f job/netcat-flume-logger.conf -Dflume.root.logger=INFO,console

(5)使用netcat工具向本机的44444端口发送内容

nc localhost 44444
>hello
>flume
>flink
>spark

 (6)在 flume 窗口查看

 

2、实时监控单个追加文件

抽时间更新

3、实时监控目录下多个新文件

4、实时监控目录下的多个追加文件

总结

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

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

相关文章

一道 python 数据分析的题目

python 数据分析的题目。 做题方法&#xff1a;使用 pandas 读取数据&#xff0c;然后分析。 知识点&#xff1a;pandas&#xff0c;正则表达式&#xff0c;py知识。 过程&#xff1a;不断使用 GPT&#xff0c;遇到有问题的地方自己分析&#xff0c;把分析的结果告诉 GPT&am…

点成方案丨使用细胞计数仪监控CAR-T细胞疗法的生产

一、概述 嵌合抗原受体&#xff08;CAR&#xff09;是经过改造后赋予T细胞靶向特定抗原的新能力的受体蛋白。这些受体是嵌合的&#xff0c;因为它们将抗原结合和T细胞激活功能结合到一个受体中。CAR-T细胞疗法使用经过CAR改造的T细胞来治疗癌症。CAR-T免疫疗法的前提是修改T细…

PHP原生类总结利用

SPL介绍 SPL就是Standard PHP Library的缩写。据手册显示&#xff0c;SPL是用于解决典型问题(standard problems)的一组接口与类的集合。打开手册&#xff0c;正如上面的定义一样&#xff0c;有许多封装好的类。因为是要解决典型问题&#xff0c;免不了有一些处理文件…

如何使用iPhone15在办公室观看家里电脑上的4k电影?

如何使用iPhone15在办公室观看家里电脑上的4k电影&#xff1f; 文章目录 如何使用iPhone15在办公室观看家里电脑上的4k电影&#xff1f;1.使用环境要求&#xff1a;2.下载群晖videostation&#xff1a;3.公网访问本地群晖videostation中的电影&#xff1a;4.公网条件下使用电脑…

论文浅尝 | 用于开放式文本生成的事实增强语言模型

笔记整理&#xff1a;李煜&#xff0c;东南大学硕士&#xff0c;研究方向为知识图谱 链接&#xff1a;https://proceedings.neurips.cc/paper_files/paper/2022/hash/df438caa36714f69277daa92d608dd63-Abstract-Conference.html 1. 动机 生成式语言模型&#xff08;例如 GPT-3…

CNCC 2023收官,Milvus Cloud与行业大咖共话向量数据库系统

近期,CNCC 2023 在沈阳圆满结束,紧凑、前沿的 129 场技术论坛让人印象深刻。据悉,这 129 场技术论坛涵盖人工智能、安全、计算+、软件工程、教育、网络、芯片、云计算等 30 余个方向。Zilliz 受邀参与【智能时代的大数据系统】技术论坛。 智能时代的到来,无疑给社会经济和日…

【深度学习】SimSwap: An Efficient Framework For High Fidelity Face Swapping 换脸,实战

代码&#xff1a;https://github.com/neuralchen/SimSwap 文章目录 摘要介绍RELATED WORK实验结论代码实操 SimSwap是一个高保真度人脸交换的高效框架。它将源脸的身份转移到目标脸上&#xff0c;同时保留目标脸的属性。该框架包括ID注入模块&#xff08;IIM&#xff09;&#…

Avatar虚拟形象解决方案,趣味化的视频拍摄与直播新体验

企业们正在寻找新的方式来吸引和保持观众的注意力,一种新兴的解决方案就是使用Avatar虚拟形象技术&#xff0c;这种技术可以让用户在视频拍摄或直播场景中&#xff0c;以自定义的数字人形象出现&#xff0c;同时保持所有的表情和脸部驱动。美摄科技正是这个领域的领军者&#x…

Redhat Linux v8.2 实时内核环境配置及参数调优

Redhat-Linux V8.2 实时内核环境配置及参数调优 -------物理机 & 虚拟机 一、前言 本文档包含有关Redhat Linux for Real Time的基本安装和调试信息。许多行业和组织需要极高性能的计算&#xff0c;并且可能需要低且可预测的延迟&#xff0c;尤其是在金融和电信行业中。延…

【工艺库】SMIC数字后端工艺库

工艺库文件 Calibredigital文件夹apollolefprimetimesynopsys TD系列文件夹 本来是想找一个工艺库&#xff0c;想要其包含逻辑综合和SPICE Model相关的库文件&#xff0c;但是找了很久也没有直接找到想要的&#xff0c;主要原因还是自己对工艺库文件的构成不是很清楚&#xff0…

《QT从基础到进阶·二十六》绘制多个图形项(QGraphicsRectItem,QGraphicsLineItem,QGraphicsPolygonItem)

这个demo用QT实现了对多个图形项的绘制&#xff0c;包括矩形的绘制&#xff0c;直线的绘制和多边形的绘制&#xff0c;是之前一章中绘制矩形的增强版&#xff0c;之前一章节关于矩形的绘制可以参考&#xff1a;《QT从基础到进阶十五》用鼠标绘制矩形&#xff08;QGraphicsView、…

Web安全:Vulfocus 靶场搭建.(漏洞集成平台)

Web安全&#xff1a;Vulfocus 靶场搭建.&#xff08;漏洞集成平台&#xff09; Vulfocus 是一个包含了多种漏洞靶场的镜像。每个靶场都有具体的漏洞环境和攻击点。Vulfocus 的靶场包括了 Web 安全漏洞、系统安全漏洞、网络安全漏洞、密码学漏洞等多种类型。通关这个靶场我们可以…

哪些方面的应用适合博捷芯双轴半自动划片机?

博捷芯BJX3666系列双轴半自动划片机可以应用于以下领域&#xff1a; 1. 集成电路制造&#xff1a;在集成电路制造中&#xff0c;划片机可以用来将芯片从晶圆上切割下来&#xff0c;以便进行封装和测试。此外&#xff0c;还可以用来对芯片进行划片分离加工&#xff0c;以得到所需…

Java整合Redis实现坐标附近查询

目录 一、GEO用法引入 二、引入依赖 三、实体类 四、添加位置信息 五、查询位置信息 一、GEO用法引入 GEO&#xff0c;全称Geolocation&#xff0c;代表地理坐标。可以在其中存储地理坐标信息&#xff0c;帮助我们根据经纬度来检索数据。常见的命令有&#xff1a;GEOADD&…

python 爬虫之urllib 库的相关模块的介绍以及应用

文章目录 urllib.request 模块打开 URL&#xff1a;发送 HTTP 请求&#xff1a;处理响应&#xff1a; 应用如何读取并显示网页内容提交网页参数使用HTTP 代理访问页面 urllib.request 模块 在 Python 中&#xff0c;urllib.request 模块是用于处理 URL 请求的标准库模块之一。…

【JMeter】组件之 Listener监听器选择

JMeter中监听器的作用就是收集、显示JMeter取样器的结果&#xff0c;并以树形、图表、表格的形式显示出来。还可以将监听结果保存成文件。 View Results Tree-->察看结果树 Summary Report-->汇总报告 为测试中的每个不同命名的请求创建一行。这与聚合报告类似&#xff…

C与汇编深入分析

汇编怎么调用C函数 直接调用 BL main传参数 在arm中有个ATPCS规则&#xff08;ARM-THUMB procedure call standard&#xff09;&#xff08;ARM-Thumb过程调用标准&#xff09;。 约定r0-r15寄存器的用途&#xff1a; r0-r3&#xff1a;调用者和被调用者之间传递参数r4-r11…

用Go实现yaml文件节点动态解析

1.摘要 在大多数Go语言项目中, 配置文件通常为yaml文件格式, 在文件中可以设置项目中可灵活配置的各类参数, 通常这类参数都是比较固定的, 可以将其映射为对应的结构体在项目中进行使用, 如果需要调整参数时, 只需要增减结构体参数字段内容即可。 但同时还存在另外一种情况, …

设计测试用例的6种基本原则

设计测试用例的基本原则&#xff0c;对于软件测试非常重要&#xff0c;这些原则有助于设计出高质量、全面、有效的测试用例&#xff0c;从而提高软件测试的效率和准确性&#xff0c;维护软件的质量和稳定。如果在设计用例时没有遵循基本原则&#xff0c;这会影响用例的全面性、…

百望云斩获“新华信用金兰杯”ESG优秀案例 全面赋能企业绿色数字化

近年来&#xff0c;中国ESG蓬勃发展&#xff0c;在政策体系构建、ESG信披ESG投资和国际合作等方面都取得了阶段性成效&#xff0c;ESG生态不断完善。全社会对ESG的认识及实践也在不断深化&#xff0c;ESG实践者的队伍在不断发展壮大。 ESG作为识别企业高质量发展的重要指标&…