大数据之spark学习记录一 Intro

大数据之spark学习记录一: Intro

spark与hadoop(MR)的对比和介绍

Hadoop

1.X 版本

从架构的角度存在很多的问题

  1. NameNode是单点操作,所以容易出现单点故障,制约了HDFS的发展
  2. NameNode的内存限制也影响了HDFS的发展
  3. MapReduce是一种基于数据集的工作模式,面向数据,这种工作模式一般是从存储上加载数据集,然后操作数据集,最好将结果写入存储设备。数据更多面临的是一次性计算。所以其初衷是单一地数据计算,不支持迭代计算
  4. 资源调度和任务调度耦合在一起,无法扩展,所以Hadoop1.X版本只支持MR计算框架
    大数据之spark学习记录一 Intro

2.X版本(Yarn)

  1. 支持了NameNode高可用
  2. 使用了新的资源调度框架Yarn,只做资源调度,不进行任务调度,实现了资源调度与计算的解耦
  3. MR框架只做任务调度,可插拔,所以扩展性非常强 大数据之spark学习记录一 Intro

spark

Spark是一种基于内存的快速、通用、可扩展的大数据分析计算引擎(框架)

并且 Spark 目前已经成为 Apache 最活跃的开源项目, 有超过 1000 个活跃的贡献者.

  1. 2009 年,Spark 诞生于 UC Berkeley(加州大学伯克利分校, CAL) 的 AMP 实验室, 项目采用 Scala 编程语言编写.

  2. 2010 年, Spark 正式对外开源

  3. 2013 年 6 月, 进入 Apache 孵化器

  4. 2014 年, 成为 Apache 的顶级项目

与 Hadoop 的饱受诟病的MapReduce 相比(慢!), Spark 基于内存的运算是 MapReduce 的 100 倍.基于硬盘的运算也要快 10 倍以上.

Spark 实现了高效的 DAG 执行引擎, 可以通过基于内存来高效处理数据流。

大数据之spark学习记录一 IntroSpark出现的时间相对较晚,并且主要功能是用于数据计算,所以其实Spark一直被认为是Hadoop MR计算框架的升级版。

Spark与Hadoop-MR的根本差异是多个作业之间的数据通信问题:Spark多个作业之间数据通信是基于内存的,而Hadoop-MR是基于磁盘的

大数据之spark学习记录一 Intro

经过以上比较,可以看出在绝大多数数据计算场景中,Spark比MapReduce更有优势,但是Spark基于内存是个双刃剑,为Spark带来速度提升的同时也限制了其使用的广泛度,所以在实际的生产环境中,由于内存的限制,Job可能会由于内存资源不够而执行失败,此时,MapReduce其实就是一个更好的选择,所以Spark不能完全替代MR

Spark核心组件

大数据之spark学习记录一 Intro

  • Spark Core:实现了Spark的基本功能,包含任务调度、内存管理、错误恢复、与存储系统交互等模块。Spark Core中还包含了对弹性分布式数据集(Resilient Distributed DataSet,简称RDD)的API定义。

  • Spark SQL:是Spark用来操作结构化数据的程序包。通过Spark SQL,我们可以使用 SQL或者Apache Hive版本的SQL方言(HQL)来查询数据。Spark SQL支持多种数据源,比如Hive表、Parquet以及JSON等。

  • Spark Streaming:是Spark提供的对实时数据进行流式计算的组件。提供了用来操作数据流的API,并且与Spark Core中的 RDD API高度对应。

  • Spark MLlib:提供常见的机器学习(ML)功能的程序库。包括分类、回归、聚类、协同过滤等,还提供了模型评估、数据 导入等额外的支持功能。

  • Spark GraghX: GraghX是Spark面向图计算提供的框架与算法库

  • Cluster Manager集群管理器:Spark 设计为可以高效地在一个计算节点到数千个计算节点之间伸缩计 算。为了实现这样的要求,同时获得最大灵活性,Spark支持在各种集群管理器(Cluster Manager)上运行,包括Hadoop YARN、Apache Mesos,以及Spark自带的一个简易调度 器,叫作独立调度器。