龙岩网站改版较好的公司,怎样做 网站做seo,做书的封面网站,东营市建设管理局一、介绍
Flume是一个高可用、高可靠#xff0c;分布式的海量日志采集、聚合和传输的系统。Flume支持在日志系统中定制各类数据发送方#xff0c;用于收集数据#xff1b;同时#xff0c;Flume提供对数据进行简单处理#xff0c;并写到各种数据接受方#xff08;可定制分布式的海量日志采集、聚合和传输的系统。Flume支持在日志系统中定制各类数据发送方用于收集数据同时Flume提供对数据进行简单处理并写到各种数据接受方可定制的能力。其中Flume-NG是Flume的一个分支其目的是要明显简单体积更小更容易部署其最基本的架构如下图所示 Flume-NG由一个个Agent来组成而每个Agent由Source、Channel、Sink三个模块组成其中Source负责接收数据Channel负责数据的传输Sink则负责数据向下一端的发送。
二、模块说明
名称说明SourceSource负责接收数据或通过特殊机制产生数据并将数据批量放到一个或多个Channel。Source的类型有数据驱动和轮询两种。典型的Source类型如下1.和系统集成的SourcesSyslog、Netcat。2.自动生成事件的SourcesExec、SEQ。3.用于Agent和Agent之间通信的IPC SourcesAvro。4.Source必须至少和一个Channel关联。ChannelChannel位于Source和Sink之间用于缓存来自Source的数据当Sink成功将数据发送到下一跳的Channel或最终目的地时数据从Channel移除。Channel提供的持久化水平与Channel的类型相关有以下三类1.Memory Channel非持久化。2.File Channel基于WAL预写式日志Write-Ahead Logging的持久化实现。3.JDBC Channel基于嵌入Database的持久化实现。Channel支持事务可提供较弱的顺序保证可以和任何数量的Source和Sink工作。SinkSink负责将数据传输到下一跳或最终目的成功完成后将数据从Channel移除。典型的Sink类型如下1.存储数据到最终目的终端Sink比如HDFS、HBase。2.自动消耗的Sink比如Null Sink。3.用于Agent间通信的IPC sinkAvro。Sink必须作用于一个确切的Channel。
Flume也可以配置成多个Source、Channel、Sink如下图所示 Flume的可靠性基于Agent间事务的交换下一个Agent down掉Channel可以持久化数据Agent恢复后再传输。Flume的可用性则基于内建的Load Balancing和Failover机制。Channel及Agent都可以配多个实体实体之间可以使用负载分担等策略。每个Agent为一个JVM进程同一台服务器可以有多个Agent。收集节点Agent123负责处理日志汇聚节点Agent4负责写入HDFS每个收集节点的Agent可以选择多个汇聚节点这样可以实现负载均衡。 Flume的架构和详细原理介绍请参见https://flume.apache.org/releases/1.9.0.html。
三、Flume原理
Agent之间的可靠性 Agent之间数据交换流程如下图所示。 Flume采用基于Transactions的方式保证数据传输的可靠性当数据从一个Agent流向另外一个Agent时两个Transactions已经开始生效。发送Agent的Sink首先从Channel取出一条消息并且将该消息发送给另外一个Agent。如果接受消息的Agent成功地接受并处理消息那么发送Agent将会提交Transactions标识一次数据传输成功可靠地完成。 当接收Agent接受到发送Agent发送的消息时开始一个新的Transactions当该数据被成功处理写入Channel中那么接收Agent提交该Transactions并向发送Agent发送成功响应。 如果在某次提交commit之前数据传输出现了失败将会再次开始上一次Transactions并将上次发送失败的数据重新传输。因为commit操作已经将Transactions写入了磁盘那么在进程故障退出并恢复业务之后仍然可以继续上次的Transactions。
四、Flume与HDFS的关系
当用户配置HDFS作为Flume的Sink时HDFS就作为Flume的最终数据存储系统Flume将传输的数据全部按照配置写入HDFS中。
五、Flume与HBase的关系
当用户配置HBase作为Flume的Sink时HBase就作为Flume的最终数据存储系统Flume将传输的数据全部按照配置写入HBase中。