共计 2751 个字符,预计需要花费 7 分钟才能阅读完成。
- Spark 是什么?
Spark,是一种通用的大数据计算框架,正如传统大数据技术 Hadoop 的 MapReduce、Hive 引擎,以及 Storm 流式实时计算引擎等。
Spark 蕴含了大数据畛域常见的各种计算框架:比方 Spark Core 用于离线计算,Spark SQL 用于交互式查问,Spark Streaming 用于实时流式计算,Spark MLlib 用于机器学习,Spark GraphX 用于图计算。
Spark 次要用于大数据的计算,而 Hadoop 当前次要用于大数据的存储(比方 HDFS、Hive、HBase 等),以及资源调度(Yarn)。
2.Spark 整体架构
Spark 的特点:
速度快:Spark 基于内存进行计算(当然也有局部计算基于磁盘,比方 shuffle)。
容易上手开发:Spark 的基于 RDD 的计算模型,比 Hadoop 的基于 Map-Reduce 的计算模型要更加易于了解,更加易于上手开发,实现各种简单性能,比方二次排序、topn 等简单操作时,更加便捷。
超强的通用性:Spark 提供了 Spark RDD、Spark SQL、Spark Streaming、Spark MLlib、Spark GraphX 等技术组件,能够一站式地实现大数据畛域的离线批处理、交互式查问、流式计算、机器学习、图计算等常见的工作。
集成 Hadoop:Spark 并不是要成为一个大数据畛域的“独裁者”,一个人霸占大数据畛域所有的“地盘”,而是与 Hadoop 进行了高度的集成,两者能够完满的配合应用。Hadoop 的 HDFS、Hive、HBase 负责存储,YARN 负责资源调度;大数据培训 Spark 简单大数据计算。实际上,Hadoop+Spark 的组合,是一种“double win”的组合。
极高的活跃度:Spark 目前是 Apache 基金会的顶级我的项目,全世界有大量的优良工程师是 Spark 的 committer。并且世界上很多顶级的 IT 公司都在大规模地应用 Spark。
Hadoop 是什么?
Hadoop 是我的项目的总称。次要是由 HDFS 和 MapReduce 组成。HDFS 是 Google File System(GFS)的开源实现。MapReduce 是 Google MapReduce 的开源实现。具体而言,Apache Hadoop 软件库是一个容许应用简略编程模型跨计算机集群解决大型数据汇合的框架,其设计的初衷是将单个服务器扩大成上千个机器组成的一个集群为大数据提供计算服务,其中每个机器都提供本地计算和存储服务。
Hadoop 的外围:
1.HDFS 和 MapReduce 是 Hadoop 的两大外围。通过 HDFS 来实现对分布式贮存的底层反对,达到高速并行读写与大容量的贮存扩大。
2. 通过 MapReduce 实现对分布式工作进行处理程序反对,保障高速分区解决数据。
MapReduce 的计算模型分为 Map 和 Reduce 两个过程。在日常教训里,咱们统计数据须要分类,分类越细、参加统计的人数越多,计算的工夫就越短,这就是 Map 的形象比喻,在大数据计算中,成千盈百台机器同时读取指标文件的各个局部,而后对每个局部的统计量进行计算,Map 就是负责这一工作的;而 Reduce 就是对分类计数之后的共计,是大数据计算的第二阶段。可见,数据的计算过程就是在 HDFS 根底上进行分类汇总。
HDFS 把节点分成两类:NameNode 和 DataNode。NameNode 是惟一的,程序与之通信,而后从 DataNode 上存取文件。这些操作是通明的,与一般的文件系统 API 没有区别。
MapReduce 则是 JobTracker 节点为主,调配工作以及负责和用户程序通信。
Spark 和 Hadoop 的区别和比拟:
1. 原理比拟:
Hadoop 和 Spark 都是并行计算,两者都是用 MR 模型进行计算
Hadoop 一个作业称为一个 Job,Job 外面分为 Map Task 和 Reduce Task 阶段,每个 Task 都在本人的过程中运行,当 Task 完结时,过程也会随之完结;
Spark 用户提交的工作称为 application,一个 application 对应一个 SparkContext,app 中存在多个 job,每触发一次 action 操作就会产生一个 job。这些 job 能够并行或串行执行,每个 job 中有多个 stage,stage 是 shuffle 过程中 DAGScheduler 通过 RDD 之间的依赖关系划分 job 而来的,每个 stage 外面有多个 task,组成 taskset,由 TaskScheduler 散发到各个 executor 中执行;executor 的生命周期是和 app 一样的,即便没有 job 运行也是存在的,所以 task 能够疾速启动读取内存进行计算。
2. 数据的存储和解决:
hadoop:
Hadoop 本质上更多是一个分布式系统基础架构: 它将微小的数据集分派到一个由一般计算机组成的集群中的多个节点进行存储,同时还会索引和跟踪这些数据,大幅度晋升大数据处理和剖析效率。Hadoop 能够独立实现数据的存储和解决工作,因为其除了提供 HDFS 分布式数据存储性能,还提供 MapReduce 数据处理性能。
spark:
Spark 是一个专门用来对那些分布式存储的大数据进行解决的工具,没有提供文件管理系统,本身不会进行数据的存储。它必须和其余的分布式文件系统进行集成能力运作。能够抉择 Hadoop 的 HDFS, 也能够抉择其余平台。
3. 处理速度:
hadoop:
Hadoop 是磁盘级计算,计算时须要在磁盘中读取数据;其采纳的是 MapReduce 的逻辑,把数据进行切片计算用这种形式来解决大量的离线数据.
spark:
Spark,它会在内存中以靠近“实时”的工夫实现所有的数据分析。Spark 的批处理速度比 MapReduce 快近 10 倍,内存中的数据分析速度则快近 100 倍。
4. 恢复性:
hadoop:
Hadoop 将每次解决后的数据写入磁盘中,对应对系统谬误具备天生劣势。
spark:
Spark 的数据对象存储在弹性分布式数据集 (RDD:) 中。“这些数据对象既可放在内存,也能够放在磁盘,所以 RDD 也提供残缺的劫难复原性能。
5. 解决数据:
hadoop:
Hadoop 适宜解决静态数据,对于迭代式流式数据的解决能力差;
spark:
Spark 通过在内存中缓存解决的数据,进步了解决流式数据和迭代式数据的性能;
6. 两头后果:
hadoop:
Hadoop 中两头后果寄存在 HDFS 中,每次 MR 都须要刷写 - 调用,
spark:
而 Spark 两头后果寄存优先寄存在内存中,内存不够再寄存在磁盘中,不放入 HDFS,防止了大量的 IO 和刷写读取操作;
三大分布式计算零碎:
Hadoop 适宜解决离线的动态的大数据;
Spark 适宜解决离线的流式的大数据;
Storm/Flink 适宜解决在线的实时的大数据。