许多公司的平台每天都会产生大量的日志,并且一般为流式数据,如搜索引擎的 pv 和查询等。处理这些日志需要特定的日志系统,这些系统需要具有以下特征。

  • 构建应用系统和分析系统的桥梁,并将它们之间的关联解耦。
  • 支持近实时的在线分析系统和分布式并发的离线分析系统。
  • 具有高可扩展性,也就是说,当数据量增加时,可以通过增加结点进行水平扩展。

目前使用最广泛的、用于系统日志采集的海量数据采集工具有 Hadoop 的 Chukwa、ApacheFlumeAFacebook 的 Scribe 和 LinkedIn 的 Kafka 等。

以上工具均采用分布式架构,能满足每秒数百 MB 的日志数据采集和传输需求。本节我们以 Flume 系统为例对系统日志采集方法进行介绍。

Flume 的基本概念

Flume 是一个高可用的、高可靠的、分布式的海量日志采集、聚合和传输系统。

Flume 支持在日志系统中定制各类数据发送方,用于收集数据,同时,Flume 提供对数据进行简单处理,并写到各种数据接收方(如文本、HDFS、HBase 等)的能力。

Flume 的核心是把数据从数据源(Source)收集过来,再将收集到的数据送到指定的目的地(Smk)。

为了保证输送的过程一定成功,在送到目的地之前,会先缓存数据到管道(Channel),待数据真正到达目的地后,Flume 再删除缓存的数据,如图 1 所示。


图 1  Flume 的基本概念

Flume 的数据流由事件(Event)贯穿始终,事件是将传输的数据进行封装而得到的,是 Flume 传输数据的基本单位。

如果是文本文件,事件通常是一行记录。事件携带日志数据并且携带头信息,这些事件由 Agent 外部的数据源生成,当 Source 捕获事件后会进行特定的格式化,然后 Source 会把事件推入(单个或多个) Channel 中。

Channel 可以看作是一个缓冲区,它将保存事件直到 Sink 处理完该事件。Sink 负责持久化日志或者把事件推向另一个 Source。

Flume 使用方法

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)启动 Agent 的 shell 操作。

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”设置日志等级。

Flume 应用案例

NetCat Source 应用可监听一个指定的网络端口,即只要应用程序向这个端口写数据,这个 Source 组件就可以获取到信息。其中,Sink 使用 logger 类型,Channel 使用内存(Memory)格式。

1)编写配置文件

# Name the components on this agent
a1.sources = r1
a1.sinks = k1
a1.channels = c1

# Describe/configure the source
a1.sources.r1.type = netcat
a1.sources.r1.bind = 192.168.80.80
a1.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

# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

该配置文件定义了一个名字为 a1 的 Agent,—个 Source 在 port 44444 监听数据,一个 Channel 使用内存缓存事件,一个 Sink 把事件记录在控制台。

2)启动 FlumeAgental 服务端。

$ flume-ng agent -n al -c ../conf -f ../conf/neteat.conf
-Dflume.root.logger=DEBUG,console

3)使用 Telnet 发送数据。

以下代码为从另一个终端,使用 Telnet 通过 port 44444 给 Flume 发送数据。

$ telnet local host 44444
Trying 127.0.0.1…
Connected to localhost.localdomain(127.0.0.1).
Escape character is ‘^]’.
Hello world! <ENTER>
OK

4)在控制台上查看 Flume 收集到的日志数据。

17/6/19 15:32:19 INFO source.NetcatSource: Sources tarting
17/06/19 15:32:19 INFO source.NetcatSource: Created serverSocket:sun.nio.ch.
ServerSocketChannelImpl[/127.0.0.1:44444] 17/06/19 15:32:34 INFO sink.LoggerSink: Event:{ headers:{} body:48 65 6C 6C 6F 20 77 6F 72 6C 64 21 0D Helloworld! .}

大数据零基础快速入门教程

Java基础教程

9.通过网络爬虫采集大数据
10.Scrapy网络爬虫简介
11.大数据预处理架构和方法

通过系统日志采集大数据相关推荐

  1. 给我一个西门子plc采集大数据存储与分析方案

    对于西门子PLC采集大数据存储与分析方案,下面是一个建议: 数据采集: 在PLC中设置数据采集程序,以记录关键数据并定期发送到数据存储仓库. 数据存储: 使用大数据存储技术,例如 Hadoop.Spa ...

  2. 大数据入门基础教程系列

    所谓大数据(Big Data),就是需要处理的数据量非常巨大,已经达到了 TB.PB 甚至 EB.ZB 级别,需要成千上万块硬盘才能存储.传统的技术手段在大数据面前不堪一击,只能探索一套新的解决方案. ...

  3. 2020年整理的大数据基础入门教程总结和学习路线

    所谓大数据(Big Data),就是需要处理的数据量非常巨大,已经达到了 TB.PB 甚至 EB.ZB 级别,需要成千上万块硬盘才能存储.传统的技术手段在大数据面前不堪一击,只能探索一套新的解决方案. ...

  4. 大数据中数据采集的几种方式

    一.采集大数据的方法 1.1通过系统日志采集大数据 用于系统日志采集的工具,目前使用最广泛的有:Hadoop 的Chukwa.ApacheFlumeAFacebook的Scribe和LinkedIn的 ...

  5. 大数据信息资料采集:情感公号风茕子历史文章评论爬取八爪鱼采集

    大数据信息资料采集:情感公号风茕子历史文章评论爬取八爪鱼采集 大数据信息资料采集 公众号历史文章采集 公众号评论爬取 微信公众号历史文章导出 抓取微信公众号所有文章. 公众号文章抓取工具 抓取公众号所 ...

  6. 【2017年第3期】从点状应用到大数据统一平台

    钱岭,孙少陵,石在辉 中移(苏州)软件技术有限公司,江苏 苏州 215163 摘要:企业在大数据引入过程中,由于平台技术不成熟.缺乏统一技术架构.组织架构不适应等问题,形成了应用竖井和复杂的系统混搭结 ...

  7. 基于大数据搭建社交好友推荐系统

    ● ● ● " 导读:本文来自资深架构师翟永东"基于 MaxCompute 搭建社交好友推荐系统"为主题的分享,主要对大数据在好友推荐系统中的应用.好友推荐系统的分析模型 ...

  8. 小白专属:大数据总纲_大数据路线_高屋建瓴的体验大数据的世界

    零.前言 不想告诉你前景. 因为好前景给你的回报是2x.坏前景给你的回报是1x. 而你缺的是走下去的过程.却的是进入前景,走到前景面前的那一个x 建议阅读人群: 大数据入门人员. 才学一两个组件的小白 ...

  9. 大数据营销方案的分析处理

    每天,中国网民通过人和人的互动,人和平台的互动,平台与平台的互动,实时生产海量数据.这些数据汇聚在一起,就能够获取到网民当下的情绪.行为.关注点和兴趣点.归属地.移动路径.社会关系链等一系列有价值的信 ...

  10. 大数据技术_ 基础理论 之 大数据概念与应用

    1.1 大数据的概念与意义 1.从"数据"到"大数据" 时至今日,"数据"变身"大数据","开启了一次重大的时 ...

最新文章

  1. 逻辑网络拓扑与物理网络拓扑—Vecloud微云
  2. MAC地址表满,广播的去向
  3. mysql数据库项目式教程答案_MySQL数据库项目式教程(高职)
  4. 使用Spring Boot隔离集成测试和模拟依赖项
  5. matlab生成exe独立运行文件已破解(好用)
  6. C#中的多文档的使用
  7. python RandomTrees特征编码
  8. 安装网站+服务器连接失败,为什么我都安装完成后是服务器连接失败啊
  9. Response.setContentType 可设置属性
  10. 【渝粤教育】国家开放大学2019年春季 2610药剂学 参考试题
  11. 如何在没有域的环境中搭建AlwaysOn(一)
  12. 江南春新年围炉夜谈:如何破解增长焦虑?
  13. #Geek Talk# 董飞老师同大家一起聊聊斯坦福创业课程CS183C
  14. Linux ARM 静态网络配置
  15. 解决Intellij IDEA Debug 多模块下断点目标源问题
  16. 【03】从零开始跟我一起制作一个鸿蒙的应用-★规划搭建鸿蒙应用版的蜻蜓短视频系页面★---优雅草科技伊凡
  17. 免费无限大文件存储网盘 -- send.cm!必须收藏!操作简单,国内外都能访问,不用注册或下载,支持FTP,还带API,页面还简洁,真的爱了~
  18. java计算时间从什么时候开始 为什么从1970年开始 java的时间为什么是一大串数字
  19. 计算机一级培训 ppt,计算机基础培训ppt
  20. 安卓手机开发python -- Pydroid3 教程

热门文章

  1. Google / Baidu 黑客搜索引擎语法详细记录
  2. 读一本自己心爱的书,冒什么风险都是值得的
  3. AdventureWorks范例数据库
  4. Flash cs6 学习(一) 制作一个包含几个按钮控件的影片剪辑
  5. 关于STM32Flash详解
  6. 客服系统源代码下载-h5手机端在线客服代码-在线聊天系统源代码(前端vue开发,后台go语言开发)
  7. 写给音响工程师的科普文章(二)——从模电角度去了解调音台话放
  8. 小数分频器vhdl实现_使用VHDL进行分频器设计(含小数)
  9. 四川大学计算机学院2020转专业,四川大学化学学院2020年本科生转专业工作实施方案...
  10. ztek usb转串口 linux,Z-TEK USB转串口驱动下载