分享

flume-ng 1.4的安装的介绍及介绍如何搜集数据示例

pig2 2014-5-25 14:29:43 发表于 实操演练 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 1 40785
问题导读:

1.flume-ng 与flume的区别是什么?
2.flume-ng如何安装?
3.如何使用flume-ng搜集数据?







flume-ng是一个分布式、高可靠和高效的日志收集系统
flume-ng是flume的新版本的意思,其中“ng”意为new generate(新一代),目前来说,flume-ng 1.4是最新的版本
1.下载安装包
  可以到官网http://www.apache.org/dist/flume/stable/网站下载安装包:apache-flume-1.4.0-bin.tar.gz

2.解压安装包
  tar -zxvf apache-flume-1.4.0-bin.tar.gz

3.将解压后的文件夹移至指定目录下:
   这里,我放置的位置是个人目录下。
   mv apache-flume-1.4.0-bin ~/

4.将目录重命名
   这里看你个人爱好吧,我觉得把名字改了,看着舒服一点,毕竟那么长。
  mv apache-flume-1.4.0-bin flume-1.4.0

5.添加环境变量
  
使配置生效:
  source /etc/profile

6.写一个简单的测试案例
(1).在conf目录下新建一个文件,example-conf.properties,内容如下:

  1. # Describe the source
  2. a1.sources = r1
  3. a1.sinks = k1
  4. a1.channels = c1
  5. # Describe/configure the source
  6. a1.sources.r1.type = avro
  7. a1.sources.r1.bind = localhost
  8. a1.sources.r1.port = 44444
  9. # Describe the sink
  10. # 将数据输出至日志中
  11. a1.sinks.k1.type = logger
  12. # Use a channel which buffers events in memory
  13. a1.channels.c1.type = memory
  14. a1.channels.c1.capacity = 1000
  15. a1.channels.c1.transactionCapacity = 100
  16. # Bind the source and sink to the channel
  17. a1.sources.r1.channels = c1
  18. a1.sinks.k1.channel = c1
复制代码

(2).在conf目录下新建一个源文件file01并向其中写入数据

   touch file01;
   echo "hello world" > file01

  (3).启动agent代理
   flume-ng agent -n a1 -f example-conf.properties
  启动结果如下:

注:如果出现下面的异常,可以不用管它:



(4).启动avro-client客户端向agent代理发送数据:
   flume-ng avro-client -H localhost -p 44444 -F file01
  注:要新打开一个console端口进行操作。

  (5).这时可以看到agen代理端输出如下:
  
   从上图可知,avro-client客户端发来的数据已经被agent代理接收到,在本例中的配置中,设置的sink类型为logger,其输出结果会保存在日志中。







已有(1)人评论

跳转到指定楼层
sstutu 发表于 2014-5-25 14:43:12


下面分享一下心得:
最近两天,仔细的看了一下Flume中央日志系统(版本号:1.3.X),Flume在本人看来,还是一个非常不错的日志收集系统的,其设计理念非常易用,简洁。并且是一个开源项目,基于Java语言开发,可以进行一些自定义的功能开发。运行Flume时,机器必须安装装JDK6.0以上的版本,并且,Flume目前只有Linux系统的启动脚本,没有Windows环境的启动脚本。
      
Flume主要由3个重要的组件购成:
Source:完成对日志数据的收集,分成transtion 和 event 打入到channel之中。
Channel:主要提供一个队列的功能,对source提供中的数据进行简单的缓存。
Sink:取出Channel中的数据,进行相应的存储文件系统,数据库,或者提交到远程服务器。
对现有程序改动最小的使用方式是使用是直接读取程序原来记录的日志文件,基本可以实现无缝接入,不需要对现有程序进行任何改动。
对于直接读取文件Source,有两种方式:
ExecSource:以运行Linux命令的方式,持续的输出最新的数据,如tail -F 文件名指令,在这种方式下,取的文件名必须是指定的。
SpoolSource:是监测配置的目录下新增的文件,并将文件中的数据读取出来。需要注意两点:
1、拷贝到spool目录下的文件不可以再打开编辑。
2、spool目录下不可包含相应的子目录。

在实际使用的过程中,可以结合log4j使用,使用log4j的时候,将log4j的文件分割机制设为1分钟一次,将文件拷贝到spool的监控目录。log4j有一个TimeRolling的插件,可以把log4j分割的文件到spool目录。基本实现了实时的监控。Flume在传完文件之后,将会修改文件的后缀,变为.COMPLETED(后缀也可以在配置文件中灵活指定)

   ExecSource,SpoolSource对比:ExecSource可以实现对日志的实时收集,但是存在Flume不运行或者指令执行出错时,将无法收集到日志数据,无法何证日志数据的完整性。SpoolSource虽然无法实现实时的收集数据,但是可以使用以分钟的方式分割文件,趋近于实时。如果应用无法实现以分钟切割日志文件的话,可以两种收集方式结合使用。

   Channel有多种方式:有MemoryChannel,JDBC Channel,MemoryRecoverChannel,FileChannel。MemoryChannel可以实现高速的吞吐,但是无法保证数据的完整性。MemoryRecoverChannel在官方文档的建议上已经建义使用FileChannel来替换。FileChannel保证数据的完整性与一致性。在具体配置不现的FileChannel时,建议FileChannel设置的目录和程序日志文件保存的目录设成不同的磁盘,以便提高效率。

   Sink在设置存储数据时,可以向文件系统中,数据库中,hadoop中储数据,在日志数据较少时,可以将数据存储在文件系中,并且设定一定的时间间隔保存数据。在日志数据较多时,可以将相应的日志数据存储到Hadoop中,便于日后进行相应的数据分析。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条