基于Spark的大数据混合计算模式应用与研究
- 格式:doc
- 大小:536.00 KB
- 文档页数:6
基于Spark的大数据分析与处理平台设计与实现一、引言随着互联网和物联网技术的快速发展,大数据已经成为当今社会中不可或缺的一部分。
大数据分析和处理已经成为各行各业的重要工具,帮助企业更好地理解市场趋势、优化运营效率、提升用户体验等。
在大数据处理领域,Apache Spark作为一种快速、通用、可扩展的大数据处理引擎,受到了广泛关注和应用。
二、Spark简介Apache Spark是一种基于内存计算的大数据并行计算框架,提供了丰富的API支持,包括Scala、Java、Python和R等语言。
Spark具有高容错性、高性能和易用性等特点,适用于各种大数据处理场景,如批处理、交互式查询、流式计算和机器学习等。
三、大数据分析与处理平台设计1. 架构设计在设计基于Spark的大数据分析与处理平台时,首先需要考虑整体架构设计。
典型的架构包括数据采集层、数据存储层、数据处理层和数据展示层。
其中,Spark通常被用于数据处理层,负责对海量数据进行分布式计算和分析。
2. 数据采集与清洗在构建大数据平台时,数据采集和清洗是至关重要的环节。
通过各种方式采集结构化和非结构化数据,并对数据进行清洗和预处理,以确保数据质量和准确性。
3. 数据存储与管理针对不同的业务需求,可以选择合适的数据存储方案,如HDFS、HBase、Cassandra等。
同时,需要考虑数据的备份、恢复和安全性等问题。
4. 数据处理与分析Spark提供了丰富的API和库,如Spark SQL、Spark Streaming、MLlib等,可以支持各种复杂的数据处理和分析任务。
通过编写Spark应用程序,可以实现对海量数据的实时处理和分析。
5. 数据展示与可视化为了更直观地展示分析结果,可以利用可视化工具如Tableau、Power BI等,将分析结果以图表或报表的形式展示给用户,帮助他们更好地理解数据。
四、平台实现步骤1. 环境搭建在搭建基于Spark的大数据平台之前,需要准备好相应的硬件设施和软件环境,包括服务器集群、操作系统、JDK、Hadoop等。
利用Spark进行实时大数据处理的最佳实践在当今数字化时代,大数据处理已成为企业不可或缺的一环。
为了满足日益增长的数据处理需求,传统的批处理方式已无法满足实时性和性能的要求。
而Apache Spark作为一个快速、通用、容错且易用的大数据处理引擎,成为了处理实时大数据的最佳实践之一。
Spark提供了丰富的API和内置的组件,可以在实时大数据处理过程中实现高效的数据处理和分析。
以下是利用Spark进行实时大数据处理的最佳实践。
1. 选择合适的集群模式:Spark可以在多种集群模式下运行,包括单机模式、本地模式、独立模式和云模式。
根据数据量和需求,选择合适的集群模式可以提高实时大数据处理的效率和性能。
2. 使用Spark Streaming处理流式数据:Spark Streaming是Spark的一部分,支持从各种数据源(如Kafka、Flume和HDFS)实时接收数据并进行处理。
使用Spark Streaming可以实时处理数据流,并支持窗口和滑动窗口操作,以满足不同的实时数据分析需求。
3. 使用Spark SQL进行结构化数据处理:Spark SQL是Spark的SQL查询引擎,可以通过SQL语句处理结构化数据。
通过使用Spark SQL,可以方便地进行实时查询、过滤和转换操作,以满足实时大数据处理的需求。
4. 使用Spark MLlib进行机器学习:Spark MLlib是Spark的机器学习库,提供了各种机器学习算法和工具,可以在实时大数据处理中应用机器学习。
通过使用Spark MLlib,可以进行实时的数据挖掘和模型训练,帮助企业发现隐藏在大数据中的信息和模式。
5. 使用Spark GraphX进行图处理:Spark GraphX是Spark的图处理库,用于处理大规模的图数据。
通过使用Spark GraphX,可以进行实时的图分析和图计算,帮助企业发现图数据中的关联和模式。
6. 使用Spark Streaming和Spark SQL进行流与批处理的无缝集成:Spark提供了将流处理和批处理无缝集成的能力,可以在同一个应用程序中同时处理实时数据流和批处理数据。
Spark大数据技术的原理与应用场景分析在当今信息化时代,大数据成为了各行各业的热门话题。
面对海量的数据,如何高效地进行处理和分析,成为了企业和组织面临的重要挑战。
而Spark大数据技术作为一种快速、可靠和易用的开源集群计算系统,因其卓越的性能和灵活的应用场景而备受关注。
本文将对Spark大数据技术的原理和应用场景进行分析。
首先,让我们了解一下Spark大数据技术的原理。
Spark是一种基于内存的分布式计算系统,它通过将数据缓存在内存中,大大提高了计算速度。
相比于传统的MapReduce计算模型,Spark的计算速度可以提升数十倍甚至数百倍。
这得益于Spark采用了弹性分布式数据集(Resilient Distributed Dataset,简称RDD)这一高效的数据结构。
RDD可以将数据分割为多个小块,并在集群中进行并行计算。
此外,Spark还具备各种数据处理和分析功能,如SQL查询、机器学习算法和图计算等。
基于上述原理,Spark大数据技术拥有广泛的应用场景。
首先,Spark适用于数据的批处理。
企业通常面临大量数据需要进行清洗、转换和整理的情况,Spark可以很好地解决这一问题。
Spark提供了丰富的数据处理功能,如过滤、转换、聚合等,可以帮助企业高效地进行数据清洗和预处理。
其次,Spark也适用于实时数据处理。
在许多场景下,企业需要对实时数据进行快速分析和处理,以便及时做出决策。
Spark的内存计算和低延迟特性使其成为实时数据处理的良好选择。
通过将数据存储在内存中,并利用RDD的特性,Spark 可以在毫秒级别的时间内完成数据分析和计算。
这对于实时监控、欺诈检测等应用场景非常重要。
此外,Spark还常用于机器学习和人工智能领域。
在人工智能技术的快速发展下,大量数据需要进行深度学习和模型训练。
Spark提供了丰富的机器学习库和算法,如MLlib和GraphX,可以帮助企业快速构建和训练模型。
面向云计算环境下基于Spark的大数据处理技术研究现代互联网时代,数据规模急剧增长,数据处理能力已成为企业竞争力的重要标志。
云计算作为一种新兴的技术,颠覆了传统数据处理方式,成为大数据处理时代的核心技术之一。
而Spark作为云计算时代的一个重要技术,也受到了越来越多企业的重视,并逐渐成为企业常用的大数据处理技术之一。
本文将对基于Spark的大数据处理技术进行探讨和研究。
一、Spark技术简介Spark是一种基于内存的分布式数据处理框架,由美国加州大学伯克利分校AMPLab开发,旨在解决Hadoop数据处理上的缺陷。
其拥有快速的批数据处理和交互式查询处理能力,以及面向数据流的处理能力,有着广泛的应用场景,被认为是大数据时代的“杀手锏”。
Spark的核心技术包括RDD(Resilient Distributed Datasets)、DataFrame、Spark SQL、MLlib、GraphX等,其中RDD是其核心技术之一。
RDD把数据分为多个数据块,存储在不同的节点上,通过多轮迭代,对数据进行分析和处理,避免了中间存储的开销,提高了处理效率。
Spark还具备内存计算和数据共享技术,同时通过高效的任务调度机制,实现了大规模集群处理。
二、Spark在云计算下的优势云计算的出现,为企业提供了强大的大数据处理能力,而Spark作为云计算的一种重要技术,更是为企业的大数据研究提供了更为高效和快捷的方式。
具体而言,Spark在云计算下的优势主要有以下几点:1.强大的分布式计算能力Spark适用于大规模集群,能够快速处理PB级别的数据,同时还具备水平扩展性,可以使用更多的节点进行数据处理。
2.高效的内存计算Spark内存计算能力非常强大,其可以将数据存储在内存中,避免了磁盘数据读取的瓶颈,大大提高了数据处理速度。
3.灵活的计算模型Spark支持多种计算模型,可以进行流处理、批处理以及机器学习等多种模型,并且容易扩展,能够满足不同场景的需求。
Spark大数据处理框架解读与实践案例随着大数据应用的不断增长,高效的大数据处理框架成为了企业和研究机构的关注焦点。
Spark作为一种快速、通用的大数据处理框架,已经成为了业界的热门选择。
本文将对Spark进行深入解读,并通过一个实践案例来展示其强大的大数据处理能力。
Spark是一个基于内存计算的大数据处理框架,由于其强大的计算引擎和丰富的功能,成为了大数据处理领域的佼佼者。
与传统的MapReduce框架相比,Spark 具有以下几个显著优势:首先,Spark充分利用内存计算,大大提高了处理速度。
传统MapReduce框架需要将数据存储在磁盘上,而Spark将数据存储在内存中,从而避免了频繁的I/O 操作,极大地提高了计算效率。
其次,Spark支持多种语言,包括Java、Scala和Python等,使得开发者可以根据自己的偏好和实际应用场景选择最合适的编程语言。
同时,Spark提供了丰富的API和库,如Spark SQL、Spark Streaming和MLlib等,使得开发者可以在同一框架下完成各种不同类型的大数据处理任务。
另外,Spark还支持交互式查询和实时流处理。
通过Spark的交互式Shell,开发者可以快速地进行数据查询和分析,对于业务场景下需要即时响应的数据处理需求非常有用。
而Spark Streaming则提供了实时流处理的功能,使得开发者可以对即时数据进行流式处理和分析。
为了更好地理解Spark的强大能力,我们接下来将通过一个实践案例来演示其在大数据处理中的应用。
假设我们要对一个电子商务网站的用户行为数据进行分析,以了解用户的购买行为和喜好。
首先,我们需要从网站的服务器日志中提取所需的数据。
通过Spark 的强大文件读取功能,我们可以快速地读取和处理大量的日志文件。
接下来,我们可以使用Spark的数据处理和分析功能对提取到的日志数据进行清洗和转换。
比如,我们可以筛选出某一时间段内的用户购买记录,并进行聚合分析,以确定最受欢迎的商品和购买次数最多的用户。
基于Spark平台的大数据分析系统的设计与实现Chapter 1 引言随着互联网的飞速发展,数据量的爆炸式增长使得传统的数据处理方式无法满足大数据时代的需求。
面对这一现实,大数据技术应运而生,为大数据处理和分析提供了一个全新的解决方案。
Spark是一款优秀的大数据处理框架,在数据处理、分析、机器学习等方面都有着出色的表现,因此Spark平台的大数据分析系统的设计与实现具有非常重要的意义。
本文将针对该问题进行深入剖析,并给出具体的解决方案。
Chapter 2 系统设计2.1 系统架构采用分布式计算模式,基于Spark框架设计大数据分析系统。
该系统采用了常见的三层结构,包括:1)数据接收层该层通过各种数据源(如Kafka、Flume、HDFS等)收集数据,并将其存在分布式文件系统中(如HDFS)。
该层主要是将各种数据源中的数据汇总到一个共同的地方进行存储,便于后续的数据处理与分析。
该层主要负责数据的处理和分析,采用Spark的分布式计算能力对数据进行处理,包括数据清洗、过滤、聚合、排序等操作。
该层是整个系统的核心部分,也是最复杂的部分。
3)数据展示层该层主要是将处理后的数据进行可视化展示,采用ECharts等可视化组件将数据以图表的形式展现出来,提高数据可读性。
同时也支持通过API等方式对数据进行查询和导出。
2.2 数据处理流程该系统的数据处理流程包括以下几个步骤:1)数据获取从数据源中获取数据,如Kafka等,获得原始数据。
2)数据清洗将原始数据进行清洗,去除无效或异常数据,提取需要的相关字段。
3)数据处理根据业务需求对数据进行处理和分析,如做统计分析、关联分析、聚合分析等。
将处理后的数据以图表的形式呈现出来,针对不同用户给出不同的数据可视化方案。
2.3 技术选型1)SparkSpark是处理大规模数据的分布式计算系统,主要用于大数据的处理、分析和挖掘,有非常强的计算能力。
2)HadoopHadoop是一个分布式计算框架,可以存储和处理大规模数据,是目前最广泛使用的分布式计算框架之一。
基于Spark的大数据实时流处理技术研究及应用大数据实时流处理技术简介与应用案例引言:随着互联网技术的飞速发展,全球范围内每天都产生着海量的数据。
为了从这些数据中获取有价值的信息,需采用高效的大数据处理技术。
在这样的背景下,基于Spark的实时流处理技术应运而生。
本文将深入探讨这一技术的原理、特点以及其在不同应用场景中的应用。
一、大数据实时流处理技术的原理与特点1. 实时流处理技术的基本原理实时流处理技术通过将数据分割成有序的数据流,并对流进行实时处理和分析,可以在数据流持续产生的同时快速响应并输出结果。
Spark作为一种实时流处理技术,其核心思想是将处理任务划分成一系列的小任务,并使用流水线方式执行,从而实现数据流的实时处理。
2. 实时流处理技术的特点- 高效性:实时流处理技术采用并行计算的方式,能够在极短的时间内处理大量的数据。
- 可扩展性:基于Spark的实时流处理技术能够很好地与集群计算环境配合使用,通过增加计算节点来实现快速扩展。
- 容错性:在处理大规模数据时,由于网络延迟或节点故障等原因导致的数据丢失或计算中断问题,实时流处理技术能够自动进行故障转移和恢复操作,保证数据的完整性和可靠性。
- 实时性:实时流处理技术能够对数据流进行实时处理和分析,快速生成结果,并能够持续更新结果以应对动态变化的数据。
二、基于Spark的实时流处理技术在应用中的应用案例1. 金融行业- 交易监测和反欺诈:通过实时监测交易数据流,基于Spark的实时流处理技术能够实时识别和预防欺诈行为。
通过对交易数据进行快速分析和模型训练,可以及时发现异常交易,并提供预警或拦截措施。
这在金融行业的风险控制和资金安全保护方面具有重要意义。
- 实时风险评估:基于Spark的实时流处理技术可以将海量的金融市场数据进行实时处理和分析,快速评估风险情况,帮助金融机构及时做出决策和调整投资组合,提高投资效益和降低风险。
2. 物联网- 实时数据监测:在物联网领域,设备产生的数据以实时流的形式不断涌现。
结合Hadoop与Spark的大数据分析与处理技术研究随着互联网的快速发展和信息化时代的到来,大数据技术逐渐成为各行各业关注的焦点。
在海量数据的背景下,如何高效地进行数据分析和处理成为了企业和组织面临的重要挑战。
Hadoop和Spark作为两大主流的大数据处理框架,各自具有独特的优势和适用场景。
本文将围绕结合Hadoop与Spark的大数据分析与处理技术展开深入研究。
一、Hadoop技术概述Hadoop作为Apache基金会的顶级项目,是一个开源的分布式计算平台,提供了可靠、可扩展的分布式计算框架。
其核心包括Hadoop Distributed File System(HDFS)和MapReduce计算模型。
HDFS是一种高容错性的分布式文件系统,能够存储海量数据并保证数据的可靠性和高可用性;MapReduce则是一种编程模型,通过将计算任务分解成多个小任务并行处理,实现了分布式计算。
在实际应用中,Hadoop广泛用于海量数据的存储和批量处理,例如日志分析、数据挖掘等场景。
通过搭建Hadoop集群,用户可以将数据存储在HDFS中,并利用MapReduce等工具进行数据处理和分析。
然而,由于MapReduce存在计算延迟高、不适合实时计算等缺点,随着大数据应用场景的多样化和复杂化,人们开始寻求更高效的大数据处理解决方案。
二、Spark技术概述Spark是另一个流行的大数据处理框架,也是Apache基金会的顶级项目。
与Hadoop相比,Spark具有更快的计算速度和更强大的内存计算能力。
Spark基于内存计算技术,将中间结果存储在内存中,避免了频繁的磁盘读写操作,从而大幅提升了计算性能。
除了支持传统的批处理作业外,Spark还提供了丰富的组件和API,如Spark SQL、Spark Streaming、MLlib(机器学习库)和GraphX(图计算库),满足了不同类型的大数据处理需求。
特别是Spark Streaming模块支持实时流式数据处理,使得Spark在实时计算领域具有重要应用前景。
Spark大数据技术的应用场景及发展趋势大数据技术在当今信息时代扮演着重要的角色,而Spark作为一个快速、通用且可扩展的大型数据处理引擎,已经成为大数据技术中的瑰宝。
本文将从应用场景和发展趋势两个方面探讨Spark大数据技术的重要性和未来发展。
一、应用场景1.实时数据处理:Spark的主要优势之一是能够进行实时数据处理。
在金融、电信、电子商务等领域,实时数据处理对于做出准确的决策至关重要。
Spark通过支持内存计算,能够快速处理大规模数据集,极大地提高了实时数据处理的效率和准确性。
2.批量数据处理:Spark也适用于批量数据处理。
当我们处理海量数据时,Spark的分布式计算引擎能够将大规模数据集分成多个部分,进行并行处理,从而加速数据处理的速度。
这对于数据清洗、数据仓库和ETL(Extract, Transform, Load)等批量数据处理任务非常有用。
3.机器学习和数据挖掘:Spark提供了机器学习和数据挖掘的丰富库,如MLlib和GraphX。
这些库提供了一系列的算法和工具,能够帮助开发者快速构建和部署机器学习模型。
Spark的分布式计算能力使其在大规模数据集上进行复杂的机器学习任务时表现出色。
4.实时流处理:随着物联网和传感器技术的普及,实时流数据处理变得越来越重要。
Spark Streaming允许开发者实时处理数据流,并集成了Spark的批处理引擎,使其能够同时支持实时和批量数据处理。
实时流处理在智能交通、智能家居和供应链管理等领域有广泛应用。
5.图计算:Spark的图计算库GraphX提供了一种高效处理大规模图数据的方法。
图计算在社交网络分析、网络关系分析、推荐系统和生物信息学等领域中具有重要应用。
通过发挥Spark的分布式计算能力,开发者可以在大规模图数据上执行复杂的计算任务。
二、发展趋势1.深度学习的集成:随着人工智能和深度学习的快速发展,Spark正在积极集成深度学习框架,如TensorFlow和PyTorch。
基于Spark的大数据分布式计算框架研究在当今信息时代,随着网络科技和技术的发展,数据的规模逐渐呈指数级增长。
所以,如何快速高效地处理这些海量数据成为了一个亟待解决的问题。
而大数据分布式计算框架就是解决这一问题的最佳方案之一。
其中,Spark就是大数据分布式计算中备受关注的一个框架,本篇文章就将对Spark进行研究探讨。
一、Spark框架概述Spark是一个大数据分布式计算框架,它支持速度快、易于使用的API,并具有适用于内存和磁盘上的计算模式。
Spark的核心思想是将数据集合分为若干小块(分区),将这些数据分别分布到不同的计算节点上进行处理,最后将结果合并得到最终的结果。
其内部实现采用了内存计算和读取磁盘的策略,使得Spark具有了较高的运算速度。
另外,Spark的API接口非常丰富,同时也兼容Java、Scala、Python等各种编程语言,更为方便应用于不同的业务场景。
二、Spark的核心组件Spark主要包含了以下四个核心组件:1. Spark CoreSpark Core是Spark的核心组件,它提供RDD(Resilient Distributed Datasets,具有弹性的分布式数据集)的API接口,实现了快速分布式计算和物化计算功能。
Spark Core的RDD可以缓存到内存中,因此读取速度远高于Hadoop中的MapReduce。
2. Spark SQLSpark SQL是一种基于SQL的查询引擎,针对结构化数据进行SQL查询和化简,并支持使用SQL语句连接多个数据源。
除了基于SQL的查询外,Spark SQL还提供了许多有用的操作,如withColumnRenamed、groupBy和agg等函数。
3. Spark StreamingSpark Streaming是一种分布式计算模型,支持实时处理数据流。
它采用微小批处理(Micro-batch Processing)技术,将数据分为小批次处理,从而保证了高吞吐量和可扩展性。
基于Spark的大数据混合计算模式应用与研究①胡俊1, 胡贤德1, 程家兴1,21(安徽新华学院信息工程学院,合肥230088)2(安徽大学计算机科学与技术学院,合肥230031)摘要:现实世界大数据应用复杂多样,可能会同时包含不同特征的数据和计算,在这种情况下单一的计算模式多半难以满足整个应用的需求,因此需要考虑不同计算模式的混搭使用。
混合计算模式之集大成者当属UCBerkeley AMPLab的Spark系统,其涵盖了几乎所有典型的大数据计算模式,包括迭代计算、批处理计算、内存计算、流式计算(Spark Streaming)、数据查询分析计算(Shark)、以及图计算(GraphX)。
Spark提供了一个强大的内存计算引擎,实现了优异的计算性能,同时还保持与Hadoop平台的兼容性。
因此,随着系统的不断稳定和成熟,Spark有望成为与Hadoop共存的新一代大数据处理系统和平台。
本文详细研究和分析了Spark生态系统,建立了基于Spark平台的混合计算模型架构,并说明通过spark生态系统可以有效的满足大数据混合计算模式的应用。
关键词:大数据;混合计算模式;spark;弹性分布数据集The research and application of big data hybrid computing mode based on sparkHU Jun1, HU Xian-De1, CHEN Jia-Xing1,21(School of Information Engineering, AnHui XinHua University, HeFei 230088, China)2(College of Computer Science and Technology, AnHui University, HeFei 230031, China)Abstract:The use of big data in the real world was complicated. It may contain different characteristic of data and computing. In this case, the single computing mode was mostly difficult to met the application requirements. Therefore we need to consider different computing mode of mix use. The ultimate evolution of hybrid computing mode is spark system which invented by UCBerkeley AMPLab. It covers almost all the typical big data computing mode, including iterative computing, batch computing, memory computing, flow computing (Spark Streaming), data query analysis (Shark), and map computing (GraphX). Spark provides a powerful memory computing engine and implents computing with excellent performance, while maintaining compatibility with the Hadoop platform. Therefore, with the continuous stable and mature, Spark is expected to be colocalized with Hadoop and became a new generation of big data processing systems and platforms. The paper has studied and analyed the Spark ecosystem, and set up the hybrid computing model architecture based on Spark platform, which also has illustrated the spark ecosystem can meet the application of hybrid computing model.Keywords:big data; hybrid computing mode; spark; resilient distributed dataset①收稿时间:2014-07-19;收到修改稿时间:2014-08-121 引言:目前的大数据处理可以分为如下三个类型:(1)复杂的批量数据处理(batch data processing),通常的时间跨度在数十分钟到数小时之间。
(2)基于历史数据的交互式查询(interactive query)通常的时间跨度在数十秒到数分钟之间。
(3)基于实时数据流的数据处理(streaming data processing),通常的时间跨度在数百毫秒到数秒之间[1]。
目前已有很多相对成熟的开源软件来处理以上三种情景,我们可以利用MapReduce[2]来进行批量数据处理,可以用Impala[3]来进行交互式查询,对于流式数据处理,我们可以采用Strom[4]。
然而,现实世界中的大数据处理问题复杂多样,难以有一种单一的计算模式能涵盖所有不同的大数据计算需求。
研究和实际应用中发现,由于MapReduce主要适合进行大数据线下批处理,在面向低延迟和具有复杂数据关系和复杂计算的大数据问题时有很大的不适应性。
因此,近几年学术界和业界在不断研究并推出多种不同的大数据计算模式。
所谓大数据计算模式,即根据大数据的不同数据特征和计算特征,从多样性的大数据计算问题和需求中提炼并建立的各种高层抽象(Abstraction)或模型(Model)。
例如, MapReduce是一个并行计算抽象,Spark系统中的”分布内存抽象RDD(RDD, a distributed memory abstraction)[5],CMU著名的图计算系统GraphLab中的“图并行抽象”(Graph Parallel Abstraction)[6]等。
传统并行算法主要是从编程语言和体系结构层面定义了较为底层的模型,但由于大数据处理问题具有很多高层的数据特征和计算特征,因此大数据处理需要更多地结合这些高层特征考虑更为高层的计算模式。
根据大数据处理多样性的需求,目前出现了多种典型和重要的大数据计算模式。
与这些计算模式相适应,出现了很多对应的大数据计算系统和工具。
由于单纯描述计算模式比较抽象,因此,在描述不同计算模式时,将同时给出相对应的典型计算系统和工具,这将有助于对计算模式的理解以及对技术发展现状的把握,并进一步有利于在实际大数据处理应用中对合适的计算技术和系统工具选择使用。
目前已有的计算模式和典型系统如表1所示:因此,如果要在一个项目中同时满足各种大数据需求,需要使用多套特化系统。
一方面在各种不同系统之表1:典型大数据计算模式与系统间避免不了要进行数据转储(ETL),这无疑将增加系统的复杂程度和负担,另一方面使用多套系统也增加了使用和维护的难度。
而使用spark系统则可以适用目前常用的各种大数据计算模式。
2 为什么spark适合混合计算模式Spark可以满足各种不同大数据计算模型的主要原因是提出了RDD(Resilient Distributed Dataset,弹性分布式数据集)这一抽象工作集。
RDD基于内存工作的,由于内存存取的速度要远远快于磁盘的读取速度,并且可以减少I/O操作的时间,因此可以提升spark处理数据的速度。
同时RDD实现了容错,传统上实现容错的方法主要有两种:检查点和日志。
由于使用检查点容错机制会存在数据冗余并且会增加网络通信的开销,因此Spark系统采用日志数据更新的方式进行容错。
2.1 Resilient Distributed Dataset (RDD)弹性分布数据集利用其基于内存的特点,Spark浓缩提炼出了RDD 这一高度通用的抽象结构进行计算和容错[7]。
本质上是对分布式内存的抽象使用,以类似于操作本地集合的方式来处理分布式数据集。
RDD是一串序列化的,已被分区的数据集,并且每次对RDD操作后的结果都可以cache到内存中,以后的每个操作可以直接从内存读取上一个RDD数据集,从而省去了对磁盘IO操作的过程。
这对于交互式数据挖掘和机器学习方法中使用频率较高的迭代计算而言大大提升了工作效率。
RDD创建的方法有两种:(1)直接从HDFS(或者其它与Hadoop兼容的文件系统)加载数据集。
(2)从父RDD转换得到新RDD。
RDD支持两种操作:(1)转换(transformation)如:filter, map, join, union等,从现有的数据集创建一个新的数据集;(2)动作(actions)如:reduce, count, save, collect等,是将transformation的数据集进行叠加计算,并将计算结果传递给驱动程序。
为了提高运行效率,Spark中所有的actions都是延迟生成的,也就意味着actions不会立即生成结果,它只是暂时记住之前发生的转换动作,只要当真正需要生成数据集返回给Driver时,这些转换才真正执行。
例如:在实际使用过程中我们先调用map生成一个新数据集,然后在reduce中使用这个数据集,最终Spark只会将reduce的结果返回给driver,而不是返回整个数据集。
通过这种运行方式提高了Spark的运行效率。
2.2 Lineage(血统)Spark是一种利用内存进行数据加载的系统,但是与其它In-Memory类系统的主要区别是Spark提供了独特的分布式运算环境下的容错机制。
当节点失效/数据丢失时,为了保证RDD数据的鲁棒性,Spark通过Lineage(血统)来记忆RDD数据集的演变过程并进行数据恢复。
相比于其它内存系统如Dremel,Hana依靠备份或者LOG进行细颗粒度的数据容错,Spark中的Lineage是一种粗颗粒的容错机制,它只是记录特定数据转换操作行为过程。
当某个RDD数据丢失时,可以根据Lineage获取足够的信息,从而重新计算或者虎符丢失的数据。