大数据存储平台之异构存储实践深度解读

发表时间:2019-05-07

  Flume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系,统。

  Flume可以采集文件,socket数据包等各种形式源数据,又可以将采集到的数据输出到HDFS、hbase、hive、kaf:ka等众多外部存储系统中

  Flume针对特殊场景也具备良好的自定义扩展能力,因此,flume可以适用于大部分的日常数据采集场景

  1、Flume分布式系统中最核心的角色是agent,flume采集系统就是由一个个agent所连接起来形成

  b)Sink:下沉地,采集数据的传送目的,用于往下一级agent传递数据或者往最终存储系统传递数据

  Source启动的时候会运行一个设置的UNIX命令(比如 cat file),该命令会不断地往标准输出(stdout)输出数据,这些数据就会被打包成Event,进行处理

  监听某个目录,该目录有新文件出现时,把文件的内容打包成Event,进行处理

  可以实现实时传输,但在flume不运行和脚本错误时,会丢数据,也不支持断点续传功能。因为没有记录上次文件读到的位置,从而没,办法知道,下次再读时,从什:么地方开始读。特别是在日志文件一直在增加的时候。flume的source挂了。等flume的source再次开启的这段时间内,增加的日志内容,就没办法被source读取到了。不过flume有一个execStream的扩展,可以自己写一个监控日志增加情况,把增加的日志,通过自己写的工具把增加的内容,传送给flume的node。再传送给sink的node。要是能在tail类的source中能支持,在node挂掉这段时间的内容,等下次node开启后在继续传送,那就更完美了。

  SpoolSource:是监测配置的:目录下新增的文件,并将文件中的数据读取出来,可实现准实时。需要注意两点:

  2、spool目录下不可包含相应的子目录。在实际使用、的过程中,可以结合log4j使用,使用log4j的时候,将log4j的文件分割机制设为1分钟一次,将文件拷贝到spool的监控目录。log4j有一个TimeRolling的插件,可以把log4j分割的文件到spool目录。基本实现了实时的监控。Flume在传完文件之后,将会修改文件的后?缀,变为L、ETED(后缀也可以在配置文件中灵活指定)

  ExecSource可以实现对日志的实时收集,但是存在Flume不运行或者指令执行出错时,将无法收集到日志数据,无法何证日志数据的完整性。SpoolSource虽然无法实现实时的收集数据,但是可以使用以分钟的方式分割文件,趋近于实时。如果应用无法实现以分钟切割日志文件的话,可以两种收集方式结合使用。

  (1)MemoryChannel 可以实现高速的吞吐,但是无法保证数据的完整性。

  (3)FileChannel保证数据的完整性与一致性。在具体配置FileChannel时,建议FileChannel设置的目录和程序日志文件保存的目录设成不同的磁盘,以便提高效率。

  File Channel 是一个持久化的隧道(Channel),它持久化所有的事件,并将其存储到磁盘中。因此,即使 Java 虚拟,机当掉,或者操作系统崩溃或重启,再或者事件没有在管道中成功地传递到下一个代理(agent),这一切都不会造成数据丢失。Memory Channel是一个不稳定的隧道,其原因是由于它在内存中存储所有事件。如果 Java 进程死掉,任何存储在内存的事件将会丢失。另外,内存的空间收到 RAM:大小的限制,而 File Channel这方面是它的优势,只要磁盘空间足够,它就可以将所有事件数据存储到磁盘上。

  Event数据存储在内存中和磁盘上,当内存队列满了,会持久化到磁盘文件(当前试验性的,不建议生产环境使用)

  Sink在设置存储数据时,可以向文件系统中,数据库中,Hadoop中储数据,在日志数据较少时,可以将数?据存储“在文件系中,并且设定一定的时间间隔保存数据。在日志数据较多时,可以将相应的日志数据存储到Hadoop中,便于日后进行相应的数据分析。

  Flume提供了大量内置的Source、Channel和Sin!k类型。不同类型的Source,Channel和Sink可以自由组合。组合方式基于用户设置的配置文件,非常灵活。比如:Channel可以把事件暂存在内存里,也可以持久化到本地硬盘上。Sink可以把日志写入HDFS, HBase,甚至是另外一个Source等等。Flume支持用户建立多级流,也就是说,多个Agent可以协同工作,并且支持Fan-in、Fan-out、Contextual Routing、Backup Routes。如下图所示:

  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时,将数据写到本地,待恢复后,继续发送,

  1、Flum。e的安装非常简单,只需要解压即可,当然,前提是已有hadoop环境

  2、根据数据采集的需求配置采集方案,描述在配置文件中(文件名可任意自定义)

      大赢家彩票,大赢家彩票网址


服务热线:400-664-1388

传真:(0757)88351111

邮件:kamfu@greekrss.com

地址:广东省佛山市南海区桂城深海路17号瀚天科技城A区5号楼三楼4区

版权所有 广东大赢家彩票集团科技股份有限公司鄂ICP备18027811号-3网站建设:大赢家彩票科技

大赢家集团微信公众号

佛山市民之窗微信

网站地图