热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Spark理论开山篇(一)

一句话理解Spark是什么spark是一个基于内存计算的框架,是一种通用的大数据快速处理引擎。spark的版本支持情况本文基于Spark2.3.1做阐述说明。s

一句话理解Spark是什么

spark是一个基于内存计算的框架,是一种通用的大数据快速处理引擎。

spark的版本支持情况

本文基于Spark2.3.1做阐述说明。

file

spark的特点

file

  • 内存计算运行速度快

当然说它快,总要有个对比项,这里是基于和Hadoop的MapReduce来对比,由Spark是基于内存,所以它的计算速度可以达到MapReduce\Hive的数倍甚至数十倍高。

  • 灵活性

易用性强:提供了高阶的基于Java、Scala、Python和R语言的api,并且对图形化的执行引擎有所支持,其处理能力支持涵盖包括:Spark Sql,MLib和GrafphX、Spark Streaming等。

  • 实时数据处理

实时处理- Spark能够处理实时流数据。与只处理存储数据的MapReduce不同,Spark能够处理实时数据,所以能够产生即时结果。

  • 更好的数据分析

与MapReduce中的包括Map和Reduce函数相比,Spark包含的远不止这些。Apache Spark由一组丰富的SQL查询、机器学习算法、复杂分析等组成。有了所有这些功能,在Spark的帮助下,可以更好地执行分析。

  • Spark SQL支持

Spark SQL是Apache Spark处理结构化数据的模块。Spark SQL提供的接口为Spark提供了有关数据结构和正在执行的计算的更多信息。
结构化数据的处理。

  • 机器学习库

Apache Spark配备了一个丰富的机器学习库库。这个库包含了大量的机器学习算法: 分类、回归、聚类和协同过滤。它还包括用于构造、评估和调优ML管道的其他工具。所有这些功能都有助于在集群中扩展。

  • 图形数据库GraphX

Spark还附带一个名为GraphX的库,用于操作图形数据库和执行计算。GraphX将ETL(提取、转换和加载)过程、探索性分析和迭代图计算统一到一个系统中。

MapReduce及其不足

在出现Spark之前,MapReduce很流行,它是一个弹性的分布式处理框架。

file

包含:

  • 分布式数据

当数据上传到集群中后,它会被分割成数据块,分布在各个节点中,并在集群中复制。

  • 分布式计算

通过指定一个map函数,来生成键值的映射,同样指定一个reduce函数,来合并在中间过程操作中生成的一系列中间值。这些操作在集群中会自动的并行化。

数据的映射过程,在每个数据节点上执行。数据源就是节点上切分到的分布式的数据文件。

简单了解MapReduce的特点后,我们来看看他有什么不足之处。

首先,MapReduce只提供两步操作,既是Map和reduce操作。

在mapreduce中数据是键值对的形式存在,在spark中是RDD数据结构存在。

RDD是什么

RDD(Resilient Distributed Datasets )被称为弹性分布式数据集。

具有如下特点:

  • 分布式

数据是分布在各个节点上的,所有的计算动作都是并行进行的。

  • 迭代式的计算。

这也是刚才提到的,MapReduce只有两步操作,而sprak可以进行很多步计算。
spark在处理完一个阶段后,可以继续处理多个阶段直至结束。

  • 容错

RDD一旦被创建就不能够修改,并且是容错的。为什么说是弹性的呢?

file

RDD的数据是被分区的,比如有10万条数据,那可能节点1有2万条,节点2有2万条,等等。每个分区数据默认都是放在内存中的,但是当节点的内存不足以支撑这么多数据量时,spark会将数据放一部分到磁盘中,这些操作都是对用户透明的。

parttion分区可以提高并行度,默认情况下Spark会自动决定一个RDD必须划分的分区数量,但是也可以在创建RDD时指定分区的数量。

那节点宕机怎么办呢?

节点上的rdd分区数据丢失,则他会从数据来源获取到数据后重新计算。

Spark开发之前

其实前面介绍的理论,都是为了最后引出RDD。所有的操作核心都和RDD有着密切的关系。

开发伊始,就需要定义第一个rdd的来源,可能是从hdfs、kafka或是文件甚至集合。

第二步,需要定义定义对rdd的操作(称为算子),
map/flatmap等,比mapreduce提供的map和reduce强悍太多太多了。

file

第一次计算完后,数据可能会到另外的节点上,变成一个新的rdd.
再次反复操作。

通过使用RDD 中的有向无环图(DAG)实现容错。

总结

本篇文章介绍了spark的基本概念和相关核心知识点的预梳理,主要包括:

  • spark的特点。
  • spark和mapreduce的区别。
  • RDD的基本概念和及其转换。

推荐阅读
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 如何高效启动大数据应用之旅?
    在前一篇文章中,我探讨了大数据的定义及其与数据挖掘的区别。本文将重点介绍如何高效启动大数据应用项目,涵盖关键步骤和最佳实践,帮助读者快速踏上大数据之旅。 ... [详细]
  • Spring Boot 中配置全局文件上传路径并实现文件上传功能
    本文介绍如何在 Spring Boot 项目中配置全局文件上传路径,并通过读取配置项实现文件上传功能。通过这种方式,可以更好地管理和维护文件路径。 ... [详细]
  • Spark与HBase结合处理大规模流量数据结构设计
    本文将详细介绍如何利用Spark和HBase进行大规模流量数据的分析与处理,包括数据结构的设计和优化方法。 ... [详细]
  • 如何在Java中使用DButils类
    这期内容当中小编将会给大家带来有关如何在Java中使用DButils类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。D ... [详细]
  • Spark中使用map或flatMap将DataSet[A]转换为DataSet[B]时Schema变为Binary的问题及解决方案
    本文探讨了在使用Spark的map或flatMap算子将一个数据集转换为另一个数据集时,遇到的Schema变为Binary的问题,并提供了详细的解决方案。 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • 本文深入解析了通过JDBC实现ActiveMQ消息持久化的机制。JDBC能够将消息可靠地存储在多种关系型数据库中,如MySQL、SQL Server、Oracle和DB2等。采用JDBC持久化方式时,数据库会自动生成三个关键表:`activemq_msgs`、`activemq_lock`和`activemq_ACKS`,分别用于存储消息数据、锁定信息和确认状态。这种机制不仅提高了消息的可靠性,还增强了系统的可扩展性和容错能力。 ... [详细]
  • 本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ... [详细]
  • 本文详细介绍了在CentOS 6.5 64位系统上使用阿里云ECS服务器搭建LAMP环境的具体步骤。首先,通过PuTTY工具实现远程连接至服务器。接着,检查当前系统的磁盘空间使用情况,确保有足够的空间进行后续操作,可使用 `df` 命令进行查看。此外,文章还涵盖了安装和配置Apache、MySQL和PHP的相关步骤,以及常见问题的解决方法,帮助用户顺利完成LAMP环境的搭建。 ... [详细]
  • 本指南详细介绍了如何在CentOS 6.6 64位系统上以root用户身份部署Tomcat 8服务器。系统环境为CentOS 6.6 64位,采用源码安装方式。所需软件为apache-tomcat-8.0.23.tar.gz,建议将软件下载至/root/opt目录。具体下载地址请参见官方资源。本指南涵盖了从环境准备到服务启动的完整步骤,适用于需要在该系统环境下搭建高性能Web应用服务器的技术人员。 ... [详细]
  • 基于Java的客户关系管理(CRM)系统优化与应用
    本研究探讨了基于Java技术的客户关系管理(CRM)系统的优化与应用。首先介绍了CRM系统的概念及其分类,并详细阐述了企业项目开发的流程。随后,对CRM系统的模块进行了划分,包括系统功能模块图和各模块的具体功能描述,为系统的高效运行提供了理论和技术支持。 ... [详细]
  • PHP开发人员薪资水平分析:工程师平均工资概况
    PHP开发人员薪资水平分析:工程师平均工资概况 ... [详细]
author-avatar
王延霞之歌
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有