赞
踩
计算能力根据场景抽象分成四大类:批计算、流计算、在线查询和即席分析。 不同场景配合不同的存储和计算框架来实现,以满足业务的复杂需求,
主要用于批量数据的高延时处理场景,如离线数仓的加工、大规模数据的清洗和挖掘等。目前大多是利用MapReduce、Hive、Spark等计算框架进行处理,其特点是数据吞吐量大、延时高,适合人机交互少的场景。
相比MapReduce,Spark在以下几方面具有优势:
数据处理技术:Spark将执行模型抽象为通用的有向无环图(DAG)执行计划,这可以将多个Stage串联或者并行执行,而无须将Stage的中间结果输出到HDFS中。
·数据格式和内存布局:Spark RDD能支持粗粒度写操作,而对于读操作,RDD可以精确到每条记录,这使得RDD可以用来作为分布式索引。
·执行策略:MapReduce在数据Shuffle之前花费了大量的时间来排序,Spark支持基于Hash的分布式聚合,调度中采用更为通用的任务执行DAG,每一轮的输出结果都可以缓存在内存中。
1、基于内存、消除了冗余的HDFS读写 、
MapReduce在每次执行时都要从磁盘读取数据,计算完毕后都要把数据存放到磁盘上。而Spark是基于内存的。
Hadoop每次shuffle(分区合并排序等……)操作后,必须写到磁盘,而Spark在shuffle后不一定落盘,可以cache到内存中,以便迭代时使用。如果操作复杂,很多的shufle操作,那么Hadoop的读写IO时间会大大增加。少磁盘IO操作
2、DAG优化操作、消除了冗余的MapReduce阶段、
Hadoop的shuffle操作一定连着完整的MapReduce操作,冗余繁琐。
而Spark基于RDD提供了丰富的算子操作,DAG调度等机制。它可以把整个执行过程做一个图,然后进行优化。
DAG引擎,shuffle过程中避免 不必要的sort操作、 且reduce操作产生shuffle数据,可以缓存在内存中。
3.JVM的优化、Task启动(线程池)
Spark Task的启动时间快。Spark 使用多线程池模型来减少task启动开稍、Spark采用fork线程的方式,Spark每次MapReduce操作是基于线程的。Spark的Executor是启动一次JVM,内存的Task操作是在线程池内线程复用的。
而Hadoop采用创建新的进程的方式,启动一个Task便会启动一次JVM。
每次启动JVM的时间可能就需要几秒甚至十几秒,那么当Task多了,这个时间Hadoop不知道比Spark慢了多少。
也叫实时流计算,对于数据的加工处理和应用有较强的实效性要求,常见于监控告警场景,例如实时分析网络事件,当有异常事件发生时能够及时介入处理。例如,阿里巴巴“双11”的可视化大屏上的数据展现是根据浏览、交易数据经过实时计算后展现在可视化大屏上的一种应用。这类场景目前应用较多的计算框架主要有Flink、Spark Streaming等。
流计算的常见应用场景如下:
主要用于数据结果的在线查询、条件过滤和筛选等,如数据检索、条件过滤等。根据不同的场景也会有多种选择,如营销场景
企业一般对在线查询的需求比较旺盛,因此可能会有多套在线计算的能力提供服务。
在线查询的常见应用场景如下:
主要用于分析型场景和经验统计。一般而言,企业80%的数据处理需求是在线查询和即席分析。针对不同维度的分析,有多种方式可以提供,提前固定计算的维度、根据需求任意维度的交叉分析(ad-hoc)等都是常见的场景。目前也有很多相应的产品、框架来支撑这方面的应用,如Kylin、Impala、ClickHouse、Hawk等。
即席分析的常见应用场景如下:
面对前台的智能业务需求,传统的数据加工和分析难以满足,作为数据开发的重要工具,算法开发需要满足复杂的学习预测类智能需求,输出算法模型能力,将数据洞察升级为学习预测,驱动业务创新。当数据开发和资产加工无法满足数据挖掘、算法标签生产等场景的需求时,算法开发可为离线开发和实时开发提供算法模型。加工好的数据和标签资产又能被算法开发用于模型训练和学习预测,支持智能需求研发。不同企业的算法应用场景也不一样,数据的差异性也决定了每个企业的算法效果会有很大差别,数据和特征决定了机器学习的上限
比较常见的应用场景如下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。