我们将大数据处理按处理时间的跨度要求分为以下几类
基于实时数据流的处理,通常的时间跨度在数百毫秒到数秒之间
基于历史数据的交互式查询,通常时间跨度在数十秒到数分钟之间
复杂的批量数据处理,通常的时间跨度在几分钟到数小时之间
1.流处理
流是一种数据传送技术,它把客户端数据变成一个稳定的流。正是由于数据传送呈现连续不停的形态,所以流引擎需要连续不断处理数据
流处理的主要应用场景:金融领域和电信领域
1.1 Stom
Storm是一个免费开源、分布式、高容错的实时计算系统。
Storm主要分为两种组件Nimbus和Supervisor。这两种组件都是快速失败的,没有状态。任务状态和心跳信息等都保存在Zookeeper上的,提交的代码资源都在本地机器的硬盘上。
1)Nimbus负责在集群里面发送代码,分配工作给机器,并且监控状态。全局只有一个。
2)Supervisor会监听分配给它那台机器的工作,根据需要启动/关闭工作进程Worker。每一个要运行Storm的机器上都要部署一个,并且,按照机器的配置设定上面分配的槽位数。
3)Zookeeper是Storm重点依赖的外部资源。Nimbus和Supervisor甚至实际运行的Worker都是把心跳保存在Zookeeper上的。Nimbus也是根据Zookeerper上的心跳和任务运行状况,进行调度和任务分配的。
4)Storm提交运行的程序称为Topology。
5)Topology处理的最小的消息单位是一个Tuple,也就是一个任意对象的数组。
Topology由Spout和Bolt构成。Spout是发出Tuple的结点。Bolt可以随意订阅某个Spout或者Bolt发出的Tuple。Spout和Bolt都统称为component。
1.2 Spark Streaming
Spark Streaming是一种构建在Spark上的实时计算框架,它扩展了Spark处理大规模流式数据的能力。
Spark Streaming的基本原理是将输入数据流以时间片(秒级)为单位进行拆分,然后以类似批处理的方式处理每个时间片数据
2.交互式查询(Adhoc Query)
在商业智能领域少量更新和大量扫描分析场景,目前是Impala+Kudu/Hive/Spark SQL/Greenplum Mpp数据库在混战。
3.批处理技术
3.1 MapReduce(Hadoop)
MapReduce模式的主要思想是自动将一个大的计算拆解成Map和Reduce
3.2 Spark
Spark的中间数据放到内存中,对于迭代运算效率更高。
Spark更适合于迭代运算比较多的ML和DM运算。因为在Spark里面,有RDD的抽象概念。
Spark比Hadoop更通用
Spark提供的数据集操作类型有很多种,不像Hadoop只提供了Map和Reduce两种操作。比如map, filter, flatMap, sample, groupByKey, reduceByKey, union, join, cogroup, mapValues, sort,partionBy等多种操作类型,Spark把这些操作称为Transformations。同时还提供Count, collect, reduce, lookup, save等多种actions操作。
网友评论