Banner
首页 > 新闻 > 内容
IN——数据采集
- 2022-12-15-

概述

数据生成有多种方式,不同的应用程序,不同的组件,都有自己的数据管理规则和数据生成规则。数据收集的目的是统一收集和回收分散在各地的数据,以促进数据管理。

如何收集数据?

一般来说,大数据系统中的采集系统需要独立的采集机来完成,采集工作相对耗时,特别是对于实时采集,需要建立监控,等待数据报告。这些业务应该与业务机器区分开来。

在大数据生态中,对于不同源的数据,有相应的解决方案。接下来,让我们一个一个地进行。

日志采集

假设服务器上有一个.log每日应用服务的文件和内容ip访问序列。需要将.log文件,同步到数据仓库。我们该怎么办?

首先,如果服务器可以通过授权收集机通过端口直接读取文件目录。然后,我们完全使用它wget抓取。设置调度,控制采集频率。我们的需求也可以满足。

在大数据生态中使用日志采集工具,如果没有固定端口访问,flume,或logstash,通过avro协议上报数据。

下面以flume以简要说明为例。

flumeApache开源日志采集系统,新版本flumeNG,在之前flumeOG在此基础上,修改增加了易用性,进一步提高了性能。

flumeNG主要分为三部分,sourcechannelsink

source指数据源访问,可以进行日志tail读取,也可以访问kafka等待消息队列。或者通过avro协议,接收上层数据。随着版本升级,支持的模块越来越多,可以去flume官网查看最新支持。

channel指通道,目的是在上层数据流入过多时进行数据缓冲处理,避免下游拥堵。目前主要使用内存和磁盘,memory channel数据较快,但对系统内存占用较大,数据不能保证可靠。一旦机器down机器,数据无法回收。file channel数据可以以文件的形式持续到磁盘。即使有文件记录数据读取位置,也会有down机器,仍然可以从节点记录中找到行数,继续阅读。避免数据重复和丢失。但是,受磁盘IO限制,数据读取缓慢,容易造成大量数据上报时数据积压。

sink指消费端,可指定下游消费模块,可直接写入hdfs,也可以通过avro协议,传递给另一个服务,也可以写入kafka等待消息队列。支持模块,见官网说明。

因为flume支持日志tail,因此,数据可以在日志写入过程中逐行捕获,也可以满足实时要求。

良好的flume采集架构必须在每台机器上进行agent收集,然后多collector收集,多做sink写入。一方面保证了系统的稳定性,另一方面提高了并行性,保证了写入速度。

既然日志数据可以这样采集,实时数据还有别的办法吗?当然可以。

以点击流为例,用户报告数据nginxnginx可通过模块直接接入kafka,之后,在kafka数据消费写入消费端完成。kafka亦可接入stormspark streamingflink实时计算数据等。

数据库同步

若需要将mysql数据库中的数据与数字仓库同步,有两种场景。

一是全同步,全库表数据每天全同步一次。这种方法适用于数据库内容较少的情况下,可以每天创建分区,每天都是全数据。这种方法的优点是简单完全导入,不需要维护内容。缺点是会占用大量空间,每次导入全库都需要很长时间。

二是增量导出,设置拉链,标记数据生命周期的全状态。因为hdfs在阅读过程中,是文件IO形式顺序读取,中间内容无法修改。因此,如果数据库中的内容更新,则需要读取当天binlog更新内容,重写记录。数据标记ACTIVE,旧数据HISTORY标记。通过多dt最新数据内容挂出组合。这样维护成本高,规则限制死亡。优点是增量文件可以每天标记,不需要全面导入。

我们可以使用数据库同步Sqoop可以使用全数据导入c ** 。具体使用方法可参考相应的工具文件。

数据采集后如何存储?

数据清洗

收集原始数据后,不能直接导入数据仓库。数据由应用程序服务生成,可能会因未知原因而产生错误的数据。然后,制定清洁规则,首先筛选部分无效数据,不仅可以节省存储空间,而且可以降低后续计算的错误率。

常用的清洁规则包括关键字段非空、字段格式验证、内容准确性验证、数据源验证等。根据不同的业务制定不同的验证规则。目的是在进入仓库之前清理错误的数据。

数据存储

目前,大多数数据仓库数据都落后于hdfs上,使用hive内容管理。

hdfs分布式存储系统使用分布式服务进行数据存储。它避免了单个节点存储容量的上限,并备份,以避免设备故障造成的数据损失。

一份数据data.log,可被切分为data1.logdata2.logdata3.log,分别存放在server1server2server3.同时,每个数据至少存储在两个服务器上,以确保某个服务器server出现down备份数据仍然可以从剩下的两台服务器中获得,得到data.log完整结果。

hdfs扩展也很方便,只需在加载配置中给出新的节点目录hdfs进行管理。

hive为了方便开发人员使用线性数据库的习惯hdfs开发的线性库表管理工具。存储数据hdfs存储元数据和库表基本信息mysql,支持SQL语法,检索数据。

当用户在hive上执行sql时,hive将后端执行引擎调用,转换为mrspark,或tez,检索数据。检索速度取决于表的大小和集群计算引擎的执行速度。hive比较执行速度mysql慢得多。因此,后来才有了OLAP执行引擎。

总结

无论是后续数据存储、计算还是计算,数据采集都是整个数据流通的开始,etl处理数据采集故障会影响后续结果。因此,数据采集侧agent需要完善监控、预警、容错,以确保数据不丢失。

富连达继电器

深圳市富连达科技有限公司NI联盟商、代理商、系统集成商,主要有NIGPIB、NILABVIEW、NIDAQ、NI板卡、NI数据采集卡等产品。公司拥有产品测试的软硬件全套应运解决方案,开发范围包括ICT、Boundary Scan、功能测试、系统测试。业务覆盖深圳、广州、珠海、佛山、南京、杭州、厦门、西安、成都、武汉、重庆、北京等地。

有需要的可以联系在线客服!