zoukankan      html  css  js  c++  java
  • Flume

         Flume主要是一个代理。Flume 传输的数据的基本单位是 Event,如果是文本文件,通常是一行记录。flume有三个核心组件,主要是source,channel,sink。 通过这些组件,Event 可以从一个地方流向另一个地方。
     
         Flume 使用事务性的方式保证传送Event整个过程的可靠性。Sink 必须在 Event 已经被传达到下一站agent里,或者,已经被存入外部数据目的地之后,才能把 Event 从 Channel 中 remove 掉。
     
    ①Source 可以接收外部源发送过来的数据。不同的 source,可以接受不同的数据格式。比如有目录池(spooling directory)数据源,可以监控指定文件夹中的新文件变化,如果目录中有文件产生,就会立刻读取其内容。
     
    ②Channel 是一个存储地,接收 source 的输出,直到有 sink 消费掉 channel 中的数据。channel 中的数据直到进入到下一个channel中或者进入终端才会被删除。当 sink 写入失败后,可以自动重启,不会造成数据丢失,因此很可靠。
     
    ③Sink 会消费 channel 中的数据,然后送给外部源或者其他 source。如数据可以写入到 HDFS 或者 HBase 中。因此,即使 Java 虚拟机当掉,或者操作系统崩溃或重启,再或者事件没有在管道中成功地传递到下一个代理(agent),这一切都不会造成数据丢失。
     
    主要的channel有两种,Memory channel和File channel。
     
    1. File Channel 是一个持久化的隧道(Channel),它持久化所有的事件,并将其存储到磁盘中。因此,即使 Java 虚拟机当掉,或者操作系统崩溃或重启,再或者事件没有在管道中成功地传递到下一个代理(agent),这一切都不会造成数据丢失。
    2. 。Memory Channel 是一个不稳定的隧道,其原因是由于它在内存中存储所有事件。如果 Java 进程死掉,任何存储在内存的事件将会丢失。另外,内存的空间受到 RAM大小的限制,而 File Channel 这方面是它的优势,只要磁盘空间足够,它就可以将所有事件数据存储到磁盘上。
     
    附例:最简单的单一代理flume
     
             
    执行
    $ bin/flume-ng agent -c conf -f ./conf/example.conf -n a1 -Dflume.root.logger=INFO,console
     
    参数说明
    • -n 指定agent名称
    • -c 指定配置文件目录
    • -f 指定配置文件
    • -Dflume.root.logger=DEBUG,console 设置日志等级
     
    执行
    $ telnet localhost 44444
    Hello World!
  • 相关阅读:
    sitemap.xml生成方法(asp和php)(转)
    浏览器缓存机制(转)
    JavaScript在IE浏览器和Firefox浏览器中的差异总结(转)
    JavaScript的数组及其操作
    Google Maps和GIS开发资源收集
    js 字符串转换成数字(转)
    关于构造函数
    C#类型转化
    .net framework
    C#变量
  • 原文地址:https://www.cnblogs.com/carleunderwood/p/7149821.html
Copyright © 2011-2022 走看看