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.hqwc.cn/news/178649.html

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

相关文章

基于opencv+tensorflow+神经网络的智能银行卡卡号识别系统——深度学习算法应用(含python、模型源码)+数据集(二)

目录 前言总体设计系统整体结构图系统流程图 运行环境模块实现1. 训练集图片处理1&#xff09;数据加载2&#xff09;图像处理 2. 测试图片处理1&#xff09;图像读取2&#xff09;图像处理 相关其它博客工程源代码下载其它资料下载 前言 本项目基于从网络获取的多种银行卡数据…

半平面求交 - 洛谷 - P3194 [HNOI2008] 水平可见直线

欢迎关注更多精彩 关注我&#xff0c;学习常用算法与数据结构&#xff0c;一题多解&#xff0c;降维打击。 往期相关背景点击前往 题目大意 题目链接 https://www.luogu.com.cn/problem/P3194 在直角坐标系中给定一些直线&#xff0c;然后从Y轴无穷大处往0处看&#xff0c;…

iis特殊字符的轉義問題解決

今天發現有個問題&#xff0c;部分圖片的靜態資源帶有號&#xff0c;導致無法直接在瀏覽器獲取圖片&#xff0c;百度了一下&#xff0c;修改了注冊表&#xff0c;發現沒什麽軟用&#xff0c;最後找到一篇博客&#xff0c;解決了 解決

WorkPlus私有化部署的即时通讯软件,企业内部沟通协作的利器

随着企业的成长和信息科技的进步&#xff0c;团队协作变得越来越关键。为了更好地促进团队之间的信息共享和沟通&#xff0c;企业内部对聊天软件的需求也在不断增加。 WorkPlus是一个支持海量用户和高并发的私有化部署即时通讯能力&#xff0c;支持纯内网&#xff0c;内外网混…

服务号转订阅号如何操作

服务号和订阅号有什么区别&#xff1f;服务号转为订阅号有哪些作用&#xff1f;一、文章推送的篇数不同服务号在文章的推送篇数上是有所限制的&#xff08;每月推4次&#xff09;订阅号则每天可推送一篇文章。二、定义不同服务号主要是为关注用户提供服务使用的&#xff1b;订阅…

数据结构-数型查找

二叉排序树&#xff08;BST&#xff09; 二叉排序树&#xff0c;又称二叉查找树&#xff08;BST&#xff0c;Binary Search Tree&#xff09; 一颗二叉树或者是空二叉树&#xff0c;或者是具有如下性质的二叉树&#xff1a; 左子树上所有结点的关键字均小于根结点的关键字&…

Axure9 基本操作(一)

产品经理零基础入门&#xff08;四&#xff09;Axure 原型图教程&#xff0c;2小时学会_哔哩哔哩_bilibili Axure 9 从入门到精通全集&#xff0c;自学必备_哔哩哔哩_bilibili 1. 页面对应页面个数&#xff0c;概要对应每个页面的具体内容 2. 文件类型 3. 备用间隔改为5分钟 …

SOLIDWORKS 2024新功能之Visualize篇

SOLIDWORKS 2024新功能Visualize 增强了创建引人注目的外观的功能 SOLIDWORKS Visualize 使用 Dassault Systmes 的企业 PBR 着色模型 (DSPBR) 来准确复制金属、玻璃、塑料和其他曲面的逼真外观。 DSPBR 是材料模型&#xff0c;用于基于物理的渲染&#xff0c;受 3DEXPERIENCE…

如何在面试中胜出?接口自动化面试题安排上

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;交流讨论&#xff1a;欢迎加入我们一起学习&#xff01;&#x1f4e2;资源分享&#xff1a;耗时200小时精选的「软件测试」资…

【算法与数据结构】78、90、LeetCode子集I, II

文章目录 一、题目二、78.子集三、90.子集II三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、78.子集 思路分析&#xff1a;【算法与数据结构】77、LeetCode组合。本题可以参考77题的组合问题代码&#xff0…

小黑完成了最后一节健身课,顺利完成了跳绳比赛,乘飞机到达南京准备第二天领物资和南京城内闲逛的leetcode之旅:215. 数组中的第K个最大元素

小黑代码 class Solution:def findKthLargest(self, nums: List[int], k: int) -> int:# 数组长度n len(nums)nums list(map(lambda x:-x, nums))q []for i in range(n):heapq.heappush(q, nums[i])# 出堆target -1for i in range(k):target heapq.heappop(q)return -…

Matter 协议详解

目录 1、Matter 协议发展 1.1、什么是Matter 1.2、Matter能做什么 2、整体介绍 3、架构介绍 3.1、Matter网络拓扑结构 3.2、标识符 3.2.1、Fabric引用和Fabric标识符 3.2.2、供应商标识符&#xff08;Vendor ID&#xff0c;VID&#xff09; 3.2.3、产品标识符&#x…