您的位置:首页 > 大数据 > Hadoop

Spark生态圈概述以及Hadoop生态圈的比较

2019-03-29 20:16 1156 查看

目录

1.Spark概述及特点

2.Spark产生背景

3.Spark与Hadoop的对比

4.Spark与Hadoop的协作性

1.Spark概述及特点

先看下官网的描述: http://spark.apache.org/ 

Spark定义:spark是基于内存的,分布式的大数据计算引擎。

有以下特点:

Speed 
Run workloads 100x faster. 
Apache Spark achieves high performance for both batch and streaming data, using a state-of-the-art DAG scheduler, a query optimizer, and a physical execution engine.

速度 :

  • 从上图看出Spark的处理速度要比Hadoop快100倍以上。
  • Spark在批处理和流式处理上都具有极佳的性能。这是因为Spark使用了一种叫DAG的最佳调度,以及查询优化和物理执行引擎。

Ease of Use 
Write applications quickly in Java, Scala, Python, R, and SQL. 
Spark offers over 80 high-level operators that make it easy to build parallel apps. And you can use it interactively from the Scala, Python, R, and SQL shells.

易用 :

  • 可以使用Java,Scala,Python,R,SQL快速写一个Spark应用。
  • Spark提供了超过80中操作使它更容易生成平行化的应用。它也可以使用Scala,Python,R,SQL shell 进行交互操作。

Generality 
Combine SQL, streaming, and complex analytics. 
Spark powers a stack of libraries including SQL and DataFrames, MLlib for machine learning, GraphX, and Spark Streaming. You can combine these libraries seamlessly in the same application.

通用性 :

  • 结合SQL,流处理,复杂的分析
  • Spark提供了一栈式集应用:SQL,数据框架,机器学习框架,Graphx图像处理以及Spark流处理。你可以结合这些应用无缝地在同一个应用上使用。 

Runs Everywhere 
Spark runs on Hadoop, Apache Mesos, Kubernetes, standalone, or in the cloud. It can access diverse data sources. 
You can run Spark using its standalone cluster mode, on EC2, on Hadoop YARN, on Mesos, or on Kubernetes. Access data in HDFS, Alluxio, Apache Cassandra, Apache HBase, Apache Hive, and hundreds of other data sources.

运行在任何平台 :

  • Spark可以运行在Hadoop,Mesos,Kubernets,standalone或者云上。它可以畜栏里多种数据源。

2.Spark产生背景


因为Map Reduce有以下缺点:

  • 代码繁琐;
  • 只能够支持map和reduce方法;
  • 执行效率低下;
  • 不适合迭代多次、交互式、流式的处理

而Spark的优点正好弥补了MapReduce的缺点:

  • 批处理(离线):MapReduce、Hive、Pig
  • 流式处理(实时): Storm、JStorm
  • 交互式计算:Impala

3.Spark与Hadoop的对比


我们先来看下Hadoop生态系统: 

最底层时HDFS 分布式文件系统,上面时YARN资源调度框架,以及MapReduce分布式计算框架。再往上是一些应用处理框架。

Spark生态系统:BDAS 

浅色区域是外部系统,如果要用是要独立部署的。 
我们看到最底层是Mesos,这个是分布式调度系统,负责资源的调度。上面是HDFS,这个不是Spark的一部分是外部的系统,我们可以看到最上面是基于spark的应用。Spark Streaming 流处理框架,GraphX图形处理框架,MLlib机器学习框架以及Spark SQL 。

 

我们从上图可以看出: 

  • 在批处理这块,Hadoop用的是MapReduce,Spark使用的是RDDs 
  • SQL 查询:Hadoop用的hive,Spark用的是SparkSQL 
  • 流处理/实时处理:Hadoop用Strorm/kafka,Spark是SparkStreaming 
  • 机器学习:Hadoop-Mahout,Spark-MLlib 
  • 实时数据查询:Hadoop是用NOSQL如(HBase),Spark没有对应的组件,但是Spark可以查询nosql数据集的数据。

上面是Spark 和Hadoop生态圈的对比,下面看看Hadoop和Spark的对比: 

  • Hadoop是一个分布式存储系统+分布式计算系统。Spark只是一个分布式计算系统
  • Hadoop使用MarpReduce框架,Spark 是通用计算
  • Hadoop把数据存放在磁盘上,Spark 存放在磁盘或者内存
  • 对于迭代式作业Hadoop没有任何解决方案。Spark可以。
  • Hadoop实质是一个批处理框架,Spark在磁盘上计算比Hadoop快10倍,在内存上比Hadoop快100倍。

Spark和Mapreduce的对比:Mapreduce作业是吧数据写在磁盘上的,而Spark是在内存中处理的。

4.Spark与Hadoop的协作性

Hadoop优势:

  1. 无限的数据,可以添加机器来扩展数据规模 
  2. 企业级平台,高可靠,多租户,安全性 
  3. 能处理多种数据源:文件数据,数据库数据,半结构化数据 

spark优势:

  1. 易于开发,API方便,支持Python,Scala,Java ,R
  2. 内存运算:RDDs编程,DAGs处理引擎 
  3. 结合多个子框架使用:SPark,ML,Streaming,GraphX

那么我们将Spark和Hadoop的优势结合起来那岂不是更爽。 
我们看下SPark和Hadoop结合起来是如何使用的: 


存储用HDFS,资源调度用YARN,批处理用MapReduce,流处理用Storm,内存计算用spark。

转载自:https://blog.csdn.net/u011521382/article/details/81739046 
 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: