Banner
首页 > 新闻 > 内容
数据采集
- 2022-09-02-

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

用户每天浏览数据应用系统生成的业务数据日志文件交易数据传感器从哪里回收数据。

数据生成方式多样,无法划分更多的业务维度。对于数据处理,它只关系到流式数据和离线数据两类数据。

流数据,又称实时数据。数据像流水一样不断涌动。很难预测规模和体积,也不知道什么时候结束。只有一个,一个。

离线数据,与流量数据相比,是指数据已完成登陆存储,无论哪个应用程序生成,存储在哪个位置。简而言之,只要您知道数据路径,您就可以完全处理块数据并进行统一管理。

如何收集数据?

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

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

日志采集

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

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

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

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

flume是Apache开源日志采集系统,新版本flumeNG,在之前flumeOG基础上,进行了修改,增加了易用性,并且进一步提升了性能。

flumeNG主要分为三部分,source,channel,sink。

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

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

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

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

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

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

以点击流为例,用户进行上报,数据到nginx,nginx可通过模块直接接入kafka,之后,在kafka数据消费写入消费端完成。kafka亦可接入storm,spark streaming,flink实时计算数据等。

数据库同步

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

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

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

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

数据采集后如何存储?

数据清洗

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

常用的清洗规则,包括重点字段非空、字段格式验证、内容准确性验证、数据源验证等。根据不同的业务,制定不同的验证规则。目的就是为了将错误数据,在入仓之前,清洗掉。

数据存储

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

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

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

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

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

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

更多关于数据存储的内容将在下一章和数据计算引擎中展开。

总结

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

20220728144151b164adb4a4e34d819932bd058478a7cc

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

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