Hadoop学习笔记:分布式数据收集系统Flume和Sqoop

背景

Hadoop提供了一个中央化的存储系统,有利于进行集中式的数据分析与数据共享。Hadoop对存储格式没有要求,包括用户访问日志、产品信息和网页数据等。但是,数据分散在各个离散的设备上或保存在传统的存储设备和系统中,我们需要将数据存入Hadoop。常见数据来源包括网页信息、用户操作日志等非结构化数据和传统关系型数据库(像MySQL、Oracled等)中的结构化数据,例如商品信息、用户信息等。如何将分散的、多样化的数据源中的数据收集整理后可靠的迁移到Hadoop系统中,并且要支持数据源的动态扩展,通过并行处理提高性能是需要解决的问题。

Flume(分布式非结构化数据收集系统)

Flume是由Cloudera公司开源的分布式、可靠、高可用的海量日志数据采集系统,数据源和数据存储系统支持定制和扩展。Flume属于一种中间件,屏蔽了数据源和数据存储系统的异构性。Flume有如下特点:

  • 高可靠性,保证数据不丢失
  • 高可扩展性,各组件数目可以扩展
  • 高性能,吞吐率很高,能满足海量数据收集的需求
  • 可管理,可以动态增加和删除组件
  • 文档丰富,社区活跃,已经成为Hadoop生态系统的标配
Flume NG基本架构

Flume分Flume OG和Flume NG两个版本,Flume NG架构有所简化,代码更精简。
在这里插入图片描述
Flume可以将数据从任一地方搬运到任一其他地方,不一定是HDFS。Agent是Flume中类似数据搬运工的组件,从上面的架构中看,四个Client(机器或是应用程序)中的数据写入Agent,如果前一层Agent数量太多,就把Agent汇总到后一层Agent再传递,Agent数量太多会对HDFS的冲击太大,而且会产生大量的小文件。
Agent的内部由Source(负责获取数据,是数据的源头)、Channel(类似缓冲区)和Sink(从Channel拿数据发给后端)组成。Agent是一个生产者和消费者模型,如果生产者和消费者数据量不对等,会产生数据堆积,所以引入缓冲区Channel。Source、Channel和Sink支持插拔,Flume提供了很多类型的Source、Channel和Sink,可以根据实际情况进行配置,整体开发量比较小。

Flume NG核心概念

  • Event
    Event是Flume数据传输的基本单元,Flume以事件的形式将数据从源头传送到最终的目的。Event由可选的Header和载有数据的一个Byte Array构
    成。一个Event代表一条数据,数据可以是文本等各种格式。Event载有的数据对Flume是不透明的。Header是容纳了Key-Value字符串对的无序集合,比如设置图片的Topic,图像类、风景类等,Key在集合内是唯一的。Header可以在上下文路由中使用扩展。Byte Array可以是一个文本。
  • Client
    Client将原始数据包装成多个Event后发送到一个或多个Agent。目的是从数据源系统中解耦Flume。Client是一个客户端,是API接口,可以调用接口把数据写到Agent里。Client在Flume的拓扑结构中不是必须的。Client实体可以使用Client SDK (org.apache.flume.api)定制。Flume log4j Appender是一种Client实体。
  • Agent
    Agent是Flume中最重要的组件,一个Agent包含Source, Channel, Sink和其他组件,它利用这些组件将Event从一个节点传输到另一个节点或最终
    目的,Agent是Flume流的基础部分,Flume为这些组件提供了配置、生命周期管理、监控支持。
    1、Source
    Source负责接收Event或通过特殊机制产生Event,并将Event批量的放到一个或多个Channel中。Source包含Event驱动和轮询2种类型。
    Source分以下类型:
    1)与系统集成的Source: Syslog, Netcat
    2)自动生成事件的Source: Exec
    3)监听文件夹下文件变化:Spooling Directory Source,
    Taildir Source
    4)用于Agent和Agent之间通信的IPC Source: Avro、Thrift
    Source必须至少和一个channel关联。
    监听文件夹下文件变化是比较常用的类型:
    Spooling Directory Source:
    监听一个文件夹下新产生的文件,将文件中每行数据包装成一个Event发送至 Channel。已经产生的文件不能进行任意修改,不然会停止处理,建议将文件(唯一文件名)写到临时目录,之后再转移到监听目录下。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值