阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

几十条业务线日志系统如何收集处理?

132次阅读
没有评论

共计 2834 个字符,预计需要花费 8 分钟才能阅读完成。

在互联网迅猛发展的今天 各大厂发挥十八般武艺的收集用户的各种信息,甚至包括点击的位置,我们也经常发现自己刚搜完一个东西,再打开网页时每个小广告都会出现与之相关联的商品或信息,在感叹智能的同时不惊想 什么时候泄露的行踪。

许多公司的业务平台每天都会产生大量的日志数据。收集业务日志数据,供离线和在线的分析系统使用,正是日志收集系统的要做的事情。

用户的数据除了这种后台默默的收集外,还有各种运行的日志数据和后台操作日志,因此每个业务可以算是一种类型的日志,那稍大点的公司就会有几十种日志类型要收集,而且业务都分布到不同的服务器上,这就导致了日志的汇集的困难,

  在此可以用 Flume 来解决此类问题,参考以下架构。

几十条业务线日志系统如何收集处理?

Flume 是 Cloudera 提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,目前已经是 Apache 的一个子项目。

Flume 作为一个日志收集工具,非常轻量级,基于一个个 Flume Agent,能够构建一个很复杂很强大的日志收集系统,它的灵活性和优势,高可用性,高可靠性和可扩展性是日志收集系统所具有的基本特征。主要体现在如下几点:

  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. 高级特性:Failover、Load balancing、Interceptor 等
Flume 支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume 提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。
注:当前 Flume 有两个版本 Flume 0.9X 版本的统称 Flume-og,Flume1.X 版本的统称 Flume-ng。由于 Flume-ng 经过重大重构,与 Flume-og 有很大不同,使用时请注意区分。

Flume 的优势

      1.  Flume 可以将应用产生的数据存储到任何集中存储器中,比如 HDFS,HBase

      2.  当收集数据的速度超过将写入数据的时候,也就是当收集信息遇到峰值时,这时候收集的信息非常大,甚至超过了系统的写入数据能力,这时候,Flume 会在数据生产者和数据收容器间做出调整,保证其能够在两者之间提供一共平稳的数据.

     3.   提供上下文路由特征

     4.   Flume 的管道是基于事务,保证了数据在传送和接收时的一致性.

     5.   Flume 是可靠的,容错性高的,可升级的,易管理的, 并且可定制的。

Flume 具有的特征:

    1. Flume 可以高效率的将多个网站服务器中收集的日志信息存入 HDFS/HBase 中

    2. 使用 Flume,我们可以将从多个服务器中获取的数据迅速的移交给 Hadoop 中

    3. 除了日志信息,Flume 同时也可以用来接入收集规模宏大的社交网络节点事件数据,比如 facebook,twitter, 电商网站如亚马逊,flipkart 等

    4. 支持各种接入资源数据的类型以及接出数据类型

    5. 支持多路径流量,多管道接入流量,多管道接出流量,上下文路由等

    6. 可以被水平扩展

Flume 的结构

Agent 主要由:source,channel,sink 三个组件组成.

Source:

    从数据发生器接收数据, 并将接收的数据以 Flume 的 event 格式传递给一个或者多个通道 channal,Flume 提供多种数据接收的方式, 比如 Avro,Thrift,twitter1% 等

Channel:

  channal 是一种短暂的存储容器, 它将从 source 处接收到的 event 格式的数据缓存起来, 直到它们被 sinks 消费掉, 它在 source 和 sink 间起着一共桥梁的作用,channal 是一个完整的事务, 这一点保证了数据在收发的时候的一致性. 并且它可以和任意数量的 source 和 sink 链接. 支持的类型有: JDBC channel , File System channel , Memort channel 等.

sink:

  sink 将数据存储到集中存储器比如 Hbase 和 HDFS, 它从 channals 消费数据 (events) 并将其传递给目标地. 目标地可能是另一个 sink, 也可能 HDFS,HBase.

它的组合形式举例:

几十条业务线日志系统如何收集处理?

几十条业务线日志系统如何收集处理?

以上介绍的 flume 的主要组件

下面介绍一下 Flume 插件:

1. Interceptors 拦截器

   用于 source 和 channel 之间, 用来更改或者检查 Flume 的 events 数据

2. 管道选择器 channels Selectors

   在多管道是被用来选择使用那一条管道来传递数据(events). 管道选择器又分为如下两种:

   默认管道选择器:  每一个管道传递的都是相同的 events

  多路复用通道选择器:  依据每一个 event 的头部 header 的地址选择管道.

3.sink 线程

用于激活被选择的 sinks 群中特定的 sink, 用于负载均衡.

由于 Flume 的日志源可以来自另外一个 Flume,可以同时发送给多个目标,且 Flume 自身可以做负载,由此可以设计出高可用,可扩展,高负载的日志架构。

应用场景

     比如我们在做一个电子商务网站,然后我们想从消费用户中访问点特定的节点区域来分析消费者的行为或者购买意图. 这样我们就可以更加快速的将他想要的推送到界面上,实现这一点,我们需要将获取到的她访问的页面以及点击的产品数据等日志数据信息收集并移交给 Hadoop 平台上去分析. 而 Flume 正是帮我们做到这一点。现在流行的内容推送,比如广告定点投放以及新闻私人定制也是基于次,不过不一定是使用 FLume, 毕竟优秀的产品很多,比如 facebook 的 Scribe,还有 Apache 新出的另一个明星项目 chukwa,还有淘宝 Time Tunnel。

flume+kafka+storm+mysql 构建大数据实时系统

几十条业务线日志系统如何收集处理?

 

Flume+HDFS+KafKa+Strom 实现实时推荐,反爬虫服务等服务在美团的应用

几十条业务线日志系统如何收集处理?

Flume+Hadoop+Hive 的离线分析网站用户浏览行为路径

几十条业务线日志系统如何收集处理?

 Flume+Logstash+Kafka+Spark Streaming 进行实时日志处理分析

几十条业务线日志系统如何收集处理?

Flume+Spark + ELK 新浪数据系统实时监控平台

几十条业务线日志系统如何收集处理?

 列举不完了 ……………………………………………………………………

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-05/144382.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计2834字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中