热门标签 | 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的组合成为未来大数据领域的基础。




推荐阅读
  • 《Spark核心技术与高级应用》——1.2节Spark的重要扩展
    本节书摘来自华章社区《Spark核心技术与高级应用》一书中的第1章,第1.2节Spark的重要扩展,作者于俊向海代其锋马海平,更多章节内容可以访问云栖社区“华章社区”公众号查看1. ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 什么是大数据lambda架构
    一、什么是Lambda架构Lambda架构由Storm的作者[NathanMarz]提出,根据维基百科的定义,Lambda架构的设计是为了在处理大规模数 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文介绍了在Win10上安装WinPythonHadoop的详细步骤,包括安装Python环境、安装JDK8、安装pyspark、安装Hadoop和Spark、设置环境变量、下载winutils.exe等。同时提醒注意Hadoop版本与pyspark版本的一致性,并建议重启电脑以确保安装成功。 ... [详细]
  • ubuntu用sqoop将数据从hive导入mysql时,命令: ... [详细]
  • 本文介绍了在Python中使用zlib模块进行字符串的压缩与解压缩的方法,并探讨了其在内存优化方面的应用。通过压缩存储URL等长字符串,可以大大降低内存消耗,虽然处理时间会增加,但是整体效果显著。同时,给出了参考链接,供进一步学习和应用。 ... [详细]
  • 合并列值-合并为一列问题需求:createtabletab(Aint,Bint,Cint)inserttabselect1,2,3unionallsel ... [详细]
  • Postgresql备份和恢复的方法及命令行操作步骤
    本文介绍了使用Postgresql进行备份和恢复的方法及命令行操作步骤。通过使用pg_dump命令进行备份,pg_restore命令进行恢复,并设置-h localhost选项,可以完成数据的备份和恢复操作。此外,本文还提供了参考链接以获取更多详细信息。 ... [详细]
  • PHP组合工具以及开发所需的工具
    本文介绍了PHP开发中常用的组合工具和开发所需的工具。对于数据分析软件,包括Excel、hihidata、SPSS、SAS、MARLAB、Eview以及各种BI与报表工具等。同时还介绍了PHP开发所需的PHP MySQL Apache集成环境,包括推荐的AppServ等版本。 ... [详细]
  • Hadoop源码解析1Hadoop工程包架构解析
    1 Hadoop中各工程包依赖简述   Google的核心竞争技术是它的计算平台。Google的大牛们用了下面5篇文章,介绍了它们的计算设施。   GoogleCluster:ht ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文详细介绍了在ASP.NET中获取插入记录的ID的几种方法,包括使用SCOPE_IDENTITY()和IDENT_CURRENT()函数,以及通过ExecuteReader方法执行SQL语句获取ID的步骤。同时,还提供了使用这些方法的示例代码和注意事项。对于需要获取表中最后一个插入操作所产生的ID或马上使用刚插入的新记录ID的开发者来说,本文提供了一些有用的技巧和建议。 ... [详细]
  • 本文介绍了一些Java开发项目管理工具及其配置教程,包括团队协同工具worktil,版本管理工具GitLab,自动化构建工具Jenkins,项目管理工具Maven和Maven私服Nexus,以及Mybatis的安装和代码自动生成工具。提供了相关链接供读者参考。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了StartingzookeeperFAILEDTOSTART相关的知识,希望对你有一定的参考价值。下载路径:https://ar ... [详细]
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社区 版权所有