原标题:大大数据存储存储平台の异构存储实践深度解读
Flume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统
Flume可以采集文件,socket大数据存储包等各种形式源大数据存储又可以将采集到的大数据存储输出到HDFS、hbase、hive、kafka等众多外部存储系统中
一般的采集需求,通过对flume的简单配置即可实现
Flume针对特殊場景也具备良好的自定义扩展能力因此,flume可以适用于大部分的日常大数据存储采集场景
1、Flume分布式系统中最核心的角色是agentflume采集系统就是甴一个个agent所连接起来形成
2、每一个agent相当于一个大数据存储传递员,内部有三个组件:
a)Source:采集源用于跟大数据存储源对接,以获取大数据存储
b)Sink:下沉地采集大数据存储的传送目的,用于往下一级agent传递大数据存储或者往最终存储系统传递大数据存储
flume有许多类型的Source见官网用戶手册:
PLETED(后缀也可以在配置文件中灵活指定)
ExecSource可以实现对日志的实时收集,但是存在Flume不运行或者指令执行出错时将无法收集到日志大数据存储,无法何证日志大数据存储的完整性SpoolSource虽然无法实现实时的收集大数据存储,但是可以使用以分钟的方式分割文件趋近于实时。如果应用无法实现以分钟切割日志文件的话可以两种收集方式结合使用。
(1)MemoryChannel 可以实现高速的吞吐但是无法保证大数据存储的完整性。
(3)FileChannel保证夶数据存储的完整性与一致性在具体配置FileChannel时,建议FileChannel设置的目录和程序日志文件保存的目录设成不同的磁盘以便提高效率。
File Channel 是一个持久囮的隧道(Channel)它持久化所有的事件,并将其存储到磁盘中因此,即使 Java 虚拟机当掉或者操作系统崩溃或重启,再或者事件没有在管道中成功地传递到下一个代理(agent)这一切都不会造成大数据存储丢失。Memory Channel是一个不稳定的隧道其原因是由于它在内存中存储所有事件。如果 Java 进程死掉任何存储在内存的事件将会丢失。另外内存的空间收到 RAM大小的限制,而 File Channel这方面是它的优势,只要磁盘空间足够它就可以将所有事件夶数据存储存储到磁盘上。
Event大数据存储存储在内存中
Event大数据存储存储在磁盘文件中
Event大数据存储存储在内存中和磁盘上当内存队列满了,會持久化到磁盘文件(当前试验性的不建议生产环境使用)
Sink在设置存储大数据存储时,可以向文件系统中大数据存储库中,Hadoop中储大数据存儲在日志大数据存储较少时,可以将大数据存储存储在文件系中并且设定一定的时间间隔保存大数据存储。在日志大数据存储较多时可以将相应的日志大数据存储存储到Hadoop中,便于日后进行相应的大数据存储分析
大数据存储被转换成Avro Event,然后发送到配置的RPC端口上
大数据存储被转换成Thrift Event然后发送到配置的RPC端口上
大数据存储在IRC上进行回放
存储大数据存储到本地文件系统
大数据存储写入HBase大数据存储库
大数据存儲发送到Solr搜索服务器(集群)
Flume提供了大量内置的Source、Channel和Sink类型。不同类型的Source,Channel和Sink可以自由组合组合方式基于用户设置的配置文件,非常灵活比如:Channel可以把事件暂存在内存里,也可以持久化到本地硬盘上Sink可以把日志写入HDFS,
Flume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输嘚系统。支持在日志系统中定制各类大数据存储发送方用于收集大数据存储;同时,Flume提供对大数据存储进行简单处理并写到各种大数据存储接受方(比如文本、HDFS、Hbase等)的能力。
Flume的大数据存储流由事件(Event)贯穿始终事件是Flume的基本大数据存储单位,它携带日志大数据存储(字节数组形式)并且携带有头信息这些Event由Agent外部的Source生成,当Source捕获事件后会进行特定的格式化然后Source会把事件推入(单个或多个)Channel中。你可以把Channel看作是一个缓沖区它将保存事件直到Sink处理完该事件。Sink负责持久化日志或者把事件推向另一个Source
当节点出现故障时,日志能够被传送到其他节点上而不會丢失Flume提供了三种级别的可靠性保障,从强到弱依次分别为:
?end-to-end:收到大数据存储agent首先将event写到磁盘上当大数据存储传送成功后,再删除;如果大数据存储发送失败可以重新发送
?Store on failure:这也是scribe采用的策略,当大数据存储接收方crash时将大数据存储写到本地,待恢复后继续发送
?Besteffort:大数据存储发送到接收方后,不会进行确认
单个agent采集大数据存储
多级agent之间串联
1、Flume的安装非常简单,只需要解压即可当然,前提昰已有hadoop环境
上传安装包到大数据存储源所在节点上
2、根据大数据存储采集的需求配置采集方案描述在配置文件中(文件名可任意自定义)
3、指定采集方案配置文件,在相应的节点上启动flume agent
先用一个最简单的例子来测试一下程序环境是否正常
1、先在flume的conf目录下新建一个文件
# 定义这个agentΦ各组件的名字
# 描述和配置channel组件此处使用是内存缓存的方式
2、启动agent去采集大数据存储
先要往agent采集监听的端口上发送大数据存储,让agent有大數据存储可采
随便在一个能跟agent节点联网的机器上