Hadoop、Mapreduce、Spark概念

ref: Hadoop基础知识 Spark基础知识1
https://blog.csdn.net/lbyyy/article/details/53334019
https://blog.csdn.net/leanaoo/article/details/83153889
mapreduce工作流程
Spark基础知识详解
Spark常考面试题

背景

目前按照大数据处理类型来分大致可以分为:批量数据处理、交互式数据查询、实时数据流处理,这三种数据处理方式对应的业务场景也都不一样;
Hadoop的核心为HDFS与MapReduce,HDFS分布式文件系统在Hadoop中是用来存储数据的;MapReduce为Hadoop处理数据的核心
可以这么说Hadoop适用于Map、Reduce存在的任何场景,具体场景比如:WordCount、排序、PageRank、用户行为分析、数据统计等,而这些场景都算是批量数据处理,而Hadoop并不适用于交互式数据查询、实时数据流处理.

Hadoop简介

Hadoop是一个高可靠的(reliable),规模可扩展的(scalable),分布式(distributed computing)的开源软件框架。它使我们能用一种简单的编程模型来处理存储于集群上的大数据集。

hadoop包含的模块:

  • Hadoop common:提供一些通用的功能支持其他hadoop模块。
  • Hadoop Distributed File System:即分布式文件系统,简称HDFS。主要用来做数据存储,并提供对应用数据高吞吐量的访问。

HDFS是谷歌GFS的一个开源实现,具有扩展性,容错性,海量数据存储的特点:

  • 扩展性,主要指很容易就可以在当前的集群上增加一台或者多台机器,扩展计算资源。
  • 容错性,主要指其多副本的存储机制。HDFS将文件切分成固定大小的block(默认是128M),并以多副本形式存储在多台机器上,当其中一台机器发生故障,仍然有其他副本供我们使用。但这个容错并不是绝对的,当所有节点都发生故障,文件就会丢失,不过这样的概率较小。
  • 海量数据存储:多台机器构成了一个集群,相对单机能存储更多量的数据。这也是Hadoop解决的最主要问题之一。
  • 数据切分,多副本,容错等机制都是Hadoop底层已经设计好的,对用户透明,用户不需要关系细节。只需要按照对单机文件的操作方式,就可以进行分布式文件的操作。如文件的上传,查看,下载等。
  • Hadoop Yarn:用于作业调度和集群资源管理的框架。

Yarn的全称是Yet Another Resource Negotiator,负责整个集群资源的管理和调度。例如对每个作业,分配CPU,内存等等,都由yarn来管理。它的特点是扩展性,容错性,多框架资源统一调度。
扩展性和HDFS的扩展性类似,yarn也很容易扩展其计算资源。
容错性,主要是指当某个任务出现异常,yarn会对其进行一定次数的重试。

  • Hadoop MapReduce:基于yarn的,能用来并行处理大数据集的计算框架。

MapReduce

MapReduce框架由Map和Reduce组成。
Map()负责把一个大的block块进行切片并计算。
Reduce() 负责把Map()切片的数据进行汇总、计算。
Hadoop、Mapreduce、Spark概念_第1张图片

MapReduce是一个分布式计算框架。
适用于大规模数据处理场景。
每个job包含Map和Reduce两部分。
优点:易于编程,可扩展性好,高容错性,高吞吐量。
缺点:难以实时计算,不适合流式计算。
每一个map阶段结束后都需要将map的结果写入到hdfs上或则本地磁盘中,每一个reduce阶段都需要从远程拷贝map阶段输出的结果,作为reduce阶段的输入数据,所以磁盘IO开销较大

MapReduce执行过程:map→reduce
MapReduce 的实际处理过程可以分解为 Input、Map、Sort、Combine、Partition、Reduce、Output 等阶段
map部分:Mapper→Combiner→Partitioner
reduce部分:Shuffle and Sort→Reducer

map: (K1,V1) → list (K2,V2)
reduce: (K2,list(V2)) → list (K3,V3)

执行步骤:

Map任务处理

  • 分片:读取HDFS中的文件。在 Input 阶段,框架根据数据的存储位置,把数据分成多个分片,在多个结点上并行处理。
    Map 任务通常运行在数据存储的结点上,也就是说,框架是根据数据分片的位置来启动 Map 任务的,而不是把数据传输到 Map 任务的位置上。这样,计算和数据就在同一个结点上,从而不需要额外的数据传输开销。
  • Map: 每一行解析成一个。每一个键值对调用一次map函数。进行处理,转换为新的输出。

Shuffle: 洗牌、发牌
——(核心机制:数据分区,排序,缓存);每一个处理步骤是分散在各个map task和reduce task节点上完成的。

  • Sort: 对不同分区中的数据进行排序,框架会对这些中间结果按照键进行排序。
  • Partitioner: 对输出的进行分区。在 Partition 阶段,框架将 Combine 后的中间结果按照键的取值范围分为 R 份,分别发给 R 个运行 Reduce 任务的结点,并行执行。分发的原则是,首先必须保证同一个键的所有数据项发送给同一个 Reduce 任务,尽量保证每个 Reduce 任务所处理的数据量基本相同
  • combiner:(可选)Combiner相当于本地化的Reduce操作,把有相同键的中间结果进行合并.

Reduce任务处理

  • 对多个map的输出进行合并、排序。覆盖reduce函数,接收的是分组后的数据,实现自己的业务逻辑。处理后,产生新的输出。
  • 对reduce输出的写到HDFS中。

Spark简介

Spark提供了全面、统一适用与不同场景的大数据处理需求(批量数据处理、交互式数据查询、实时数据流处理、机器学习);Spark不仅性能远胜于Hadoop而却还兼容Hadoop生态系统

Spark中最核心的概念为RDD(Resilient Distributed DataSets)中文为:弹性分布式数据集,RDD为对分布式内存对象的抽象它表示一个被分区不可变且能并行操作的数据集;RDD为可序列化的、可缓存到内存对RDD进行操作过后还可以存到内存中,下次操作直接把内存中RDD作为输入,避免了Hadoop MapReduce的大IO操作

RDD生成
  1、创建操作(Creation Operation):RDD由SparkContext通过内存数据或外部文件系统创建;
  2、转换操作(Transformation Operation):将RDD通过转换操作变为另一个RDD,Spark提供了map、flatMap、filter等一系列的转换操作;
  3、控制操作(Control Operation):将RDD持久化到内存或硬盘当中,如cache将filterRDD缓存到内存;
  4、行动操作:(Action Operation):Spark采用了惰性计算,对于任何行动操作都会产生Spark Job运行产生最终结果;提供了join、groupBy、count等操作,Spark中存在两种操作产生的结果为Scala集合或者标量与RDD保存到文件或数据库;
Hadoop、Mapreduce、Spark概念_第2张图片
Spark RDD:Spark RDD提供了一系列的操作接口,为不变的数据存储结构并存储与内存中使用DAG进行任务规划使更好的处理MapReduce类似的批处理;
Shark/Spark SQL:分布式SQL引擎,兼容Hive性能远比Hive高很多;
Spark Streaming:将数据流分解为一系列批处理作业使用Spark调度框架更好的支持数据流操作,支持的数据输入源有:Kafka、Flume等;
GraphX:兼容Pregel、GraphLab接口为基于Spark的图计算框架;
MLlib:为Spark的机器学习算法库,支持常用的算法有:分类算法、推荐算法、聚类算法等等;

性能卓越、支持多种大数据处理模型、支持多种编程语言接口:Java、Scala、Python,许多大公司如IBM等大力支持推广Spark的发展;

Spark相比于Hadoop的优点

Hadoop、Mapreduce、Spark概念_第3张图片

  • 减少磁盘I/O:HadoopMapReduce的map端将中间输出和结果存储在磁盘中,reduce端又需要从磁盘读写中间结果,势必造成磁盘IO成为瓶颈。Spark允许将map端的中间输出和结果存储在内存中,reduce端在拉取中间结果时避免了大量的磁盘I/O。
  • 增加并行度:由于将中间结果写到磁盘与从磁盘读取中间结果属于不同的环节,Hadoop将它们简单的通过串行执行衔接起来。Spark把不同的环节抽象为Stage,允许多个Stage既可以串行执行,又可以并行执行。
  • 可选的Shuffle排序:HadoopMapReduce在Shuffle之前有着固定的排序操作,而Spark则可以根据不同场景选择在map端排序或者reduce端排序。
  • 灵活的内存管理策略:Spark将内存分为堆上的存储内存、堆外的存储内存、堆上的执行内存、堆外的执行内存4个部分。最大限度的提高资源的利用率,减少对资源的浪费。

你可能感兴趣的:(大数据基础)