Spark
Spark是由美国加州伯克利大学(UCBerkeley)实验室开发,基于内存计算的大数据并行计算框架,Spark是专为大规模数据处理而设计的快速通用的计算引擎。
Spark主要有以下4大特点:
1.计算速度快
由于Spark是基于内存的分布式计算引擎,因此其运算效率很快,比如:Spark基于内存运算效率是Hadoop的100被以上,基于硬盘的运算奥效率也要快10倍以上。
2.易用性
Spark编程支持Java、Scala、Python和R等编程语言,并且拥有了80余种算法,简洁的API设计有助于用户轻松构建并行程序,并且可以通过Spark Shell进行交互式编程。
3.通用性
Spark提供了完整而强大的技术栈,包括SQL查询、流式计算、机器学习和图算法组件,这些组件可以无缝整合在同一个应用中,足以应对复杂的计算。
4.可扩展
Spark是专注于快速并行计算的引擎,而不是存储,与Apache Hadoop包括存储和计算不同,Spark对存储和计算进行解耦,简单的事情简单做。
这意味着你可以使用Spark来读取存储在各种数据源的数据,例如:Apache Hadoop、Apache Cassandra、Apache Hbase、MongoDB、Apache Hive、RDBMS等存储介质,并在内存中处理它们。
Hadoop
Hadoop是一个由Apache基金会所开发的分布式系统基础架构,主要解决海量数据的存储和海量数据的分析计算问题。
Hadoop的主要特点如下:
1.可靠性
Hadoop将数据存储在多个备份,Hadoop提供高吞吐量来访问应用程序的数据。
2.高扩展性
Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。
3.高效性
Hadoop以并行的方式工作,通过并行处理加快处理速度。
4.高容错性
Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。
5.低成本
Hadoop能够部署在低廉的硬件上。
Hadoop是目前最主流的大数据生态体系,其核心包含HDFS分布式存储,Hive数据仓库,Hbase列式数据库,以及Yarn分布式调度等组件。
而Spark是基于内存计算的分布式计算引擎,可以和Hadoop集成使用。
Spark和Hadoop的区别
Hadoop虽然已成为大数据技术的事实标准,但其本身还存在诸多缺陷,最主要的缺陷是其MapReduce计算模型延迟过高,无法胜任实时、快速计算的需求,因而适用于离线批处理的应用场景。
Spark在借鉴Hadoop MapReduce优点的同时,很好地解决了MapReduce所面临的问题,相比于MapReduce,Spark主要具有如下优点:
- Spark的计算模式也属于MapReduce,但不局限于Map和Reduce操作,还提供了多种数据集操作类型,编程模型比MapReduce更灵活;
- Spark提供了内存计算,中间结果直接放到内存中,带来了更高的迭代运算效率;
- Spark基于DAG的任务调度执行机制,要优于MapReduce的迭代执行机制;
Spark和Hadoop 的根本差异是多个作业之间的数据通信问题 : Spark 多个作业之间数据通信是基于内存,而 Hadoop 是基于磁盘。
Spark将数据载入内存后,之后的迭代计算都可以直接使用内存中的中间结果作运算,避免了从磁盘中频繁读取数据。
但是 Spark 是基于内存的,所以在实际的生产环境中,由于内存的限制,可能会由于内存资源不够导致 Job 执行失败,此时,Hadoop其实是一个更好的选择,所以 Spark并不能完全替代Hadoop。
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》