物流网站建设报价,绵阳建设招投标在哪个网站,wordpress系统通知邮箱,企业管理培训机构在一个完整的离线大数据处理系统中#xff0c;除了HDFSMapReduceHive组成分析系统的核心之外#xff0c;还需要数据采集、结果数据导出、任务调度等不可或缺的辅助系统#xff0c;而这些辅助工具在hadoop生态体系中都有便捷的开源框架#xff0c;在此#xff0c;我们首先来… 在一个完整的离线大数据处理系统中除了HDFSMapReduceHive组成分析系统的核心之外还需要数据采集、结果数据导出、任务调度等不可或缺的辅助系统而这些辅助工具在hadoop生态体系中都有便捷的开源框架在此我们首先来介绍下数据采集部分所用的的开源框架——Flume。 一、FLUME概述
Flume是Cloudera提供的一个高可用的高可靠的分布式的海量日志采集、聚合和传输的系统Flume支持在日志系统中定制各类数据发送方用于收集数据同时Flume提供对数据进行简单处理并写到各种数据接受方可定制的能力。
由三部分组成Source/Channel/SinkSource 相当于数据录入源是 生产者 的角色 Channel 相当于数据传输通道Sink 相当于数据接收端是消费者的角色。在 Flume-ng 中数据流向是 Source–Channel–Sink。 Source:从数据发生器接收数据,并将接收的数据以Flume的event格式传递给一个或者多个通道channal,Flume提供多种数据接收的方式,比如Avro,Thrift,twitter1%等 Channel:channel是一种短暂的存储容器,它将从source处接收到的event格式的数据缓存起来,直到它们被sinks消费掉,它在source和sink间起着一共桥梁的作用,channal是一个完整的事务,这一点保证了数据在收发的时候的一致性. 并且它可以和任意数量的source和sink链接. 支持的类型有: JDBC channel , File System channel , Memort channel等. sink:sink将数据存储到集中存储器比如Hbase和HDFS,它从channals消费数据(events)并将其传递给目标地. 目标地可能是另一个sink,也可能HDFS,HBase.
二、 Flume的优点 可以和任意存储进程集成。输入的的数据速率大于写入目的存储的速率flume会进行缓冲减小hdfs的压力。flume中的事务基于channel使用了两个事务模型sender receiver确保消息被可靠发送。 Flume使用两个独立的事务分别负责从soucrce到channel以及从channel到sink的事件传递。一旦事务中所有的数据全部成功提交到channel那么source才认为该数据读取完成。同理只有成功被sink写出去的数据才会从channel中移除。
三、Flume采集系统结构图
3.1 简单结构单个agent采集数据 3.2 复杂结构多级agent之间串联 3.3 Flume组成架构详解 Agent Agent是一个JVM进程它以事件的形式将数据从源头送至目的。 Agent主要有3个部分组成Source、Channel、Sink。Source
Source是负责接收数据到Flume Agent的组件。Source组件可以处理各种类型、各种格式的日志数据包括avro、thrift、exec、jms、spooling directory、netcat、sequence generator、syslog、http、legacy。
Channel
Channel是位于Source和Sink之间的缓冲区。因此Channel允许Source和Sink运作在不同的速率上。Channel是线程安全的可以同时处理几个Source的写入操作和几个Sink的读取操作。 Flume自带两种ChannelMemory Channel和File Channel。 Memory Channel是内存中的队列。Memory Channel在不需要关心数据丢失的情景下适用。如果需要关心数据丢失那么Memory Channel就不应该使用因为程序死亡、机器宕机或者重启都会导致数据丢失。 File Channel将所有事件写到磁盘。因此在程序关闭或机器宕机的情况下不会丢失数据。
Sink
Sink不断地轮询Channel中的事件且批量地移除它们并将这些事件批量写入到存储或索引系统、或者被发送到另一个Flume Agent。 Sink是完全事务性的。在从Channel批量删除数据之前每个Sink用Channel启动一个事务。批量事件一旦成功写出到存储系统或下一个Flume AgentSink就利用Channel提交事务。事务一旦被提交该Channel从自己的内部缓冲区删除事件。 Sink组件目的地包括hdfs、logger、avro、thrift、ipc、file、null、HBase、solr、自定义。
Event
传输单元Flume数据传输的基本单元以事件的形式将数据从源头送至目的地。 Event由可选的header和载有数据的一个byte array 构成。Header是容纳了key-value字符串对的HashMap。