-
混乱七星天 数据达人Lv4
发表于2021-7-21 14:21
楼主
1、大数据、Hadoop、Spark的定义
2、Hadoop、Spark的诞生意义
3、Hadoop VS Spark
1)什么是大数据
一提到大数据,大家想到的第一个词应该就是IBM提出的5V特征: Volume(大量)、Velocity(高速)、Variety(多样)、Value(低价值密度)、Veracity(真实性)
大数据的产生是有着实际的问题背景的:业务的高速发展随之而来的就是业务数据的海量高速增长,而当前传统数据库日渐捉襟见肘。
对于“大数据”(Big data),研究机构Gartner给出了这样的定义:“大数据”是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力来适应海量、高增长率和多样化的信息资产。
麦肯锡全球研究所给出的定义是:一种规模大到在获取、存储、管理、分析方面大大超出了传统数据库软件工具能力范围的数据集合,具有海量的数据规模、快速的数据流转、多样的数据类型和价值密度低四大特征。
大数据的出现大概可追溯到Apache的开源项目Nutch,当时大数据(BigData)是用来描述为更新网络搜索索引需同时进行批量处理或分析的大量数据集。
2)什么是Hadoop
大数据是一种现象,而Hadoop则是解决这种现象的技术方案。
Nutch项目主要由Doug Cutting(Hadoop之父)推进和雅虎公司的推波助澜,Doug Cutting被雅虎招安后对Google File System(GFS分布式文件存储系统)和MapReduce进行升级改造,重新命名为Hadoop,Hadoop正式诞生,NDFS也更名为HDFS(Hadoop Distributed File System)。
Hadoop是大数据发展下顺应而生的一种大数据技术架构,我们可以理解为是一套工具总称,它最核心的三个部分:HDFS,Yarn,MapReduce,功能分别是分布式文件存储、资源调度和计算。3)什么是Spark
Spark同样是Apache软件基金会的顶级项目,对于一个具有相当技术门槛与复杂度的平台,Spark从诞生到正式版本的成熟,经历的时间如此之短,让人感到惊诧。2009年,Spark诞生于伯克利大学AMPLab,最开初属于伯克利大学的研究性项目。它于2010年正式开源,并于2013年成为了Aparch基金项目,并于2014年成为Aparch基金的顶级项目,整个过程不到五年时间。
Spark,是一种”OneStack to rule them all”的大数据计算框架,Apache官方,对Spark的定义就是:通用的大数据快速处理引擎。Spark 主要有五个特点:
速度快: Spark基于内存进行计算(当然也有部分计算基于磁盘,比如shuffle)。
容易上手开发: Spark的基于RDD的计算模型,比Hadoop的基于Map-Reduce的计算模型要更加易于理解,更加易于上手开发,实现各种复杂功能,比如二次排序、 topn等复杂操作时,更加便捷。
超强的通用性: Spark提供了Spark RDD、Spark SQL、 Spark Streaming、Spark MLlib、Spark GraphX等技术组件,可以一站式地完成大数据领域的离线批处理、交互式查询、流式计算、机器学习、图计算等常见的任务。
集成Hadoop: Spark并不是要成为一个大数据领域的“独裁者”,一个人霸占大数据领域所有的“地盘”,而是与Hadoop进行了高度的集成,两者可以完美的配合使用。 Hadoop的HDFS、 Hive、 HBase负责存储, YARN负责资源调度; Spark复杂大数据计算。实际上,Hadoop+Spark的组合,是一种“double win”的组合。
极高的活跃度: Spark目前是Apache基金会的顶级项目,全世界有大量的优秀工程师是Spark的committer。并且世界上很多顶级的IT公司都在大规模地使用Spark。
2、Hadoop、Spark的诞生意义
Hadoop主要解决海量数据的存储、分析和学习问题。因为随着数据的爆炸式增长,一味地靠硬件提高数据处理效率及增加存储量,不仅成本高,处理高维数据的效率也不会提高很多,遇到了瓶颈了,hadoop的搭建只需要普通的pc机,它的hdfs提供了分布式文件系统,mapreduce是一个并行编程模型,为程序员提供了编程接口,两者都屏蔽了分布式及并行底层的细节问题,用户使用起来简单方便。
由于Hadoop高可靠性、高扩展性、高效性、高容错性等优势突出,基于Hadoop的应用已经遍地开花,Hadoop的应用领域包括搜索、日志处理、推荐系统、数据分析、视频图像分析、数据储存等,尤其是在互网领域,如Yahoo集群Hadoop支持广告系统和Web搜索,如FaceBook借助Hadoop支持数据分析和机器学习,华为云计算平台、百度搜索、奇虎360日志分析和数据挖掘等等。
而Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是——Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。
3、Hadoop VS Spark
上面我们也说了,Hadoop的核心就是HDFS和MapReduce。HDFS为海量数据提供存储,而MapReduce为海量数据提供计算框架,MapReduce是基于磁盘的并且能处理各种离线批处理,以及常见算法(比如二次排序、topn等),而基于Spark RDD的核心编程是基于内存的,不仅能完全实现MapReduce功能,而且基于Spark RDD编写的离线批处理程序,运行速度更是MapReduce的数倍,速度上有非常明显的优势。
Spark相较于MapReduce速度快的最主要原因就在于,MapReduce的计算模型太死板,必须是mapreduce模式,有时候即使完成一些诸如过滤之类的操作,也必须经过map-reduce过程,这样就必须经过shuffle过程。而MapReduce的shuffle过程是最消耗性能的,因为shuffle中间的过程必须基于磁盘来读写。
而Spark的shuffle虽然也要基于磁盘,但是其大量transformation操作,比如单纯的map或者filter等操作,可以直接基于内存进行pipeline操作,速度性能自然大大提升。
但是Spark也有其劣势。与MapReduce相比,Spark尽管有很多好处,但仍然存在一些缺点:
大量消耗存储资源:作为内存中的数据处理框架,Spark在性能上优于MapReduce,它通过减少冗余计算来实现,但以存储资源(尤其是内存资源)为代价。与现有流行的内存中高速缓存系统相似,它可以将RDD数据保存在内存中,以便在不同计算阶段共享数据。当计算中有大量RDD数据需要缓存时,需要更多的内存资源。
安全性差:目前,Spark支持通过共享机密[12]进行身份验证。相比之下,Hadoop具有更多的安全考虑因素和解决方案。例如,Knox为Hadoop提供具有授权和身份验证的安全REST API网关。相反,Sentry和Ranger提供了对Hadoop数据和元数据的访问控制和授权。
学习难度:尽管Spark比MapReduce更快,更通用,但是Spark的编程模型是比MapReduce复杂得多。这要求用户花一些时间来学习模型并熟悉提供的API,然后才能使用Spark对其应用程序进行编程。
结语:
Spark目前在国内正在飞速地发展,并且在很多领域,以及慢慢开始替代传统得一些基于Hadoop的组件。比如BAT、京东、搜狗等知名的互联网企业,都在深度的,大规模地使用Spark。
但是,大家如果去观察一下一些招聘网站对大数据的招聘需求,就会发现,目前来说,由于大部分还是大公司在使用Spark,因此大部分中小型企业,还是主要在使用Hadoop进行大数据处理。在招聘时,还是主要以Hadoop工程师为主。 Spark以及Storm的招聘还是相对Hadoop来说,会少一些。
未来的主流,一定是Hadoop+Spark的这种组合, double win的格局。 Hadoop的特长,就是HDFS,分布式存储,基于此之上的是Hive作为大数据的数据仓库, HBase作为大数据的实时查询NoSQL数据库, YARN作为通用的资源调度框架;而Spark,则发挥它的特长,将各种各样的大数据计算模型汇聚在一个技术堆栈内,对Hadoop上的大数据进行各种计算处理。