大数据数据流的架构和组件

时间:2024-02-21 09:36:33

            大数据数据流的架构和组件

                                     作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

 

 

一.什么是数据流 

1>.数据流概述

  所谓数据流(流数据),是一组顺序、大量、快速、连续到达的数据序 列,一般情况下,数据流可被视为一个随时间延续而无限增长的动态数 据集合。应用于网络监控、传感器网络、航空航天、气象测控和金融服 务等领域。 

2>.流数据特点

  (1)数据实时到达; 
  (2)数据到达次序独立,不受应用系统所控制; 
  (3)数据规模宏大且不能预知其大值; 
  (4)数据一经处理,除非特意保存,否则不能被再次取出处理,或者再次提取数据代价昂贵。 

3>.批处理和流处理的比较

  我们在大数据离线计算开发/运维课介绍了大数据领域内的批处理技术。 它一般用于计算从所含的所有数据得到的结果,并实现对大数据集的深入 分析。相反,流处理则需要摄取一个数据序列,增量式更新指标、报告和 汇总统计结果,以响应每个到达的数据记录。这种处理方法更适合实时监 控和响应调用。 

4>.Lambda架构 

  很多企业结合使用两种方法,从而构建一种混合模式,并同时维持实时处理层和批处理层。 

 

 

二.大数据数据流典型架构 

 

数据采集:
  负责从各种数据源实时采集数据,在采集时,可能对数据做 简单的ETL或格式转换,以便于下游系统使用。例如:Apache Flume 。

数据接入:
  由于数据采集的速度和数据处理的速度不一定同步,通常会 引入一个消息中间件来作为缓冲。例如:Apache Kafka

流式计算:
  对流数据进行实时的处理和分析。例如:Apache Storm Ø  数据存储:对处理后的结果数据进行保存,以便下游系统进行查询或再 次处理。例如:Apache HBase

 

三.数据流涉及组件 

1>.Flume

  Flume是一个分布式、可靠、高可用的海量日志 聚合系统,支持在系统中定制各类数据发送方, 用于收集数据;同时,Flume提供对数据进行简 单处理,并写到各种数据接收方。
  
  Flume特性:
    高可靠性。Flume提供了end to end的数据可靠性机制
    易于扩展。Agent为分布式架构,可水平扩展
    易于恢复。Channel中保存了与数据源有关的事件,用于失败时的恢复
    功能丰富。Flume内置了多种组件,包括不同数据源和不同存储方式
  
  
  三大部件:
    Source:数据源,简单的说就是agent获取数据的入口
    Channel:管道,数据流通和存储的通道。一个source必须至少和一个channel关联
    Sink:用来接收channel传输的数据并将之传送到指定的地方,成功后从channel中删除

2>.StreamSets

  在StreamSets推出前,Flume,Scribe等少数开源工具是流式采集日志仅有的解决方案, Flume的应用案例多。StreamSets是Flume的良好替代者,优势在于: 
    功能上,有管理界面,可以单个流启停,统计报表丰富,可以预览数据;
    源端支持,其多出HDFS、JDBC、Redis、FTP等几种重要的源
    目标端支持,其多出JDBC、Redis、RabbitMQ、Flume等几种重要的目标
    数据处理上,StreamSets有多种字段处理组件,Flume仅有过滤功能。有强大的格式处理能力,且支持源端压缩格式。还能使用JavaScript和Jython等自定义处理逻辑。

  缺点是资源占用率比Flume略高,但因为和Flume一样可以分布式部署,问题不大 •  因为其源和目标的支持特别丰富,还可以对数据进行不落地处理,因此还可以替代传统ETL软件的一部分功能.

3>.kafka

  Kafka是一个高吞吐、分布式、基于发布订阅的消息系统,利用Kafka可在廉价PC server上搭 建起大规模的消息系统。

  Kafka特性:
    使用zero-copy技术,数据在磁盘上存取代价为O(1)
    高吞吐率,在万兆网下,单点写入吞吐率高于300MB/s
    显式分布式,即所有的producer、broker和consumer都可为分布式的
    消费者的high level API易于使用(low level API则相当坑)

  核心概念:
    Broker:Kafka集群包含一个或多 个服务实例,这种服务实例被称为 broker
    Topic:每条发布到Kafka集群的消 息都有一个类别,这个类别被称为 Topic
    Producer:负责发布消息到Kafka Broker
    Consumer:消息消费者,向Kafka Broker读取消息的客户端

4>.zookeeper

  ZooKeeper是一个分布式应用程序协调服务,是Google的 Chubby的一个开源实现 

  Znode:ZooKeeper名字空间的每个节点都是以这样一个路 径来标识的。这样的节点统一称为znode。
    持久的/临时的
    无序的/有序的

  三种成员:
    Leader:接收消息,并编号
    Follower:同步消息,参与Leader选举
    Observer:同步消息,但不参与Leader选举
  ZAB:
    ZooKeeper原子广播协议, 是其数据一致性算法,与Paxos 有着明显区别(注意ZooKeeper 并不是强一致的)