大数据基础-日志数据汇总采集

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
日志服务 SLS,月写入数据量 50GB 1个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 日志数据汇总采集

需求

  • 将bigdata02和bigdata03机器实时产生的日志数据汇总到bigdata04中
  • 通过bigdata04将数据输出到HDFS指定目录

这里注意:HDFS目录要按天生产每天一个目录。

分析

图解:

网络异常,图片无法展示
|

这里需要用到3个Agent

  • Agent1负责采集机器bigdata02数据
  • Agent2负责采集机器bigdata03数据
  • Agent3负责汇总机器1和2数据到机器3再统一输出到HDFS
  • Agent1和Agent2因为要实时读取文件中新增数据,所以使用基于文件的source,Exec Source。
  • Channel统一使用基于内存的Channel-Memory Channel
  • 由于需要汇总数据,所以sink端加快传输使用Avro Sink
  • 备注:Avro是一种序列化的手段,经过序列化的数据进行传输的时候效率非常高,Avro Sink发送的数据可以直接被Avro Source接受,无缝衔接

实战

以下定义02为A、03为B、04为C

首先在02机器上配置Flume

网络异常,图片无法展示
|

配置Agent,创建文件 file-to-avro-104.conf

网络异常,图片无法展示
|

在03机器上配置Flume

与02机器一样的操作

网络异常,图片无法展示
|

配置Agent,创建文件file-to-avro-104.conf

网络异常,图片无法展示
|

在04机器上配置文件avro-to-hdfs.conf

这里有个注意的点:

在指定Agent中sink配置的时候注意,我们的需求是需要按天在hdfs中创建目录,并把当天的数据上传到 当天的日期目录中,这也就意味着hdfssink中的path不能写死,需要使用变量,动态获取时间,查看官 方文档可知,在hdfs的目录中需要使用%Y%m%d。

这个时间其实是需要从数据里面抽取,咱们前面 说过数据的基本单位是Event,Event是一个对象,后面我们会详细分析,在这里大家先知道它里面包含 的既有我们采集到的原始的数据,还有一个header属性,这个header属性是一个key-value结构的,我 们现在抽取时间就需要到event的header中抽取,但是默认情况下event的header中是没有日期的,强行 抽取是会报错的,会提示抽取不到,返回空指针异常。

其实官方文档中也说了,可以使用hdfs.useLocalTimeStamp或者时间 拦截器,暂时最简单直接的方式就是使用hdfs.useLocalTimeStamp,这个属 性的值默认为false,需要改为true

网络异常,图片无法展示
|

三台机器中的Flume Agent都配置好了,在开始启动之前需要先在bigdata02和bigdata03中生成测试数 据,为了模拟真实情况,在这里我们就开发一个脚本,定时向文件中写数据。

#!/bin/bash

# 循环向文件中生成数据

while [ "1"="1" ]

do

# 获取当前时间戳

curr_time=`date +%s`

# 获取当前主机名

name=`hostname`

echo${name}_${curr_time} >> /data/log/access.log

# 暂停1秒

sleep1

done

1.首先在bigdata02上创建/data/log目录,然后创建 generateAccessLog.sh 脚本

2.接着在bigdata03上创建/data/log目录,然后创建 generateAccessLog.sh 脚本

3.接下来开始启动相关的服务进程 首先启动bigdata04上的agent服务

这里要注意下启动顺序

首先应该启动的是04机器、如果没有启动04就启动了02和03,会丢失一部分数据

  • 启动04

../bin/flume-ng agent --name a1 --conf /data/soft/apache-flume-1.9.0-bin/conf/ --conf-file avro-to-hdfs.conf -Dflume.root.logger=INFO,console

网络异常,图片无法展示
|

  • 启动03

../bin/flume-ng agent --name a1 --conf /data/soft/apache-flume-1.9.0-bin/conf/ --conf-file file-to-avro-104.conf -Dflume.root.logger=INFO,console

网络异常,图片无法展示
|

初始化测试数据

sh -x generateAccessLog.sh

  • 启动02

../bin/flume-ng agent --name a1 --conf /data/soft/apache-flume-1.9.0-bin/conf/ --conf-file file-to-avro-104.conf -Dflume.root.logger=INFO,console

网络异常,图片无法展示
|

初始化测试数据

sh -x generateAccessLog.sh

验证数据结果

网络异常,图片无法展示
|

网络异常,图片无法展示
|

启动之后稍等一会就可以看到数据了,我们观察数据的变化,会发现hdfs中数据增长的不 是很快,它会每隔一段时间添加一批数据,实时性好像没那么高

注意

这是因为avrosink中有一个配置batch-size,它的默认值是100,也就是每次发送100条数据,如果数据 不够100条,则不发送。 具体这个值设置多少合适,要看你source数据源大致每秒产生多少数据,以及你希望的延迟要达到什么 程度,如果这个值设置太小的话,会造成sink频繁向外面写数据,这样也会影响性能。

实战结束

最终,依次停止bigdata02、bigdata03中的服务,最后停止bigdata04中的服务

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
3月前
|
存储 机器学习/深度学习 分布式计算
大数据技术——解锁数据的力量,引领未来趋势
【10月更文挑战第5天】大数据技术——解锁数据的力量,引领未来趋势
|
2月前
|
存储 分布式计算 数据挖掘
数据架构 ODPS 是什么?
数据架构 ODPS 是什么?
502 7
|
2月前
|
存储 分布式计算 大数据
大数据 优化数据读取
【11月更文挑战第4天】
65 2
|
8天前
|
分布式计算 Shell MaxCompute
odps测试表及大量数据构建测试
odps测试表及大量数据构建测试
|
2月前
|
数据采集 监控 数据管理
数据治理之道:大数据平台的搭建与数据质量管理
【10月更文挑战第26天】随着信息技术的发展,数据成为企业核心资源。本文探讨大数据平台的搭建与数据质量管理,包括选择合适架构、数据处理与分析能力、数据质量标准与监控机制、数据清洗与校验及元数据管理,为企业数据治理提供参考。
112 1
|
1月前
|
监控 测试技术 开发者
一行代码改进:Logtail的多行日志采集性能提升7倍的奥秘
一个有趣的现象引起了作者的注意:当启用行首正则表达式处理多行日志时,采集性能出现下降。究竟是什么因素导致了这种现象?本文将探索Logtail多行日志采集性能提升的秘密。
132 23
|
2月前
|
存储 Oracle 关系型数据库
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
本文介绍了MySQL InnoDB存储引擎中的数据文件和重做日志文件。数据文件包括`.ibd`和`ibdata`文件,用于存放InnoDB数据和索引。重做日志文件(redo log)确保数据的可靠性和事务的持久性,其大小和路径可由相关参数配置。文章还提供了视频讲解和示例代码。
167 11
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
|
2月前
|
机器学习/深度学习 存储 大数据
在大数据时代,高维数据处理成为难题,主成分分析(PCA)作为一种有效的数据降维技术,通过线性变换将数据投影到新的坐标系
在大数据时代,高维数据处理成为难题,主成分分析(PCA)作为一种有效的数据降维技术,通过线性变换将数据投影到新的坐标系,保留最大方差信息,实现数据压缩、去噪及可视化。本文详解PCA原理、步骤及其Python实现,探讨其在图像压缩、特征提取等领域的应用,并指出使用时的注意事项,旨在帮助读者掌握这一强大工具。
112 4
|
2月前
|
存储 大数据 数据管理
大数据分区简化数据维护
大数据分区简化数据维护
31 4
|
2月前
|
存储 大数据 定位技术
大数据 数据索引技术
【10月更文挑战第26天】
70 3