Spark与Hadoop相比的优缺点

1. Spark 概述


1.1. 什么是 Spark(官网:http://spark.apache.org)

spark 中文官网http://spark.apachecn.org
Spark 是一种快速、通用、可扩展的大数据分析引擎,2009 年诞生于加州大学伯克利分校AMPLab,2010 年开源,2013 年 6 月成为 Apache 孵化项目,2014 年 2 月成为 Apache
顶级项目。目前,Spark 生态系统已经发展成为一个包含多个子项目的集合,其中包含SparkSQL、Spark Streaming、GraphX、MLlib 等子项目,Spark 是基于内存计算的大数
据并行计算框架。Spark 基于内存计算,提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,允许用户将 Spark 部署在大量廉价硬件之上,形成集群

1.2. Spark 和 Hadoop 的比较

mapreduce 读 – 处理 - 写磁盘 -- 读 - 处理 - 写
spark     读 - 处理 - 处理   --(需要的时候)写磁盘 - 写


Spark 是在借鉴了 MapReduce 之上发展而来的,继承了其分布式并行计算的优点并改进了 MapReduce 明显的缺陷,(spark 与 hadoop 的差异)具体如下:

首先,Spark 把中间数据放到内存中,迭代运算效率高。MapReduce 中计算结果需要落地,保存到磁盘上,这样势必会影响整体速度,而 Spark 支持 DAG 图的分布式并行计算的编程框架,减少了迭代过程中数据的落地,提高了处理效率。(延迟加载)


其次,Spark 容错性高。Spark 引进了弹性分布式数据集 RDD (Resilient DistributedDataset) 的抽象,它是分布在一组节点中的只读对象集合,这些集合是弹性的,如果数据集一部分丢失,则可以根据“血统”(即允许基于数据衍生过程)对它们进行重建。另外在RDD 计算时可以通过 CheckPoint 来实现容错。


最后,Spark 更加通用。mapreduce 只提供了 Map 和 Reduce 两种操作,Spark 提供的数据集操作类型有很多,大致分为:Transformations 和 Actions 两大类。Transformations包括 Map、Filter、FlatMap、Sample、GroupByKey、ReduceByKey、Union、Join、Cogroup、MapValues、Sort 等多种操作类型,同时还提供 Count, Actions 包括 Collect、Reduce、Lookup 和 Save 等操作


支持的运算平台,支持的开发语言更多。
spark 4 种开发语言:
scala,java,python,R


总结:Spark 是 MapReduce 的替代方案,而且兼容 HDFS、Hive,可融入 Hadoop 的生态系统,以弥补 MapReduce 的不足。


1.3. Spark 特点

1.3.1. 快
与 Hadoop 的 MapReduce 相比,Spark 基于内存的运算要快 100 倍以上,基于硬盘的运算也要快 10 倍以上。Spark 实现了高效的 DAG 执行引擎,可以通过基于内存来高效处理数据流。

官网截图:

1.3.2. 易用
Spark 支持 Java、Python 和 Scala 和 R 的 API,还支持超过 80 种高级算法,使用户可以快速构建不同的应用。而且 Spark 支持交互式的 Python 和 Scala 的 shell,可以非常方便地在这些 shell 中使用 Spark 集群来验证解决问题的方法

1.3.3. 通用
一站式解决方案 离线处理 实时处理(streaming) sql,Spark 提供了统一的解决方案。Spark 可以用于批处理、交互式查询(Spark SQL)、实时流处理(Spark Streaming)、机器学习(Spark MLlib)和图计算(GraphX)。这些不同类型的处理都可以在同一个应用中无缝使用。Spark 统一的解决方案非常具有吸引力,毕竟任何公司都想用统一的平台去处理遇到的问题,减少开发和维护的人力成本和部署平台的物力成本。

1.3.4. 兼容性
Spark可以非常方便地与其他的开源产品进行融合。比如,Spark可以使用Hadoop的YARN和 Apache Mesos 作为它的资源管理和调度器,并且可以处理所有 Hadoop 支持的数据,包括 HDFS、HBase 和 Cassandra 等。这对于已经部署 Hadoop 集群的用户特别重要,因为不需要做任何数据迁移就可以使用 Spark 的强大处理能力。Spark 也可以不依赖于第三方的资源管理和调度器,它实现了 Standalone 作为其内置的资源管理和调度框架,这样进一步降低了 Spark 的使用门槛,使得所有人都可以非常容易地部署和使用 Spark。此外,Spark 还提供了在 EC2 上部署 Standalone 的 Spark 集群的工具。


1.4 spark 的部署模式:

1, local 本地模式,只要机器上有 spark 的安装包, 仅仅是用于测试不写 master -- master local 一个线程 local[2] local[*] 模拟使用多个线程
2, Standalone spark 自带的集群模式 --master spark://hdp-01:7077
3, yarn 把 spark 任务,运行在 yarn --master yarn
4, mesos 把 spark 任务,运行在 mesos 资源调度平台上 --master mesos

### Hadoop **Hadoop** 是一套开源框架,主要用于分布式存储和处理大量数据集。它由两个核心组件组成:HDFS(Hadoop Distributed File System)和MapReduce。 #### **优点** 1. **高容错性**:设计时考虑了系统的可靠性和容错性,能够自动检测并恢复节点故障,保证数据的持久性和服务的连续性。 2. **大数据处理能力**:适合处理PB级别的数据,提供强大的数据存储和计算能力。 3. **成本效益**:利用廉价的硬件构建大规模集群,降低了数据处理的成本。 4. **跨平台兼容性**:支持多种操作系统,易于部署和维护。 5. **生态系统丰富**:有丰富的工具和库,如Hive、Pig、HBase等,可以用于数据分析、SQL查询、实时数据处理等多种应用场景。 6. **社区活跃**:拥有庞大的开发者和使用者群体,技术支持和资源丰富。 #### **缺点** 1. **性能效率低**:相比其他现代大数据技术(如Spark),Hadoop的MapReduce模型在某些特定场景下执行速度较慢。 2. **复杂性**:学习曲线陡峭,配置和管理较为复杂,尤其是对于新手用户来说。 3. **内存利用率低**:传统MapReduce操作需要将整个任务加载到内存中,对大内存需求较高,并可能导致数据溢出到磁盘,影响效率。 4. **单点故障**:虽然整体有高容错性设计,但在某些特定的系统组件上可能存在单点故障问题,需要额外的监控和管理措施。 ### Spark **Spark** 是另一种高性能的大数据处理引擎,适用于多种应用场景,包括批处理、交互式查询、流处理、机器学习等。 #### **优点** 1. **速度快**:采用内存计算模式,数据在内存中迭代处理,相比Hadoop MapReduce通常能更快地完成任务。 2. **易用性**:提供统一的API和编程模型,使得从简单的工作负载到复杂的机器学习应用都能轻松处理。 3. **动态调度**:Spark的动态调度算法可以根据实际运行情况优化任务执行路径,提高效率。 4. **集成能力强**:可以方便地整合各种数据源和服务,比如支持直接读取HDFS文件、MongoDB等数据库的数据。 5. **广泛支持**:支持Python、Scala、Java和R等多种语言环境。 6. **社区和生态发展迅速**:Spark有一个活跃的开发者社区,提供大量的案例研究和教程。 #### **缺点** 1. **内存依赖**:Spark基于内存计算,对内存的需求比Hadoop更高,在大型数据集或高并发环境下可能会遇到内存限制。 2. **配置复杂**:虽然相较于Hadoop有所简化,但Spark仍然存在一些配置选项,对于初学者来说可能不够友好。 3. **数据泄露风险**:由于Spark在内存中频繁操作数据,如果安全策略不当,可能会增加数据泄露的风险。 4. **不适合某些工作负载**:对于只关心结果而不在乎过程效率的工作负载,Hadoop可能是一个更合适的选择。 ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值