使用Spark的优势

传统MapReduce编程局限性

  • 一个新的框架的诞生,必然是先前的框架无法满足现有的需求和提高生产力,那么相对于spark,传统的mapreduce 编程有哪些局限性呢:
  • 1.繁杂:MapReduce 中,只提供了俩种算子:Map和Reduce,那么基于这俩种算子面对不同的需求场景必然会使编程变得很繁杂。
  • 2.效率低下:1)进程级别低; 2) 基于磁盘,在迭代计算时,数据和网络的频繁IO; 3)Map 端和Reduce端均需要排序
  • 3.不适合迭代计算
  • 4.不适合实时流式计算

Spark优势

  • 快:与MapReduce相比,Spark基于内存的运算要快100倍以上;而基于磁盘的运算也要快10倍以上。Spark实现了高效的DAG执行流程,可以通过基于内存来高效地处理数据流。
  • 容易使用: Spark支持Java、Python和Scala的API,还支持超过80种高级算法,使用户可以快速构建不同应用。而且Spark支持交互式的Python和Scala的Shell,这意味着可以非常方便的在这些Shell中使用Spark集群来验证解决问题的方法,而不是像以前一样,需要打包、上传集群、验证等。这对于原型开发非常重要。
  • 通用性: Spark提供了统一的解决方案。Spark可以用于批处理、交互式查询(通用Spark SQL)、实时流处理(通过Spark Streaming)、机器学习(通过Spark MLlib)和图计算(通过Spark GraphX)。
    这些不同类型的处理都可以在同一应用中无缝使用。Spark统一的解决方案非常具有吸引力,毕竟任何公司都想用统一的平台处理问题,减少开发和维护的人力成本和部署平台的物理成本。当然还有,作为统一的解决方案,Spark并没有以牺牲性能为代价。相反,在性能方面Spark具有巨大优势。
  • 可融合性: Spark非常方便的与其他开源产品进行融合。比如,Spark可以使用Hadoop的YARN和Apache Mesos作为它的资源管理和调度器,并且可以处理所有Hadoop支持的数据,包括HDFS、HBase和Cassanda等。这对于已部署Hadoop集群的用户特别重要,因为不需要做任何数据迁移就可以使用Spark强大的处理能力。Spark也可以不依赖第三方的资源管理器和调度器,它实现了Standalone作为其内置资源管理器和调度框架,这样进一步降低了Spark的使用门槛,使得所有人可以非常容易地部署和使用Spark。此外Spark还提供了在EC2上部署Standalone的Spark集群的工具。

猜你喜欢

转载自blog.csdn.net/Realoyou/article/details/80302369