`
gaojingsong
  • 浏览: 1210817 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

【FlumeBase介绍】

阅读更多

FlumeBase是一个建立在Flume之上的数据驱动的流处理系统。这个系统允许用户动态的向数据收集环境插入查询并且监控被Flume收集到的事件流。这些查询可能是抽样调查输入的数据,也可能是指定固定的监控,也可能是数据转换或者是质量过滤任务。这些查询是用一个类似于SQL的名为“rtsql”语言编写的。

 

FlumeBase可以把数据反馈给一个在交互的shell环境下的用户。它也可以配置成把输出的事件流返回到Flume网络中,用于被其他的工具使用或者持久化到Hbase、HDFS或者其他的存储介质中。

 

这个系统强调对被Flume捕获到的输入数据的低延迟分析。“rtsql”语言的名字强调了系统的实时查询特性,也说明了衍生于基于SQL的查询语言语法。FlumeBase被期望于在把被Flume捕捉的数据被用类似于Hadoop一样的工具去深入分析(可能是高延时的)之前,可以允许你执行有效的in-line数据转换或者过滤,或者有时效性的消息或者是一个更广泛系统的调谐。

 

警告FlumeBase是一个实验性的系统!现在还不能满足生产环境使用的要求。把这个系统连接到Flume生产环境的节点上可能会导致数据丢失,错配置或者其他比较严重的问题。

 

 

FlumeBase系统是由一个命令行客户端、一个成为执行环境的服务器和负责收集和传输数据的Flume系统组成。这些可能被配置为单独的、分布式的进程、或者相对的在一个机器上甚至是在一个进程中。

命令行客户端是这里面最简单的组件。这个进程直接被一个用户运行(可能是一个服务器、但是更多的是他的桌面电脑或者笔记本)。它需要连接到执行环境。这个客户端提供给用户一个提示信息,这个提示中可能会有新的查询或者控制语句被给出。

每一个查询(比如说,SELECT语句)会产生一个在执行环境中的流。用户可能需要订阅正在运行的流(这对于用户新创建的流是自动完成的)。当一个订阅的流发出一个输出事件,它的文本将被打印到客户端的终端上。

关闭客户端不会终止任何已提交的流,它们运行在执行环境中,执行环境是一个单独的可以被多个用户共享的常驻进程。一个执行环境保存着所有流的定义(用CREATE STREAM创建),并处理运行中的流。所以执行环境一般运行在专用的服务器上。为了测试的需要,可能也会包含在和命令行客户端相同的进程中。(当执行环境内嵌到客户端的时候,关闭客户端将关闭所有的流,并且不能够在获得这些流)

提交的查询可以在流的数据上做计算。流被定义为一个事件集,就类似于在以表为基础的SQL执行环境中的记录。这些事件直接和Flume中的事件连接。用户需要在查询之前先定义这个流,这个定义指定了在这个事件中的字段,包括怎样把事件主体转换成字段和这个流起源于哪里。每一个查询流本身是一个流,它的输出是一系列的事件,这些输出的事件是基于用户指定的计算处理过程和这个查询流所输入的事件集。

默认情况下,被用户提交的查询将导致一个没有名称标识的查询流,这个查询流只会把它的输出传送给订阅的客户端实例。这些查询流在没有用户订阅的时候持续的运行,但是这时候所生成的输出结果将被丢弃掉(而且也没办法在此获取)。

用户可以给运行的查询流绑定一个名称(或者在使用CREATE STREAM AS SELECT语句提交一个查询流的时候这样做)。这个名称被作为一个Flume逻辑节点的名称,这个逻辑节点把这个查询流的结果作为一个Avro编码的事件集广播出去。用户可以接着使用Flume的shell把这个逻辑节点配置成把一个该输出结果的拷贝定向到一个监控的应用,比如持久化存储(比如HDFS)或者其他的应用。

FlumeBase通过修改在CREATE STREAM语句中指定的节点的接收器的定义来从一个Flume的网络读取。当一个逻辑节点被确定为一个流的源头,它的接收器定义被重写为一个包含它原有的接收器和一个新的代理接收器的新的接收器,这个新的代理接收器负责把这个节点的输出推送给在FlumeBase执行环境中的一个collector source 。(FlumeBase将拥有一个内嵌的Flume物理节点,这节点将拥有托管给它的一个逻辑节点作为接受和传送事件流的必要条件).当一个流被丢弃掉(使用DROP STREAM或者\shutdown!直接关掉执行环境)的时候,最初的逻辑节点的定义会被恢复为提供数据流的那个逻辑节点。

在FlumeBase执行环境和Flume之间的交互式通过Flume的master节点的thrift接口完成的。寄宿在一个执行环境中的物理节点是被Flume的master节点所控制的,而且是对于所有的Flume节点都是这样的。因为这个原因,查询流可能需要花费几秒钟去初始化或者取消,因为这些都依赖于Flume方面的配置。一旦初始化成功,查询流将在事件的处理上有较低的延时。如果没有外部的Flume网络可用,你可以配置Flume的执行环境来维护一个内嵌的Flume的master节点,以用于测试或者单机计算的目的。

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics