Hadoop与Spark基本原理

  • Hadoop
  • Spark
  • Spark 和 Hadoop区别和联系
  • Hadoop 的 HDFS
  • Hadoop 的 MapReduce
  • Spark 宽依赖和窄依赖
  • Spark RDD运行过程
  • Spark RDD阶段划分

Hadoop

Hadoop是Apache软件基金旗下的一个开源分布式计算平台,为用户提供系统底层细节透明的分布式基础架构,基于Java开发,有很好的跨平台性,并且可以部署在廉价的计算机上。核心是分布式文件系统HDFS 和 MapReduce。
Hadoop是一个能对大量数据进行分布式处理的软件框架,具有以下特性
  • 高可靠性
  • 高效性:能处理PB级数据
  • 高可扩展性
  • 高容错性:数据冗余存储
  • 成本低
  • 支持多种编程语言
Hadoop由以下项目组成
  • Common: 各个项目的功能
  • HDFS: 分布式文件系统,对Google GFS的开源实现,高可用和高性能
  • MapReduce:编程模型,用于大规模数据集的并行运算,将计算过程高度抽象到Map和Reduce两个函数
  • Hive:基于Hadoop的数据仓库工具,可以对Hadoop文件中的数据集进行数据整理、特殊查询、分析存储 Hive安装使用
  • Sqoop:主要用来Hadoop(Hive,HBase,HDFS) 与关系数据库 (Mysql,Oracle,PostgreSQL)之间交互数据
  • Avro:将数据结构和对象转化为便于存储和传输的格式,节约存储空间和网络传输带宽
  • HBase: 基于Hadoop HDFS存储的,高可靠性、高性能、可伸缩、实时读写、分布式的列数据库
  • Zookeeper:高效和可靠的协同工作系统
  • Pig:数据流语言和运行环境
  • Chukwa:开源的用于监控大数据分布式系统的数据收集系统,内置了强大灵活的工具集,用于展示监控分析已收集的数据

Hadoop的安装配置


Spark

Spark 是Apache软件基金旗下的一个开源分布式计算平台。在2014年打破了Hadoop保持的基准排序(Sort Benchmark)纪录,使用206个节点在23分钟的时间里完成了100TB数据的排序,而Hadoop则是使用2000个节点在72分钟的时间里完成同样数据的排序。
由美国加州伯克利大学(UCBerkeley)的AMP(Algorithms, Machines and People)实验室于2009年开发,是基于内存计算的大数据并行计算框架,可用于构建大型的、低延迟的数据分析应用程序。
Spark具有如下几个主要特点:
  • 运行速度快:Spark使用先进的DAG(Directed Acyclic Graph,有向无环图)执行引擎,以支持循环数据流与内存计算,基于内存的执行速度可比Hadoop MapReduce快上百倍,基于磁盘的执行速度也能快十倍;
  • 容易使用:Spark支持使用Scala、Java、Python和R语言进行编程,简洁的API
  • 通用性:Spark提供了完整而强大的技术栈,包括SQL查询、流式计算、机器学习和图算法组件
  • 运行模式多样:Spark可运行于独立的集群模式中,或者运行于Hadoop中,也可运行于Amazon EC2等云环境中,并且可以访问HDFS、Cassandra、HBase、Hive等多种数据源。
Hadoop由以下项目组成
  • Spark Core:Spark的基本功能,如内存计算、任务调度、部署模式、故障恢复、存储管理等。
  • Spark SQL: 能够统一处理关系表和RDD
  • Spark Streaming:Spark Streaming支持高吞吐量、可容错处理的实时流数据处理,其核心思路是将流式计算分解成一系列短小的批处理作业
  • MLLib: MLlib提供了常用机器学习算法的实现,包括聚类、分类、回归、协同过滤等
  • GraphX: GraphX是Spark中用于图计算的API
 RDD:是弹性分布式数据集(Resilient Distributed Dataset)
 DAG:是Directed Acyclic Graph(有向无环图)的简称,反映RDD之间的依赖关系;
 Executor:是运行在工作节点(Worker Node)上的一个进程,负责运行任务,并为应用程序存储数据;
应用:用户编写的Spark应用程序;
任务:运行在Executor上的工作单元;
作业:一个作业包含多个RDD及作用于相应RDD上的各种操作;
阶段:是作业的基本调度单位,一个作业会分为多组任务,每组任务被称为“阶段”,或者也被称为“任务集”。

Spark 和 Hadoop区别和联系

Hadoop缺陷 是其MapReduce计算模型延迟过高,无法胜任实时、快速计算的需求,因而只适用于离线批处理的应用场景。
  • 表达能力有限,只有map和reduce两种
  • 磁盘IO开销大 ,每次执行时都需要从磁盘读取数据,并且在计算完成后需要将中间结果写入到磁盘中
  • 延迟高。
Spark相对Hadoop的优势
  • Spark的计算模式也属于MapReduce,但不局限于Map和Reduce操作
  • Spark提供了内存计算,中间结果直接放到内存中
  • Spark基于DAG的任务调度执行机制,要优于MapReduce的迭代执行机制

Spark 宽依赖和窄依赖

Hadoop与Spark基本原理_第1张图片

Spark RDD运行流程图

Hadoop与Spark基本原理_第2张图片

Spark RDD阶段划分

Hadoop与Spark基本原理_第3张图片

Spark运行流程图

Hadoop与Spark基本原理_第4张图片

你可能感兴趣的:(大数据,Spark,Hadoop,Hive,Sqoop,MapReduce)