【分布式计算】分布式日志导入工具-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-10-06 22:45:08

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

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

问题导读: 1.Flume传输的数据的基本单位是是什么? 2.Event是什么,流向是怎么样的? 3.Source:完成对日志数据的收集,分成什么打入Channel中? 4.Channel的作用是什么? 5.取出Channel中的数据,进行相应的存储文件系统,数据库,或者提交到远程服务器,由谁来完成? 6.Flume支那些数据格式? 7.对于直接读取文件Source,有两种方式,分别是什么? 8.Channel有多种方式有哪些方式? 概述Flume是Cloudera公司的一款高性能.高可能的分布

Flume可分布式日志收集系统

Flume 1. 前言 flume是由cloudera软件公司产出的可分布式日志收集系统,后与2009年被捐赠了apache软件基金会,为hadoop相关组件之一.尤其近几年随着flume的不断被完善以及升级版本的逐一推出,特别是flume-ng;同时flume内部的各种组件不断丰富,用户在开发的过程中使用的便利性得到很大的改善,现已成为apache top项目之一. 2. 概述 2.1. 什么是flume?http://flume.apache.org/index.html Apache Fl

HAProxy + Keepalived + Flume 构建高性能高可用分布式日志系统

一.HAProxy简介 HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代 理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理. HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接.并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上. 二.Keepalived简介 它是一个基于VRRP协议来实现的WEB服务高可用方案,

Nginx日志导入到Hive0.13.1,同步Hbase0.96.2,设置RowKey为autoincrement(ID自增长)

目录: 一.Nginx的相关配置,以及测试数据 二.Hadoop中创建使用目录 三.Hive的日志表创建,并同步到Hbase中 1)创建自增长ID的类,并添加到Hive环境中 2)在Hive中创建日志表 3)将Nginx的日志数据导入到Hive日志表中 方法一:将本地目录中的文件导入到hive中 方法二:从HDFS导入数据 方法三:通过如Flume.Kafka一类的工具监控日志数据,自动导入 4)在Hive中创建Hbase可以识别的表 5)将Hive的日志表,使用自增长Id做为rowkey导入到

rsyslog管理分布式日志

背景 有一个4台机器的分布式服务,不多不少,上每台机器上查看日志比较麻烦,用Flume,Logstash.ElasticSearch.Kibana等分布式日志管理系统又显得大材小用,所以想到了centos自带的rsyslog. 简介 Rsyslog可以简单的理解为syslog的超集,在老版本的Linux系统中,Red Hat Enterprise Linux 3/4/5默认是使用的syslog作为系统的日志工具,从RHEL 6 开始系统默认使用了Rsyslog. Rsyslog 是负责收集 sy

logstash+elastic+kibana日志管理工具介绍及安装

logstash+elastic+kibana日志管理工具介绍及安装 一. Logstash 安装 1.1 前置条件,安装了官方java 7或更新版本 查看 [ldx@1511-min ~]$ java -version openjdk version "1.8.0_71" OpenJDK Runtime Environment (build 1.8.0_71-b15) OpenJDK 64-Bit Server VM (build 25.71-b15, mixed mode) 1.2

利用开源架构ELK构建分布式日志系统

本文介绍了如何使用成熟的经典架构ELK(即Elastic search,Logstash和Kibana)构建分布式日志监控系统,很多公司采用该架构构建分布式日志系统,包括新浪微博,freewheel,畅捷通等. 背景日志,对每个系统来说,都是很重要,又很容易被忽视的部分.日志里记录了程序执行的关键信息,ERROR和WARNING信息等等.我们可以根据日志做很多事情,做数据分析,系统监控,排查问题等等 .但是,任何一个中大型系统都不可能是单台Server,日志文件散落在几十台甚至成千上万台Serv

多种日志收集工具比较

参考https://www.jianshu.com/p/8384f6cd0f22 Logstash 优势 Logstash 主要的有点就是它的灵活性,这还主要因为它有很多插件.然后它清楚的文档已经直白的配置格式让它可以再多种场景下应用.这样的良性循环让我们可以在网上找到很多资源,几乎可以处理任何问题.以下是一些例子: 劣势 Logstash 致命的问题是它的性能以及资源消耗(默认的堆大小是 1GB).尽管它的性能在近几年已经有很大提升,与它的替代者们相比还是要慢很多的.这里有 Logstash

asp.net core mcroservices 架构之 分布式日志(三):集成kafka

一 kafka介绍 kafka是基于zookeeper的一个分布式流平台,既然是流,那么大家都能猜到它的存储结构基本上就是线性的了.硬盘大家都知道读写非常的慢,那是因为在随机情况下,线性下,硬盘的读写非常快.kafka官方文档,一直拿传统的消息队列来和kafka对比,这样大家会触类旁通更快了解kafka的特性.最熟悉的消息队列框架有ActiveMQ 和 RabbitMQ.熟悉消息队列的,最熟悉的特性就是队列和发布订阅功能,因为这是大家最常用的,kafka实现了一些特有的机制,去规避传统的消息队列