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

大数据技术,Spark详细介绍,Spark和Hadoop的区别

在大数据方兴未艾之际,

在大数据方兴未艾之际,越来越多的技术被引进大数据领域。从多年前的mapreduce到现在非常流行的spark,spark自从出现以来就逐渐有替代mapreduce的趋势。既然如此,spark到底有什么过人之处?这么备受青睐?

一、Spark是什么?

Spark是一种通用的大数据计算框架,和传统的大数据技术MapReduce有本质区别。前者是基于内存并行计算的框架,而mapreduce侧重磁盘计算。Spark是加州大学伯克利分校AMP实验室开发的通用内存并行计算框架,用于构建大型的、低延迟的数据分析应用程序。

Spark同样支持离线计算和实时计算两种模式。Spark离线计算速度要比Mapreduce快10-100倍。而实时计算方面,则依赖于SparkStreaming的批处理能力,吞吐量大。不过相比Storm,SparkStreaming并不能做到真正的实时。

Spark使用强大的函数式语言Scala开发,方便简单。同时,它还提供了对Python、Java和R语言的支持。

2015年至今,Spark在国内IT行业变得愈发火爆,越来越多的公司开始重点部署或者使用Spark来替代MapReduce、Hive、Storm等传统的大数据计算框架。如袋鼠云,便用Spark代替了Mapreduce计算框架。

二、Spark的发展历程

2009年由Berkeley's AMPLab开始编写最初的源代码。

2010年开放源代码。

2013年6月,进入Apache孵化器项目。

2014年2月,成为Apache的顶级项目,仅仅用了8个月的时间。

2014年5月,底Spark1.0.0发布,打破Hadoop保持的基准排序纪录。

2014年12月,Spark1.2.0发布。

2015年11月,Spark1.5.2发布,同时推出DataFrame。

2016年1月,Spark1.6发布。

2016年12月,Spark2.1发布,同年推出DataSet。

2017年,Structured Streaming 发布。

2018年,Spark2.4.0发布,成为全球最大的开源项目。

三、为什么Spark越来越受欢迎?

1、内存计算、运行速度快:Spark使用DAG执行引擎用以支持循环数据流与内存计算。注意:shuffle部分也有磁盘参与计算。

2、支持多语言编程:支持使用Scala、Python、Java和R语言进行编程,同时可以通过Spark Shell进行交互式编程。

3、生态强、组件丰富:Spark支持离线和实时计算,如包括SparkSql查询、SparkStreaming流式计算、MLLib机器学习和 GraphX图算法。

4、运行方便、多数据源支持:Spark可运行于独立的集群模式中、可运行于Hadoop中、也可运行于Amazon EC2云环境中。同时可以访问HDFS、HBase、Hive、Kafka和传统关系型数据库等多种数据源 。

四、Spark生态


SparkCore:SparkCore实现了spark的基本功能、包括任务调度、内存管理、错误恢复与存储系统交互等模块。SparkCore中还包含了对弹性分布式数据集RDD的定义,这是其核心功能。

SparkSql:SparkSql是spark用来操作结构化数据的程序,我们可以使用Sql或者Hql来查询数据、操作数据库。SparkSql可以读取多种数据源,除了提供Sql查询接口之外,同时还支持将Sql和RDD结合,开发者可以在一个应用中同时使用Sql和编程方式进行数据的查询分析。

SparkStreaming:SparkStreaming是Spark提供的对实时数据进行流式计算的组件。如网页服务器日志消息实时流处理。

SparkMLLib:SparkMLLib是Spark中提供常见的机器学习功能的程序库,包括很多机器学习算法,比如分类、回归、聚类、协同过滤等。

GraphX:GraphX是分布式图处理框架,用于图计算。如社交网络的朋友关系图。

五、Spark和Hadoop的区别

1、spark和hadoop的比较

Hadoop主要用普通硬件解决存储和计算问题;而Spark用于构建大型的、低延迟的数据分析应用程序,不进行存储、只进行计算。

Spark是在MapReduce基础上发展而来的,继承了其分布式并行计算的优点并改进了MapReduce的缺陷。

Spark中间数据放到内存中,迭代运算效率高,但是特别依赖内存。Spark引进了弹性分布式数据集RDD,数据对象既可以放在内存,也可以放在磁盘,容错性高。RDD计算时可以通过CheckPoint来实现容错。

Hadoop只提供了Map和Reduce操作,Spark更加通用,提供的数据集操作类型有很多种,主要分为:Transformations和Actions两大类算子。

spark和mapredcue


2、spark和mapredcue的比较

1)、spark的shuffle过程不需要等待,使用的时候才对数据排序。


2)、spark可以把多次使用的数据缓存放到内存中。


3)、spark支持多种算子操作,而mapreduce只支持map和redcue操作。


4)、spark过度依赖于内存,对内存要求高。


总而言之, Spark主要用于大数据的计算,而Hadoop主要用于大数据的存储,以及资源调度。Spark和Hadoop的组合,将会取代Mapredcue和Hadoop的组合成为未来大数据领域的基础。




推荐阅读
  • 字节跳动深圳研发中心安全业务团队正在火热招募人才! ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 如何撰写数据分析师(包括转行者)的面试简历?
    CDA数据分析师团队出品,作者:徐杨老师,编辑:Mika。本文将帮助您了解如何撰写一份高质量的数据分析师简历,特别是对于转行者。 ... [详细]
  • 美团优选推荐系统架构师 L7/L8:算法与工程深度融合 ... [详细]
  • 如何高效启动大数据应用之旅?
    在前一篇文章中,我探讨了大数据的定义及其与数据挖掘的区别。本文将重点介绍如何高效启动大数据应用项目,涵盖关键步骤和最佳实践,帮助读者快速踏上大数据之旅。 ... [详细]
  • 在第二课中,我们将深入探讨Scala的面向对象编程核心概念及其在Spark源码中的应用。首先,通过详细的实战案例,全面解析Scala中的类和对象。作为一门纯面向对象的语言,Scala的类设计和对象使用是理解其面向对象特性的关键。此外,我们还将介绍如何通过阅读Spark源码来进一步巩固对这些概念的理解。这不仅有助于提升编程技能,还能为后续的高级应用开发打下坚实的基础。 ... [详细]
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • 如何在Java中使用DButils类
    这期内容当中小编将会给大家带来有关如何在Java中使用DButils类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。D ... [详细]
  • 在使用达梦数据库时,管理员可能会遇到连接频繁中断或特定SQL语句语法错误的问题。这些问题通常源于开发人员在创建对象时的不规范操作。为了解决这些问题,建议对数据库配置进行优化,并确保所有SQL语句符合达梦数据库的标准语法。此外,定期检查和维护数据库连接参数,以及对异常日志进行详细分析,也有助于及时发现并解决问题。 ... [详细]
  • 非线性门控感知器算法的实现与应用分析 ... [详细]
  • 在机器学习领域,深入探讨了概率论与数理统计的基础知识,特别是这些理论在数据挖掘中的应用。文章重点分析了偏差(Bias)与方差(Variance)之间的平衡问题,强调了方差反映了不同训练模型之间的差异,例如在K折交叉验证中,不同模型之间的性能差异显著。此外,还讨论了如何通过优化模型选择和参数调整来有效控制这一平衡,以提高模型的泛化能力。 ... [详细]
  • 深入解析监督学习的核心概念与应用
    本文深入探讨了监督学习的基本原理及其广泛应用。监督学习作为机器学习的重要分支,通过利用带有标签的训练数据,能够有效构建预测模型。文章详细解析了监督学习的关键概念,如特征选择、模型评估和过拟合问题,并介绍了其在图像识别、自然语言处理等领域的实际应用。 ... [详细]
  • Hadoop平台警告解决:无法加载本机Hadoop库的全面应对方案
    本文探讨了在Hadoop平台上遇到“无法加载本机Hadoop库”警告的多种解决方案。首先,通过修改日志配置文件来忽略该警告,这一方法被证明是有效的。其次,尝试指定本地库的路径,但未能解决问题。接着,尝试不使用Hadoop本地库,同样没有效果。然后,通过替换现有的Hadoop本地库,成功解决了问题。最后,根据Hadoop的源代码自行编译本地库,也达到了预期的效果。以上方法适用于macOS系统。 ... [详细]
  • 2021年Java开发实战:当前时间戳转换方法详解与实用网址推荐
    在当前的就业市场中,金九银十过后,金三银四也即将到来。本文将分享一些实用的面试技巧和题目,特别是针对正在寻找新工作机会的Java开发者。作者在准备字节跳动的面试过程中积累了丰富的经验,并成功获得了Offer。文中详细介绍了如何将当前时间戳进行转换的方法,并推荐了一些实用的在线资源,帮助读者更好地应对技术面试。 ... [详细]
  • 如何使用mysql_nd:Python连接MySQL数据库的优雅指南
    无论是进行机器学习、Web开发还是爬虫项目,数据库操作都是必不可少的一环。本文将详细介绍如何使用Python通过 `mysql_nd` 库与 MySQL 数据库进行高效连接和数据交互。内容涵盖以下几个方面: ... [详细]
author-avatar
七月de七月小
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有