大数据数据流的架构和组件
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.什么是数据流
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 并不是强一致的)