【分布式计算】分布式日志导入工具-Flume

背景

Flume是Apache赞助的一个分布式日志管理系统,主要功能就是把集群中每个worker产生的日志log,collect到特定的地点。

为什么要写这篇文章呢,因为现在搜索出来的文献大多是老版本的flume,在flume1.X版本后,也就是flume-ng版本跟之前出现了很大的改动,市面上的很多文档都已经过时了,大家看的时候一定要注意这点,稍后我会提供几个比较新的,有参考价值的文章。

flume的优势有一下几个方面:
* JAVA实现,跨平台性能好
* 有一定的容错机制,和防止数据保障的机制
* 提供了很多的agent
* 方便开发,有developer选项

功能


单机版是如上形式的,有三个部件组成,分别是source,channel,sink。在使用的时候,只要安装flume,然后配置好对应的conf文件,就可以了。
source:主要是配置日志文件的来源(提供多种agent,支持多种数据源)
channel:类似于一个队列,暂存收到的日志数据
sink:将日志文件输出(有很多方式,可以投影到屏幕上,也可以读到数据库或者指定的文件中)

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

# Describe/configure the source
a1.sources.r1.type = avro          #avro是flume的一种type,读取本地log文件
a1.sources.r1.bind = localhost    #这个和下面的port对应于avro-client的端口
a1.sources.r1.port = 44444

# Describe the sink
a1.sinks.k1.type = com.waqu.sink.OdpsSink #对应代码里的包名
a1.sinks.k1.sink.batchSize = 20             #需要大于10
a1.sinks.k1.sink.table = *******            #自己建的hub表以及key-id信息
a1.sinks.k1.sink.project =*******
a1.sinks.k1.sink.odps.access_id =**********
a1.sinks.k1.sink.odps.access_key =**********
a1.sinks.k1.sink.odps.end_point =***********
a1.sinks.k1.sink.sink.tunnel.end_point =*******

# Use a channel which buffers events in memory
a1.channels.c1.type = memory
a1.channels.c1.checkpointDir=1000
a1.channels.c1.dataDirs = 100

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

下面就针对这三点,详细介绍下

Flume workflow

agent支持多种输入的source,几个比较常用的type。
*HTTP,可以监听http端口,拿log
*netcat,可以监听类似于telnet的端口数据
*Spooling ,监听某个文件目录下新增的文件
*Avro Source,发送指定文件,这个不支持实时监控,也就是说比方说我们监控a.log文件,当a.log改变了,我们无法拿到改变的日志
*Exec Source,这个可以实时监控某个文件

重点说下Exec Source,这个功能非常酷,它允许在agent上执行shell命令,这样我们就能用tail命令来监控某个文件新增的内容。

tail -f log.txt

Develop

*首先是利用官方的sdk包,开发打包jar文件
*把jar放到flume的lib文件目录下
*配置conf文件
*启动agent:flume-ng agent --conf conf --conf-file ./conf/my.conf -name a1 -Dflume.root.logger=INFO,console
*启动数据源:flume-ng avro-client -H localhost -p 44444 -F /home/garvin/log.txt -Dflume.root.logger=INFO,console

推荐几篇有用的东西:
一个代码实现的例子:https://github.com/waqulianjie/odps_sink
开发者document:http://flume.apache.org/FlumeUserGuide.html
一个比较完整的介绍:http://www.aboutyun.com/thread-8917-1-1.html

本文来自博客 “李博Garvin“
转载请标明出处:http://blog.csdn.net/buptgshengod]

时间: 2024-09-17 04:40:36

【分布式计算】分布式日志导入工具-Flume的相关文章

分布式日志收集系统Apache Flume的设计介绍

概述 Flume是Cloudera公司的一款高性能.高可能的分布式日志收集系统.现在已经是Apache Top项目.Github地址.同Flume相似的日志收集系统还有Facebook Scribe,Apache Chuwka,Apache Kafka(也是LinkedIn的).Flume是后起之秀,本文尝试简要分析Flume数据流通过程中提供的组件.可靠性保证来介绍Flume的主要设计,不涉及Flume具体的安装使用,也不涉及代码层面的剖析.写博文来记录这个工具主要是觉得与最近开发的一个流式的

LogMinner:一种基于EMF和STAF的日志分析工具

简介: 大型软件在运行过程中会产生大量的各种各样的日志信息,测试人员常常要分析大量的冗长的 日志,而这些日志又往往分布在不同位置的不同平台的主机的不同目录中,使得测试中的日志分析工作繁 复.乏味,为了方便测试人员快速分析日志,本文的作者开发了一个基于EMF和STAF技术的日志分析工具 ――LogMinner. 1. 概述 分布式异构软件系统的测试人员常常要分析大量的日志,例如安装日志,数据库日志等等,这些日志 分布在不同位置的不同操作系统的主机上,测试人员为了分析这些日志需要奔波于实验室各台机器

日志分析工具Awstats的多站点日志分析

前面两篇都在讲述如何去部署nginx下的awstats日志分析工具,现在终于轮到apache.作为老牌的网页服务器,awstats对apache的支持非常完美,所以整个配置过程也是十分简单.因此,在这里我就拓展了一下部署,实现了对多站点的日志分析功能. 注意:自本篇博文发表之日,apache-2.4.x还是无法支持部署awstats日志分析结果访问动态化,不过可以用前篇日志分析工具Awstats实战之Nginx篇-分析结果静态化中讲到的方法来实施部署awstats.因此,本篇博文将用apache

日志分析工具Awstats的分析结果动态化

上一篇博文"分析工具Awstats实战之Nginx篇-分析结果静态化"介绍了如何将awstats的日志分析信息用静态页面来进行显示,不过显示效果肯定没有动态的好啦.本篇博文将带大家一起来部署动态的分析结果查阅. 环境: CentOS 6.4 ip:192.168.1.113 域名:www.sunsky.com(server和client都通过hosts文件解析) nginx-1.2.9 编译安装,路径/usr/local/nginx,服务开启状态 日志记录格式为nginx默认的,切勿更

日志分析工具:数据中心管理的新装备

一种新型管理工具正在IT组织中成为主流.和繁琐的测试或评估方法不同,这些新兴工具关注的是系统和应用程序最常见的共同点:日志文件.   在复杂而严苛的数据中心环境中,通常会使用一些成熟的管理工具来查找隐患,但是这些工具无法感知细微的因果关联,数据中心的日常排错和优化目标难以实现.日志分析工具可以填补这些空缺,让IT专业人员在面对复杂的数据中心基础架构时能做出更有效和正确的决策. 几乎所有的系统和应用程序都会产生日志文件.日志是带时间标记的足迹,记录行为.条件和事件.在实际环境中,单独的日志文件价值

容器时代的分布式日志架构

本文讲的是容器时代的分布式日志架构, 微服务与宏观问题 现代的科技公司强调微服务架构,容器也越来越重要.在需要为多种平台和应用提供服务的世界里,微服务是必不可少的.容器,比如 Docker,相比于它的近亲,虚拟机, 拥有更高的资源利用率,更好的隔离性和更棒的可移植性,这使其成为了微服务的理想选择. 但微服务和容器也会带来问题.可以将它已过时的前代单体架构与现代的微服务框架对比来思考. 单体架构也许不具备可扩展性和灵活性,但它有统一性的优势.要理解为什么统一性非常重要,想象你也许需要根据你的业务需

数据泵IMPDP 导入工具的使用

--================================= --数据泵IMPDP 导入工具的使用 --=================================         数据的导入导出时数据库经常处理的作业之一,Oracle 提供了IMP和IMPDP以及SQL*Loader等工具来完成数据的导入工作,其中IMP服务于早期的9i之前的版本,在10g及后续版本,Oracle 提供了数据泵高速导入工具,本文主要介绍IMPDP的使用方法,关于高速导出工具请参照:数据泵EXPD

《Hadoop实战手册》一第1章 Hadoop分布式文件系统——导入和导出数据

第1章 Hadoop分布式文件系统--导入和导出数据 Hadoop实战手册 本章我们将介绍: 使用Hadoop shell命令导入和导出数据到HDFS 使用distcp实现集群间数据复制 使用Sqoop从MySQL数据库导入数据到HDFS 使用Sqoop从HDFS导出数据到MySQL 配置Sqoop以支持SQL Server 从HDFS导出数据到MongoDB 从MongoDB导入数据到HDFS 使用Pig从HDFS导出数据到MongoDB 在Greenplum外部表中使用HDFS 利用Flum

C++开发的Redis数据导入工具优化_C 语言

背景 使用C++开发了一个Redis数据导入工具 从oracle中将所有表数据导入到redis中: 不是单纯的数据导入,每条oracle中的原有记录,需要经过业务逻辑处理, 并添加索引(redis集合): 工具完成后,性能是个瓶颈: 优化效果 使用了2个样本数据测试: 样本数据a表8763 条记录: b表940279 条记录: 优化前,a表耗时11.417s: 优化后,a表耗时1.883s: 用到的工具 gprof, pstrace,time 使用time工具查看每次执行的耗时,分别包含用户时间