什么建站系统支持文章采集(大数据的数据采集源一般分为日志数据、Web数据)
优采云 发布时间: 2022-01-29 08:20什么建站系统支持文章采集(大数据的数据采集源一般分为日志数据、Web数据)
在大数据采集的介绍中,我们知道大数据的数据采集来源一般分为日志数据、Web数据、数据库数据和其他数据。数据采集的方法和技术也不同。本文将对系统日志做一个简单的介绍。
——
系统日志是一个非常关键的组件,它记录系统中有关硬件、软件和系统问题的信息,包括系统日志、应用程序日志和安全日志。
最初,日志主要由软件工程师使用,因为系统日志信息对于确定故障的根本原因或缩小系统攻击范围非常关键。工程师可以通过阅读日志信息来解决问题。
系统日志可以让工程师快速了解故障或攻击之前的所有事件,也可以用于检查错误原因,或查找攻击者在攻击过程中留下的痕迹。
当然,为虚拟化环境制定良好的 syslog 策略也很关键,因为 syslog 需要与许多不同的外部组件相关联。
系统日志策略可以在故障发生时立即向用户发送警告信息,帮助在最短时间内发现问题。
如今,大量机器日夜处理日志数据,供离线和在线分析系统生成可读报告,帮助人类做出决策。
——
很多公司的业务平台每天都会产生大量的日志数据,一般都是流数据,比如搜索引擎的pv、query等。要处理这些日志并从中提取信息,需要特定的日志系统。这些系统通常需要具备以下特点:
图:一个典型的日志采集系统的整体架构,来自网络
海量数据采集系统日志采集使用最广泛的工具有:
以上工具均采用分布式架构,可满足日志数据采集和每秒数百MB的传输需求。
下面将以Flume为例介绍系统日志采集方法。
——
Flume 是一个高可用、高可靠、分布式的海量日志采集、聚合和传输系统。作为一个日志采集工具,它非常轻量级。基于每个 Flume Agent,可以构建一个非常复杂且功能强大的日志采集系统。
Flume的灵活性和优势、高可用、高可靠和可扩展性是日志采集系统的基本特征,主要体现在以下几点:
1. 模块化设计:在其 Flume Agent 中可以定义三个组件:Source、Channel、Sink;
2. 组合设计:在Flume Agent中可以根据业务需要组合Source、Channel、Sink组件,构建相对复杂的日志流管道;
3. 插件化设计:采集日志管道的过程可以通过配置文件来安排,减少对Flume代码的侵入;
4. 可扩展性:我们可以根据自己的业务需求定制和实现一些组件(Source、Channel、Sink);
5. 支持各种主流系统和框架的集成:Hadoop、HBase、Hive、Kafka、ElasticSearch、Thrift、Avro等,可以和Flume很好的集成;
6. 高级功能:故障转移、负载均衡、*敏*感*词*等。
——
Flume 支持在日志系统中自定义各种数据*敏*感*词*来采集数据。同时,Flume 具有对数据进行简单处理和写入各种数据*敏*感*词*(如文本、HDFS、HBase 等)的能力。
Flume的核心是从数据源(Source)采集数据,然后将采集到的数据发送到指定的目的地(Smk)。
为了保证传递过程的成功,数据在发送到目的地之前会被缓存在通道中。当数据真正到达目的地后,Flume 会删除缓存的数据。整个过程大致如下:
图:Flume的基本概念,源于网络
Flume的数据流是通过事件(Event)来运行的,事件是通过对传输的数据进行封装而得到的,是Flume中数据传输的基本单元。
在文本文件的情况下,事件通常是一行记录。事件携带日志数据和标头信息。这些事件由代理外部的数据源生成。当 Source 捕获事件时,会执行特定的格式化,然后 Source 会将事件推送到(单个或多个)Channel 中。
Channel 可以被认为是一个缓冲区,它会保存事件直到 sink 处理完事件。Sink 负责持久化日志或将事件推送到另一个 Source。
——
Flume的使用很简单,主要是写一个用户配置文件。在配置文件中描述Source、Channel和Sink的具体实现,然后运行一个Agent实例。
在运行Agent实例的过程中,会读取配置文件的内容,这样Flume就会采集去数据。
Flume 提供了大量的内置 Source、Channel 和 Sink 类型,不同类型的 Source、Channel 和 Sink 可以灵活组合。
编写配置文件的原则如下。
1)整体描述 Agent 中 Sources、Sinks 和 Channels 所涉及的组件。
#Name the components on this agent
a1.sources = r1
a1.sinks = k1
a1.channels = c1
2)详细描述Agent中各个Source、Sink和Channel的具体实现,即需要指定Source是什么类型,是接收文件,接收HTTP,还是接收Thrift。
对于 Sink,需要指定结果是输出到 HDFS 还是 HBase 等。
对于Channel,需要指定格式是内存、数据库还是文件等。
#Describe/configure the source
al.sources.r1.type = netcat
al.sources.r1.bind = localhost
al.sources.r1.port = 44444
#Describe the sink
a1.sinks.k1.type = logger
#Use a channel which buffers events in memory.
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactioncapacity = 100
3)通过 Channel 连接 Source 和 Sink。
#Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
4)启动代理的外壳操作。
flume-ng agent -n a1 -c ../conf -f ../conf/example.file\
-Dflume.root.logger = DEBUG,console
参数说明如下。
“-n”指定 Agent 的名称(与配置文件中代理的名字相同)。
“-c"指定 Flume 中配置文件的目录。
“-f”指定配置文件。
“-Dflume.root.logger = DEBUG,console”设置日志等级。
参考: