Spark及生态圈概述

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011521382/article/details/81739046

1.Spark概述及特点

先看下官网的描述:

这里写图片描述

Spark:快如闪电般的统一分析引擎。
Apache 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产生背景

我们在上几篇介绍MapReduce时会发现,Map Reduce有以下缺点:

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

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

  1. 批处理(离线):MapReduce、Hive、Pig
  2. 流式处理(实时): Storm、JStorm
  3. 交互式计算: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快2-10倍,在内存上比Hadoop快100倍。

这里写图片描述

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

4.Spark与Hadoop的协作性

这里写图片描述
Hadoop优势:1.无限的数据,可以添加机器来扩展数据规模
2.企业级平台,高可靠,多租户,安全性
3.能处理多种数据源:文件数据,数据库数据,半结构化数据
这里写图片描述
spark优势:1.易于开发,API方便,支持Python,Scala,Java
2.内存运算:RDDs编程,DAGs处理引擎
3.结合多个子框架使用:SPark,ML,Streaming,GraphX

如何能把Spark和Hadoop的优势结合起来那岂不是更爽。
我们看下SPark和Hadoop结合起来是如何使用的:
这里写图片描述

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

Spark初步介绍就到这里,下一篇说下Spark的部署安装与使用。

展开阅读全文

没有更多推荐了,返回首页