带你看懂大数据采集引擎之Flume&采集目录中的日志

欢迎关注大数据和人工智能技术文章发布的微信公众号:清研学堂,在这里你可以学到夜白(作者笔名)精心整理的笔记,让我们每天进步一点点,让优秀成为一种习惯!

带你看懂大数据采集引擎之Flume&采集目录中的日志

一、Flume的介绍:

Flume由Cloudera公司开发,是一种提供高可用、高可靠、分布式海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于采集数据;同时,flume提供对数据进行简单处理,并写到各种数据接收方的能力,如果能用一句话概括Flume,那么Flume是实时采集日志的数据采集引擎。

二、Flume的体系结构:

带你看懂大数据采集引擎之Flume&采集目录中的日志


Flume的体系结构分成三个部分:数据源、Flume、目的地

数据源种类有很多:可以来自directory、http、kafka等,flume提供了source组件用来采集数据源。

1、source作用:采集日志

source种类:1、spooling directory source:采集目录中的日志

2、htttp source:采集http中的日志

3、kafka source:采集kafka中的日志

……

采集到的日志需要进行缓存,flume提供了channel组件用来缓存数据。

2、channel作用:缓存日志

channel种类:1、memory channel:缓存到内存中(最常用)

2、JDBC channel:通过JDBC缓存到关系型数据库中

3、kafka channel:缓存到kafka中

……

缓存的数据最终需要进行保存,flume提供了sink组件用来保存数据。

3、sink作用:保存日志

sink种类:1、HDFS sink:保存到HDFS中

2、HBase sink:保存到HBase中

3、Hive sink:保存到Hive中

4、kafka sink:保存到kafka中

……

官网中有flume各个组件不同种类的列举:

带你看懂大数据采集引擎之Flume&采集目录中的日志

三、安装和配置Flume:

1、安装:tar -zxvf apache-flume-1.7.0-bin.tar.gz -C ~/training

2、创建配置文件a4.conf:定义agent,定义source、channel、sink并组装起来,定义生成日志文件的条件。

以下是a4.conf配置文件中的内容,其中定义了数据源来自目录、数据缓存到内存中,数据最终保存到HDFS中,并且定义了生成日志文件的条件:日志文件大小达到128M或者经过60秒生成日志文件。

#定义agent名, source、channel、sink的名称

a4.sources = r1

a4.channels = c1

a4.sinks = k1

#具体定义source

a4.sources.r1.type = spooldir

a4.sources.r1.spoolDir = /root/training/logs

#具体定义channel

a4.channels.c1.type = memory

a4.channels.c1.capacity = 10000

a4.channels.c1.transactionCapacity = 100

#定义拦截器,为消息添加时间戳

a4.sources.r1.interceptors = i1

a4.sources.r1.interceptors.i1.type = org.apache.flume.interceptor.TimestampInterceptor$Builder

#具体定义sink

a4.sinks.k1.type = hdfs

a4.sinks.k1.hdfs.path = hdfs://192.168.157.11:9000/flume/%Y%m%d

a4.sinks.k1.hdfs.filePrefix = events-

a4.sinks.k1.hdfs.fileType = DataStream

#不按照条数生成文件

a4.sinks.k1.hdfs.rollCount = 0

#HDFS上的文件达到128M时生成一个日志文件

a4.sinks.k1.hdfs.rollSize = 134217728

#HDFS上的文件达到60秒生成一个日志文件

a4.sinks.k1.hdfs.rollInterval = 60

#组装source、channel、sink

a4.sources.r1.channels = c1

a4.sinks.k1.channel = c1

四、使用Flume语句采集数据:

1、创建目录,用于保存日志:

mkdir /root/training/logs

2、启动Flume,准备实时采集日志:

bin/flume-ng.agent -n a4 -f myagent/a4.conf -c conf -Dflume.root.logger=INFO.console

3、将日志导入到目录中:

cp * ~/training/logs

五、Sqoop和Flume的相同点和不同点:

相同点:sqoop和flume只有一种安装模式,不存在本地模式、集群模式等。

不同点:sqoop批量采集数据,flume实时采集数据。

作者:李金泽AllenLi,清华大学在读硕士,研究方向:大数据和人工智能

### 如何构建和实现大数据实时数据分析系统 #### 架构设计 大数据分析系统架构可细分为四个主要层次:数据采集层、数据存储层、数据处理层以及数据分析与应用层[^1]。每一层都扮演着不可或缺的角色,在构建过程中需特别关注各部分之间的协同工作。 #### 工具与技术栈 ##### 数据采集层 此层面涉及从不同源头获取并传输原始资料到后续环节的技术方案。推荐使用Flume或Logstash来收集日志文件;对于结构化流式数据,则可以考虑Kafka作为消息队列服务,确保高效可靠的消息传递机制。 ##### 数据存储层 考虑到性能需求及成本效益,建议采用混合型策略——利用HDFS(Hadoop Distributed File System)保存海量历史记录的同时引入NoSQL数据库如Cassandra应对高并发读写操作场景下的即时查询请求。此外,针对关系型事务处理仍有必要保留传统RDBMS实例,比如按照三范式精心规划后的MySQL数据库[^3]。 ##### 数据处理层 为了满足低延迟特性要求,Spark Streaming成为理想的选择之一,它能够基于微批处理模式执行复杂事件处理逻辑,并且易于集成机器学习算法库MLlib完成特征工程任务。与此同时,Flink凭借其原生支持窗口语义的优势同样值得考量,特别是在追求极致吞吐量的应用场合下表现优异。 ##### 数据分析与应用层 最终目的是通过直观的方式展现洞察力给决策者看懂。因此除了常规BI报表外,还应重视交互式的探索环境建设,例如借助Grafana搭建动态仪表板以便于监控业务指标变化趋势;Tableau则更适合制作精美的静态图表集锦供管理层审阅参考[^2]。 至于容器编排方面,鉴于当前云计算发展趋势迅猛,选用Kubernetes配合Docker镜像不失为明智之举,不仅简化了跨节点间的资源配置流程还能有效降低运维难度,提高整体系统的稳定性和弹性伸缩能力[^4]。 ```python from pyspark.sql import SparkSession spark = SparkSession.builder.appName("RealTimeDataAnalysis").getOrCreate() df = spark.readStream.format("kafka")...load() # 实时加载来自Kafka的数据 query = df.writeStream.outputMode("append").format("console").start().awaitTermination() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值